HarfRust is a Rust port of HarfBuzz text shaping engine. See Major changes below for major differences between HarfRust and HarfBuzz.
HarfRust started as a fork of RustyBuzz to explore porting from ttf-parser to
read-fonts to avoid shipping (and maintaining)
multiple implementations of core font parsing for skrifa consumers.
Further context in https://github.com/googlefonts/fontations/issues/956.
Matches HarfBuzz v14.3.1.
https://github.com/googlefonts/oxidize outlines Google Fonts motivations to try to migrate font production and consumption to Rust.
read-fonts.graphite2 library support.graphite font support.The following conformance issues need to be fixed:
HarfRust is less than 25% slower than HarfBuzz on most common fonts. For a comparison see this spreadsheet.
You can run cargo bench to see the performance of HarfRust on your machine.
HarfRust is not a full port of HarfBuzz. HarfBuzz (C++ edition) can roughly be split into 6 parts:
read-fontsskerafontations where appropriate (e.g. int set)The library is completely safe.
There are no unsafe in this library and in most of its dependencies (excluding bytemuck).
cargo semver-checks check-release -p harfrustcargo semver-checks check-release -p hr-shapegit tag release version, e.g. git tag 0.7.1git push origin <tag>cargo publish -p harfrustcargo publish -p hr-shapeFor notes on the backporting process of HarfBuzz code, see docs/backporting.md.
For notes on generating state machine using ragel, see docs/ragel.md.
The following HarfBuzz studies are relevant to HarfRust development:
HarfRust is licensed under the MIT license.
HarfBuzz is licensed under the Old MIT
(top 30 of 35)
Rust
95.9%
C
3.3%
HarfRust is a Rust port of HarfBuzz text shaping engine. See Major changes below for major differences between HarfRust and HarfBuzz.
HarfRust started as a fork of RustyBuzz to explore porting from ttf-parser to
read-fonts to avoid shipping (and maintaining)
multiple implementations of core font parsing for skrifa consumers.
Further context in https://github.com/googlefonts/fontations/issues/956.
Matches HarfBuzz v14.3.1.
https://github.com/googlefonts/oxidize outlines Google Fonts motivations to try to migrate font production and consumption to Rust.
read-fonts.graphite2 library support.graphite font support.The following conformance issues need to be fixed:
HarfRust is less than 25% slower than HarfBuzz on most common fonts. For a comparison see this spreadsheet.
You can run cargo bench to see the performance of HarfRust on your machine.
HarfRust is not a full port of HarfBuzz. HarfBuzz (C++ edition) can roughly be split into 6 parts:
read-fontsskerafontations where appropriate (e.g. int set)The library is completely safe.
There are no unsafe in this library and in most of its dependencies (excluding bytemuck).
cargo semver-checks check-release -p harfrustcargo semver-checks check-release -p hr-shapegit tag release version, e.g. git tag 0.7.1git push origin <tag>cargo publish -p harfrustcargo publish -p hr-shapeFor notes on the backporting process of HarfBuzz code, see docs/backporting.md.
For notes on generating state machine using ragel, see docs/ragel.md.
The following HarfBuzz studies are relevant to HarfRust development:
HarfRust is licensed under the MIT license.
HarfBuzz is licensed under the Old MIT
(top 30 of 35)
Rust
95.9%
C
3.3%