rustybuzz
A complete harfbuzz shaping algorithm port to Rust.
0.20.1
27M downloads/mo
#1783 most downloaded on crates.io
harfbuzz/rustybuzz
What this package is like to depend on
Last release 2 years ago
no release in 18 months
Ships fairly regularly
a new release about every 6 weeks
Nearly every release is documented
notes for 25 of 25 stable releases
2 versions withdrawn
withdrawn after publishing
6 years old
27 releases · first in 2020
0 releases in the last 12 months
see the full history below
Release timeline
27 releases · Jul 2020 to Nov 2024Releases
latest 27-
0.20.112 Nov 2024Release notes
Open source →What's Changed
- Update repository URL by @khaledhosny in #139
- Clippy fixes by @asibahi in #140
- Avoid integer overflows with correct signing (tracking HB) and assertions by @alerque in #146
New Contributors
- @khaledhosny made their first contribution in #139
- @simoncozens made their first contribution in #143
- @alerque made their first contribution in #146
Full Changelog: v0.20.0...v0.20.1
Release notes
Open source →Changed
- Update canonical repository location
- Address Clippy lints
Fixed
- Track HarfBuzz's signed/unsigned integer types to avoid overflows
-
0.20.004 Oct 2024Release notes
Open source →Changed
- Bump
ttf-parser.
Fixed
- Variations handling for fonts with
avartable that has multiple axes. Thanks to @maxmelander.
- Bump
-
0.19.001 Oct 2024Release notes
Open source → -
0.18.010 Aug 2024Release notes
Open source →Added
Fixed
- Multiple bugs. Thanks to @LaurenzV.
kerxtable parsing in some Apple fonts.- Allow
hb_buffer_t::serialto overflow/wrap-around instead of panicking.
-
0.17.002 Jul 2024 -
0.16.002 Jul 2024Release notes
Open source →- Sync with HarfBuzz 9.0.0. Thanks to @LaurenzV.
Changed
- Bump
ttf-parser. - Use
core_mathsinstead oflibm. Should simplify the build process.
Removed
no-std-floatbuild flag. Should be handled automatically now.
-
0.15.029 Jun 2024Release notes
Open source →- Sync with HarfBuzz 8.5.0 🎉<br>
rustybuzzis finally in-sync withharfbuzz. Thanks to @LaurenzV.
Changed
- When building without the
stdfeature one must enableno-std-floatfeature instead.
Fixed
gvarphantom points handling which fixes some variable fonts shaping.
- Sync with HarfBuzz 8.5.0 🎉<br>
-
0.14.112 Jun 2024 -
0.14.011 May 2024 -
0.13.017 Feb 2024 -
0.12.116 Dec 2023Release notes
Open source →Added
- Derive
HashforFeature. Thanks to @laurmaedje. ShapePlanisSendandSyncnow. Thanks to @laurmaedje.
- Derive
-
0.12.002 Dec 2023Release notes
Open source →Added
- Sync with HarfBuzz 2.9.1. Thanks to @bluebear94.
UnicodeBuffer::set_pre_contextandUnicodeBuffer::set_post_context. Thanks to @bluebear94.shape_with_planfunction to allow cachedShapePlans. Thanks to @vorporeal.
-
0.11.015 Oct 2023 -
0.10.010 Sep 2023 -
0.9.009 Sep 2023Release notes
Open source →Added
- Sync with HarfBuzz 2.7.4. Thanks to @bluebear94.
- State machines are autogenerated via
ragelinstead of manually translating them from C now. Thanks to @notgull.
Changed
- Use
unicode-propertiescrate instead ofunicode-general-category. Should significantly reduce compilation times. Thanks to @eddyb.
Fixed
- Panic in the Universal shaper. Thanks to @notgull.
-
0.8.012 Jun 2023 -
0.7.004 Feb 2023Release notes
Open source →Added
UnicodeBuffer::addthanks to @bluebear94.
Changed
- Bump
ttf-parser. Face::from_faceno longer returnsOption.
-
0.6.024 Oct 2022 -
0.5.324 Oct 2022 withdrawn -
0.5.222 Oct 2022 withdrawn -
0.5.111 Jun 2022Release notes
Open source → -
0.5.020 Feb 2022Release notes
Open source →Changed
GSUB,GPOS,ankr,feat,kern,kerx,morxandtraktables parsing was moved tottf-parser.rustybuzzno longer do any TrueType parsing. Everything is handled byttf-parser.
Fixed
- Multiple issues in AAT Lookup Table parsing.
-
0.4.027 Jun 2021Release notes
Open source →Added
Face::from_face, so you can createrustybuzz::Facedirectly fromttf_parser::Face. Thanks to @lain-donono_stdsupport thanks to @CryZe.GlyphInfo::unsafe_to_breakthanks to @glowcoil.
Changed
- Sync with harfbuzz 2.7.1
- Rename
GlyphInfo.codepointintoGlyphInfo.glyph_idto remove confusion.
-
0.3.005 Dec 2020Release notes
Open source →Ported
- Everything! 🎉
- Tables:
GSUB,GPOS,GDEF,ankr,feat,kern,kerx,morx,trak. - Main shaping logic.
hb_shape_plan_tandhb_ot_shape_plan_thb_ot_map_thb_ot_complex_shaper_t- OpenType layout (GSUB, GPOS).
- AAT layout.
- Normalization.
- Fallback shaper.
- Kerning.
Changed
- Rename
FonttoFace.
Most of the changes in this release were made by laurmaedje.
-
0.2.025 Jul 2020Release notes
Open source →Ported
- All complex shapers.
- Tables:
CBDT,CFF,CFF2,HVAR,MVAR,OS/2,SVG,VORG,VVAR,avar,cmap,fvar,glyf,gvar,hhea,hmtx,post,sbix,vhea,vmtx. hb_buffer_thb_script_thb_feature_thb_variation_thb_language_thb_font_thb-ot-metrics- Unicode functions and tables.
- Buffer serialization.
Changed
- Update to HarfBuzz 2.7.0
- Rename
Font::from_dataintoFont::from_slice. - Font is parsed via
ttf-parserfirst. And if the parsing fails, theFontwill not be created.harfbuzzallows malformed fonts.
Removed
hb_font_funcs_t. Only the embedded TrueType implementation is used.hb_unicode_funcs_t. Only the embedded Unicode implementation is used.Font::set_scale/hb_font_set_scale/--font-size. Shaping is always in font units now. This simplifies the code quite a lot.- Shaping plan caching.
- Fallback shaper.
- Unused
hdmxtable.
-
0.1.104 Jul 2020 -
0.1.004 Jul 2020Release notes
Open source →At this point, this is just a simple Rust bindings to a stripped down harfbuzz.
Added
- An absolute minimum Rust API.
- harfbuzz's shaping test suite had been ported to Rust.
Changed
- harfbuzz source code was reformatted using clang-format.
Removed
- Subsetting. This is probably a bit controversial, but I want to port only the shaper for now. This is also removes around 7000 LOC.
- Arabic fallback shaper. Since it requires subsetting.
- Unused TrueType tables: BASE, COLR, CPAL, JSTF, MATH, STAT, bsln, fdsc, gasp, just, lcar, ltag, meta, name, opbd.
- All external dependencies: coretext, directwrite, freetype, gdi, glib, gobject, graphite, icu, uniscribe. Embedded harfbuzz relies only on internal TrueType implementation.
- Most of the non-shaping harfbuzz API.