/HardFuzz

yet another HarfBuzz C# binding

Primary LanguageC#GNU General Public License v3.0GPL-3.0

HardFuzz

Build status Unit test status NuGet

Yet another HarfBuzz C# binding. Intended to be a more complete alternative to SharpFont.HarfBuzz and HarfBuzzSharp.

.NET Standard 2.0. Not really tested on environment other than .NET Core 3.1 plus Windows 10 x64 though.

Native binaries not included; HarfBuzz provides official builds for 32-bit Windows, while you can get my MinGW 64-bit build here (don't forget the other DLLs!)

WIP.

Target HarfBuzz version

2.6.4

What's implemented now

  • hb-common
    • hb_direction_t
    • hb_feature_t
    • hb_language_t
    • hb_script_t
    • hb_tag_t
  • hb-unicode
    • hb_unicode_funcs_get_default()
    • hb_unicode_funcs_destroy()
  • hb-buffer (most of it's end-user-related part)
  • hb-blob (immutable only)
  • hb-font
  • hb-shape
    • hb_font_destroy()
  • hb-ft
    • hb_ft_font_create()

Known issue(s)

  • hb_shape_list_shapers() is bound using a dirty approach and has potential memory corruption risk

Documentation

None at this point. Only some basic XML docs are present. Please refer to HarfBuzz Manual.

Usage

Please refer to the unit test.

To-do

  • Unicode functions
  • Maybe other features if someone asked me
  • Complete XML docs (<param> tags etc.)
  • Unit tests
  • Handle unmanaged errors more properly

License

The library itself is LGPL. HarfBuzz is under its own license. Other libraries/files' (if any) license information can be found in their own respective NuGet packages, in the directory containing them, etc.