PackageTrack
Sign in Get early access

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 2026
2026
Release Pre-release Withdrawn

Releases

latest 28
  1. 0.13.1 21 Aug 2026
    Release notes

    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_properties to 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_to operations against max_ops (#426, #429).
    • Improve AAT shaping performance by walking morx subtables through packed
      descriptors, resolving subtable kinds from cached parts, and adding a
      state-machine fast path (#428, #430, #431).
    • Skip the post-morx digest update when GPOS is not present (#433).
    • Add a batched nominal-glyph callback to FontFuncs (#434).
    • Update read-fonts to 0.43.2 (#432, #435).
    Open source →
    Release notes

    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_properties to 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_to operations against max_ops (#426, #429).
    • Improve AAT shaping performance by walking morx subtables through packed descriptors, resolving subtable kinds from cached parts, and adding a state-machine fast path (#428, #430, #431).
    • Skip the post-morx digest update when GPOS is not present (#433).
    • Add a batched nominal-glyph callback to FontFuncs (#434).
    • Update read-fonts to 0.43.2 (#432, #435).
    Open source →
  2. 0.13.0 13 Aug 2026
    Release notes

    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_chain offsets
      that could panic on buffers longer than 32767 glyphs (#411).
    • Apply calt to 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 Hrkt script to the OpenType kana script tag.
    • Update read-fonts to 0.43.0 (#418).
    Open source →
    Release notes

    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_chain offsets that could panic on buffers longer than 32767 glyphs (#411).
    • Apply calt to 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 Hrkt script to the OpenType kana script tag.
    • Update read-fonts to 0.43.0 (#418).
    Open source →
  3. 0.12.0 03 Jul 2026
    Release notes

    This release matches HarfBuzz v14.2.0,
    and has an MSRV (minimum supported Rust version) of 1.85.

    • Update read-fonts to 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 trak tracking fractional to match HarfBuzz (#404).
    Open source →
    Release notes

    This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.

    • Update read-fonts to 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 trak tracking fractional to match HarfBuzz (#404).
    Open source →
  4. 0.11.0 29 Jun 2026
    Release notes

    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).
    Open source →
    Release notes

    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).
    Open source →
  5. 0.10.0 20 Jun 2026
    Release notes

    This release matches HarfBuzz v14.2.0,
    and has an MSRV (minimum supported Rust version) of 1.85.

    • Add support for the new read-fonts Font API behind the experimental_font_api
      feature flag in both read-fonts and harfrust, and update read-fonts to 0.40.2.
    • Reject recursive extension lookups.
    • Bound ligature cache construction.
    Open source →
    Release notes

    This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.

    • Add support for the new read-fonts Font API behind the experimental_font_api feature flag in both read-fonts and harfrust, and update read-fonts to 0.40.2.
    • Reject recursive extension lookups.
    • Bound ligature cache construction.
    Open source →
  6. 0.9.0 15 Jun 2026
    Release notes

    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.
    Open source →
    Release notes

    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.
    Open source →
  7. 0.8.4 02 Jun 2026
    Release notes

    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.
    Open source →
    Release notes

    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.
    Open source →
  8. 0.8.3 01 Jun 2026
    Release notes

    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.
    Open source →
    Release notes

    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.
    Open source →
  9. 0.8.2 01 Jun 2026
    Release notes

    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::new constructor that accepts strings or bytes.
    • Re-export GlyphId so that FontFuncs implementors don't need to add extra dependencies to name the type.
    • Reify glyph flags into a GlyphFlags type. Existing methods on GlyphInfo remain for now to avoid a breaking change but will be removed in a future version.
    • Fix AAT in place glyph deletion.
    Open source →
    Release notes

    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::new constructor that accepts strings or bytes.
    • Re-export GlyphId so that FontFuncs implementors don't need to add extra dependencies to name the type.
    • Reify glyph flags into a GlyphFlags type. Existing methods on GlyphInfo remain for now to avoid a breaking change but will be removed in a future version.
    • Fix AAT in place glyph deletion.
    Open source →
  10. 0.8.1 28 May 2026
    Release notes

    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 FontFuncs and ShapeOptions::font_funcs.
    • Added internal scaling support. See ShapeOptions::scale and ShapeOptions::scale_separate.
    Open source →
    Release notes

    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 FontFuncs and ShapeOptions::font_funcs.
    • Added internal scaling support. See ShapeOptions::scale and ShapeOptions::scale_separate.
    Open source →
  11. 0.8.0 26 May 2026
    Release notes

    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 ShapeOptions type as argument to shape calls, preparation for being able to pass font functions. ShapeOptions accepts 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.

    Open source →
  12. 0.7.1 26 May 2026 withdrawn
    Release notes

    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.
    Open source →
  13. 0.7.0 21 May 2026
    Release notes

    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.
    Open source →
  14. 0.6.2 21 May 2026
    Release notes

    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.
    Open source →
  15. 0.6.1 21 May 2026
    Release notes

    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.
    Open source →
  16. 0.6.0 09 Apr 2026
    Release notes

    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-fonts 0.39.0.

    Open source →
  17. 0.5.2 04 Mar 2026
    Release notes

    This release matches HarfBuzz [v13.0.0][harfbuzz-13.0.0], and has an MSRV (minimum supported Rust version) of 1.85.

    Fix hr-shape dependency, so we can publish on crates.io.

    Open source →
  18. 0.5.0 07 Jan 2026
    Release notes

    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.
    Open source →
  19. 0.4.1 09 Dec 2025
    Release notes

    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.
    Open source →
  20. 0.4.0 11 Nov 2025
    Release notes

    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.
    Open source →
  21. 0.3.2 15 Oct 2025
    Release notes

    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.
    Open source →
  22. 0.3.1 12 Sep 2025
    Release notes

    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.
    Open source →
  23. 0.3.0 12 Sep 2025 withdrawn
    Release notes

    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.
    Open source →
  24. 0.2.1 12 Sep 2025
    Release notes

    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.
    Open source →
  25. 0.2.0 29 Aug 2025
    Release notes

    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.
    Open source →
  26. 0.1.2 20 Aug 2025
    Release notes

    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.
    Open source →
  27. 0.1.1 11 Aug 2025
    Release notes

    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.
    Open source →
  28. 0.1.0 10 Jun 2025
    Release notes

    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

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive