NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3251 most downloaded on crates.io
A complete HarfBuzz shaping algorithm port to Rust.
Last release 4 days ago
04 Oct 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 29 of 29 stable releases
2 versions withdrawn
withdrawn after publishing
1 years old
31 releases · first in 2025
One column per month.
This release matches HarfBuzz v14.5.1 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.5.1, and has an MSRV (minimum supported Rust version) of 1.85.
UnicodeBuffer and GlyphBuffer with one Buffer that holds inputContentTypeFontRef entry point with Font from read-fonts, re-exportedharfrust::Font. Create a ShaperFont from a Font (or one of itsShaper, ShaperBuilder, ShaperInstance, and ShaperDataShaperFont.FontFuncs on ShaperFont instead ofShapeOptions.harfrust::shape(&shaper_font, &mut buffer, options).Result<(), ShapeError> for invalid shaping state or properties,Buffer::allocation_successful() separately for allocation or shaping-limitReplace UnicodeBuffer construction and the returned GlyphBuffer with a
single mutable Buffer. For example, with font_data containing font bytes:
use harfrust::{shape, Buffer, Font, ShapeOptions, ShaperFont};
let font = Font::new(font_data, 0).expect("invalid font");
let shaper_font = ShaperFont::new(&font);
let mut buffer = Buffer::new();
buffer.push_str("Hello");
buffer.guess_segment_properties();
shape(&shaper_font, &mut buffer, ShapeOptions::new()).expect("shaping failed");
let glyphs = buffer.glyph_infos();
let positions = buffer.glyph_positions();Use buffer.clear() to reuse its allocation for another run, then push new
text. Call guess_segment_properties() or set the direction and other segment
properties explicitly before shaping.
Use ShaperFont::set_scale or set_scale_separate for scaling, and
ShaperFont::set_font_funcs for custom font callbacks. ShaperFont borrows the
Font and any supplied callbacks, so it is intended as a short-lived shaping
view; keep the Font and callbacks alive and construct a ShaperFont as needed.
ShapeOptions holds per-call features, an optional plan, and point size.
read-fonts to 0.45.0 and use its current font model API.x-hbot-x-hbsc- private-use subtags, such as x-hbot-4d4f4e54 for MONT.harfrust::unicode module.Decomposed enum.harfrust_capi crate, a C API mirroring the shaping half ofhr_ prefix in place of hb_.hr-shape runs and contextual lookup matching.attach_chain thatwould_apply for format 3 (coverage-based) contextual lookups, whichThis release matches HarfBuzz v14.3.1 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.3.1, and has an MSRV (minimum supported Rust version) of 1.85.
mort tables, includingkerx tables (#452).kern state tables that declare more thanno_std builds (#454, #456).read-fonts to 0.43.3.This release matches HarfBuzz v14.3.1 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.3.1, and has an MSRV (minimum supported Rust version) of 1.85.
kern tables (#439).This release matches HarfBuzz v14.3.1 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.3.1, and has an MSRV (minimum supported Rust version) of 1.85.
icu_properties to 2.2.0 (#422).move_to operations against max_ops (#426, #429).morx subtables through packedmorx digest update when GPOS is not present (#433).FontFuncs (#434).read-fonts to 0.43.2 (#432, #435).This release matches HarfBuzz v14.3.1 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.3.1, and has an MSRV (minimum supported Rust version) of 1.85.
attach_chain offsetscalt to non-Hangul characters in Hangul runs while continuing toHrkt script to the OpenType kana script tag.read-fonts to 0.43.0 (#418).This release matches HarfBuzz v14.2.0 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.
read-fonts to 0.41.0 (#403).packtab (#401).trak tracking fractional to match HarfBuzz (#404).This release matches HarfBuzz v14.2.0 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.
read-fonts Font API behind the experimental_font_apiread-fonts and harfrust, and update read-fonts to 0.40.2.This release matches HarfBuzz v14.2.0 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0,
and has an MSRV (minimum supported Rust version) of 1.85.
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 vers…
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
Language::new constructor that accepts strings or bytes.GlyphId so that FontFuncs implementors don't need to add extra dependencies to name the type.GlyphFlags type. Existing methods on GlyphInfo remain for now to avoid a breaking change but will be removed in a future version.This release matches HarfBuzz v14.2.0 , and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
FontFuncs and ShapeOptions::font_funcs.ShapeOptions::scale and ShapeOptions::scale_separate.This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
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.Release 0.7.1 was released prematurely and yanked from crates.io.
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
One of libm or std features is now required to build harfrust, matching the behavior of the fontations crates. This is a breaking change.
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz v14.2.0, and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz [v14.1.0][harfbuzz-14.1.0], and has an MSRV (minimum supported Rust version) of 1.85.
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.
This release matches HarfBuzz [v13.0.0][harfbuzz-13.0.0], and has an MSRV (minimum supported Rust version) of 1.85.
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.
This release matches HarfBuzz [v12.3.0][harfbuzz-12.3.0], and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz [v12.3.0][harfbuzz-12.3.0], and has an MSRV (minimum supported Rust version) of 1.85.
This release matches HarfBuzz [v12.2.0][harfbuzz-12.2.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v12.2.0][harfbuzz-12.2.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v12.2.0][harfbuzz-12.2.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v12.2.0][harfbuzz-12.2.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v12.1.0][harfbuzz-12.1.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v12.1.0][harfbuzz-12.1.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.82.
This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.80.
This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.80.
ShapePlan.This release matches HarfBuzz [v11.4.4][harfbuzz-11.4.4], and has an MSRV (minimum supported Rust version) of 1.80.
This release matches HarfBuzz [v11.4.4][harfbuzz-11.4.4], and has an MSRV (minimum supported Rust version) of 1.80.
This release matches HarfBuzz [v11.3.3][harfbuzz-11.3.3], and has an MSRV (minimum supported Rust version) of 1.80.
This release matches HarfBuzz [v11.3.3][harfbuzz-11.3.3], and has an MSRV (minimum supported Rust version) of 1.80.
ShapePlanKey.This release matches HarfBuzz [v11.3.3][harfbuzz-11.3.3], and has an MSRV (minimum supported Rust version) of 1.75.
This release matches HarfBuzz [v11.3.3][harfbuzz-11.3.3], and has an MSRV (minimum supported Rust version) of 1.75.
This release matches HarfBuzz [v11.2.1][harfbuzz-11.2.1], and has an MSRV (minimum supported Rust version) of 1.75.
This release matches HarfBuzz v11.2.1, and has an MSRV (minimum supported Rust version) of 1.75.
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
Your coding agent can read these notes before it upgrades. Set up the MCP server →