Understand rustybuzz limitations and behavior
mainWhile rustybuzz matches HarfBuzz v10.1.0 and passes most shaping tests, it is not a 1:1 faithful port and has several key differences:
Core Differences
- Shaping Only: Unlike HarfBuzz,
rustybuzzonly provides shaping. It does not include subsetting, Unicode routines, or glue for system libraries (like FreeType, CoreText, or DirectWrite). - Font Parsing: TrueType parsing is handled by the
ttf-parsercrate rather than the HarfBuzz internal parser. - No Font Size Property: Shaping always uses
UnitsPerEm. You must scale the resulting glyph positions and advances manually to match your desired font size. - Error Handling: Malformed fonts will cause an error in
rustybuzz, whereas HarfBuzz typically uses a fallback/dummy shaper.
Unsupported Features
- Subsetting
morttables (deprecated by Apple)- Arabic fallback shaper
avar2and other parts of the boring-expansion-spec