harfrust
A complete HarfBuzz shaping algorithm port to Rust.
0.13.1
6.3M downloads/mo
#4036 most downloaded on crates.io
harfbuzz/harfrust
What this package is like to depend on
Last release 2 days ago
21 Aug 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 26 of 26 stable releases
2 versions withdrawn
withdrawn after publishing
1 years old
28 releases · first in 2025
25 releases in the last 12 months
see the full history below
Release timeline
28 releases · Jun 2025 to Aug 2026Releases
latest 28-
0.13.121 Aug 2026Release notes
Open source →This release matches HarfBuzz v14.3.1, and has an MSRV (minimum supported Rust version) of 1.85.
- Saturate shaping and positioning math across GPOS, kerx, trak, fallback,
shaping, metrics, and font scaling paths to avoid overflow and better match
HarfBuzz behavior (#420). - Cache GDEF mark filtering sets in bitmaps (#421).
- Lock
icu_propertiesto 2.2.0 (#422). - Optimize hot loops in contextual and layout matching by probing rules before
parsing, hoisting invariants, moving recursion state instead of cloning, and
replacing per-element copies with block copies (#423, #424, #425). - Optimize buffer internals by copying small counts inline and charging
move_tooperations againstmax_ops(#426, #429). - Improve AAT shaping performance by walking
morxsubtables through packed
descriptors, resolving subtable kinds from cached parts, and adding a
state-machine fast path (#428, #430, #431). - Skip the post-
morxdigest update when GPOS is not present (#433). - Add a batched nominal-glyph callback to
FontFuncs(#434). - Update
read-fontsto 0.43.2 (#432, #435).
Release notes
Open source →This release matches HarfBuzz v14.3.1, and has an MSRV (minimum supported Rust version) of 1.85.
- Saturate shaping and positioning math across GPOS, kerx, trak, fallback, shaping, metrics, and font scaling paths to avoid overflow and better match HarfBuzz behavior (#420).
- Cache GDEF mark filtering sets in bitmaps (#421).
- Lock
icu_propertiesto 2.2.0 (#422). - Optimize hot loops in contextual and layout matching by probing rules before parsing, hoisting invariants, moving recursion state instead of cloning, and replacing per-element copies with block copies (#423, #424, #425).
- Optimize buffer internals by copying small counts inline and charging
move_tooperations againstmax_ops(#426, #429). - Improve AAT shaping performance by walking
morxsubtables through packed descriptors, resolving subtable kinds from cached parts, and adding a state-machine fast path (#428, #430, #431). - Skip the post-
morxdigest update when GPOS is not present (#433). - Add a batched nominal-glyph callback to
FontFuncs(#434). - Update
read-fontsto 0.43.2 (#432, #435).
- Saturate shaping and positioning math across GPOS, kerx, trak, fallback,
-
0.13.013 Aug 2026Release notes
Open source →This release matches HarfBuzz v14.3.1, and has an MSRV (minimum supported Rust version) of 1.85.
- Guard GPOS cursive attachment against out-of-bounds
attach_chainoffsets
that could panic on buffers longer than 32767 glyphs (#411). - Apply
caltto non-Hangul characters in Hangul runs while continuing to
suppress it for Jamo. - Preserve the correct component assignments when MultipleSubst output is
ligated and positioned with mark attachment lookups. - Apply cross-direction mark attachment offsets immediately.
- Bound syllables to 64 glyphs during shaping.
- Map the collective ISO 15924
Hrktscript to the OpenTypekanascript tag. - Update
read-fontsto 0.43.0 (#418).
Release notes
Open source →This release matches HarfBuzz v14.3.1, and has an MSRV (minimum supported Rust version) of 1.85.
- Guard GPOS cursive attachment against out-of-bounds
attach_chainoffsets that could panic on buffers longer than 32767 glyphs (#411). - Apply
caltto non-Hangul characters in Hangul runs while continuing to suppress it for Jamo. - Preserve the correct component assignments when MultipleSubst output is ligated and positioned with mark attachment lookups.
- Apply cross-direction mark attachment offsets immediately.
- Bound syllables to 64 glyphs during shaping.
- Map the collective ISO 15924
Hrktscript to the OpenTypekanascript tag. - Update
read-fontsto 0.43.0 (#418).
- Guard GPOS cursive attachment against out-of-bounds
-
0.12.003 Jul 2026Release notes
Open source →This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.- Update
read-fontsto 0.41.0 (#403). - Saturate AAT kerning position accumulation to avoid overflow (#400).
- Regenerate the Unicode data tables with the latest
packtab(#401). - Keep GPOS variation-index deltas fractional to match HarfBuzz, avoiding
sub-font-unit advance and placement differences on variable fonts (#403). - Keep AAT
traktracking fractional to match HarfBuzz (#404).
Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Update
read-fontsto 0.41.0 (#403). - Saturate AAT kerning position accumulation to avoid overflow (#400).
- Regenerate the Unicode data tables with the latest
packtab(#401). - Keep GPOS variation-index deltas fractional to match HarfBuzz, avoiding sub-font-unit advance and placement differences on variable fonts (#403).
- Keep AAT
traktracking fractional to match HarfBuzz (#404).
- Update
-
0.11.029 Jun 2026Release notes
Open source →This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Parse contextual lookup rules in a single pass in the apply path for improved performance (#383).
- Fix integer overflow in fallback positioning shaper (#395).
- Fix overflow panic in skipping_iterator_t when shaping extremely long lines (#397).
- Fix custom nominal glyph cmap caching (#399).
-
0.10.020 Jun 2026Release notes
Open source →This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.- Add support for the new
read-fontsFont API behind theexperimental_font_api
feature flag in bothread-fontsandharfrust, and updateread-fontsto 0.40.2. - Reject recursive extension lookups.
- Bound ligature cache construction.
Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Add support for the new
read-fontsFont API behind theexperimental_font_apifeature flag in bothread-fontsandharfrust, and updateread-fontsto 0.40.2. - Reject recursive extension lookups.
- Bound ligature cache construction.
- Add support for the new
-
0.9.015 Jun 2026Release notes
Open source →This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.- Fix GPOS attachment offset overflow #384
- Require read-fonts 0.40.
Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Fix GPOS attachment offset overflow #384
- Require read-fonts 0.40.
-
0.8.402 Jun 2026Release notes
Open source →This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.- Use bytes instead of str storage for language tag table.
Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Use bytes instead of str storage for language tag table.
-
0.8.301 Jun 2026Release notes
Open source →This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.- Add method for appending bulk glyph infos to UnicodeBuffer.
Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Add method for appending bulk glyph infos to UnicodeBuffer.
-
0.8.201 Jun 2026Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Allow setting pre- and post-context from codepoints.
- Added
Language::newconstructor that accepts strings or bytes. - Re-export
GlyphIdso thatFontFuncsimplementors don't need to add extra dependencies to name the type. - Reify glyph flags into a
GlyphFlagstype. Existing methods onGlyphInforemain for now to avoid a breaking change but will be removed in a future version. - Fix AAT in place glyph deletion.
Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Allow setting pre- and post-context from codepoints.
- Added
Language::newconstructor that accepts strings or bytes. - Re-export
GlyphIdso thatFontFuncsimplementors don't need to add extra dependencies to name the type. - Reify glyph flags into a
GlyphFlagstype. Existing methods onGlyphInforemain for now to avoid a breaking change but will be removed in a future version. - Fix AAT in place glyph deletion.
-
0.8.128 May 2026Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Added support for font function overrides to enable injection of hinted metrics and control over character mapping. See
FontFuncsandShapeOptions::font_funcs. - Added internal scaling support. See
ShapeOptions::scaleandShapeOptions::scale_separate.
Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Added support for font function overrides to enable injection of hinted metrics and control
over character mapping. See
FontFuncsandShapeOptions::font_funcs. - Added internal scaling support. See
ShapeOptions::scaleandShapeOptions::scale_separate.
- Added support for font function overrides to enable injection of hinted metrics and control over character mapping. See
-
0.8.026 May 2026Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Refactor ot shape context functions into methods.
- Added
ShapeOptionstype as argument to shape calls, preparation for being able to pass font functions.ShapeOptionsaccepts shape plan, point size, features.shape_with_plan()function removed in favor of new builder-style API. - Document release process to avoid missing LICENSE files.
Release 0.7.1 was released prematurely and yanked from crates.io.
-
0.7.126 May 2026 withdrawnRelease notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Document release process to avoid missing LICENSE files.
-
0.7.021 May 2026Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Make core_maths dependency optional and add new libm feature to control it. One of libm or std features is now required to build harfrust, matching the behavior of the fontations crates. This is a breaking change.
-
0.6.221 May 2026Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Do not hardcode requirement on libm for read-fonts dependency. Libm is required for read-fonts only in nostd environments.
-
0.6.121 May 2026Release notes
Open source →This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
- Blocklist broken fonts in GDEF. This ports feature from HarfBuzz that was missing before.
- Add LICENSE file symlink to each crate.
-
0.6.009 Apr 2026Release notes
Open source →This release matches HarfBuzz [v14.1.0][harfbuzz-14.1.0], and has an MSRV (minimum supported Rust version) of 1.85.
Roll to
read-fonts0.39.0. -
0.5.204 Mar 2026Release notes
Open source →This release matches HarfBuzz [v13.0.0][harfbuzz-13.0.0], and has an MSRV (minimum supported Rust version) of 1.85.
Fix
hr-shapedependency, so we can publish on crates.io. -
0.5.007 Jan 2026Release notes
Open source →This release matches HarfBuzz [v12.3.0][harfbuzz-12.3.0], and has an MSRV (minimum supported Rust version) of 1.85.
- Update to read-fonts 0.37.0 (and bump MSRV to 1.85).
- Various performance improvements.
-
0.4.109 Dec 2025Release notes
Open source →This release matches HarfBuzz [v12.2.0][harfbuzz-12.2.0], and has an MSRV (minimum supported Rust version) of 1.82.
- Make Script::from_iso15924_tag const.
- Avoid panic when saving syllable indices.
-
0.4.011 Nov 2025Release notes
Open source →This release matches HarfBuzz [v12.2.0][harfbuzz-12.2.0], and has an MSRV (minimum supported Rust version) of 1.82.
- Enable more HarfBuzz tests.
- Fix bug from HarfBust puzzle.
- Update to read-fonts 0.36.0.
-
0.3.215 Oct 2025Release notes
Open source →This release matches HarfBuzz [v12.1.0][harfbuzz-12.1.0], and has an MSRV (minimum supported Rust version) of 1.82.
- Fix "would apply" logic for chained sequence context format 3. This bug was preventing accurate classification of characters in Indic syllables for some fonts.
- Various optimizations.
-
0.3.112 Sep 2025Release notes
Open source →This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.82.
- Actually bump MSRV from 1.80 to 1.82.
-
0.3.012 Sep 2025 withdrawnRelease notes
Open source →This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.82.
- Update to read-fonts 0.35.0.
- Bump MSRV from 1.80 to 1.82.
-
0.2.112 Sep 2025Release notes
Open source →This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.80.
- Update to Unicode 17.0.
- Fix panic when processing chained sequence context format 3.
- Add accessors for script, language and direction to
ShapePlan. - Various optimizations.
-
0.2.029 Aug 2025Release notes
Open source →This release matches HarfBuzz [v11.4.4][harfbuzz-11.4.4], and has an MSRV (minimum supported Rust version) of 1.80.
- Major optimizations to speed up AAT shaping.
-
0.1.220 Aug 2025Release notes
Open source →This release matches HarfBuzz [v11.3.3][harfbuzz-11.3.3], and has an MSRV (minimum supported Rust version) of 1.80.
- Major optimizations to speed up shaping.
- Initial support for shape plan caching in the form of
ShapePlanKey.
-
0.1.111 Aug 2025Release notes
Open source →This release matches HarfBuzz [v11.3.3][harfbuzz-11.3.3], and has an MSRV (minimum supported Rust version) of 1.75.
- Major optimizations to speed up shaping.
-
0.1.010 Jun 2025Release notes
Open source →This release matches HarfBuzz v11.2.1, and has an MSRV (minimum supported Rust version) of 1.75.
- Initial Release of HarfRuzz.
HarfRust is a fork of RustyBuzz. See their changelog for details of prior releases.
<!-- The last release of RustyBuzz before 0.1.0. --> [0.1.0]: https://github.com/harfbuzz/harfrust/compare/8c52723ff75e91a33ae36e527baed871097e64bf...0.1.0