rustybuzz
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.
Embedded harfbuzz
version: 2.6.4
Changes
- Subsetting is out of scope and removed.
- Malformed font is an error now.
harfbuzz
accepts malformed fonts, but doesn't do shaping in this case. harfbuzz
configured 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.
License
rustybuzz
is licensed under the MIT.
harfbuzz
is licensed under the Old MIT