rustybuzz is an attempt to incrementally port harfbuzz to Rust. But while
harfbuzz does a lot of things (shaping, subsetting, font querying, etc.),
rustybuzz is strictly an OpenType shaper.
You can use it already, since we are simply linking the
harfbuzz statically. And we're testing
rustybuzz against the
harfbuzz's test suite.
harfbuzz version: 2.6.4
- Subsetting is out of scope and removed.
- Malformed font is an error now.
harfbuzzaccepts malformed fonts, but doesn't do shaping in this case.
harfbuzzconfigured to not depend on system libraries, like glib, coretext, freetype, icu. So it relies only on internal implementations.
Notes about the port
Thanks to Cargo,
rustybuzz is pretty modular, unlike
harfbuzz, which is basically a monolith.
harfbuzz itself can be roughly split into those modules: shaping, subsetting, font parsing, Unicode functions, containers and utilities.
rustybuzz implements only the shaping. Font parsing is handled by the ttf-parser, which is not based on
harfbuzz and has its own architecture. Unicode functions also handled by external crates. And most of the containers and utilities were already implemented in the Rust std.
rustybuzz is licensed under the MIT.
harfbuzz is licensed under the Old MIT