PackageTrack
Sign in Get early access

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 2024
2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 27
  1. 0.20.1 12 Nov 2024
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v0.20.0...v0.20.1

    Open source →
    Release notes

    Changed

    • Update canonical repository location
    • Address Clippy lints

    Fixed

    • Track HarfBuzz's signed/unsigned integer types to avoid overflows
    Open source →
  2. 0.20.0 04 Oct 2024
    Release notes

    Changed

    • Bump ttf-parser.

    Fixed

    • Variations handling for fonts with avar table that has multiple axes. Thanks to @maxmelander.
    Open source →
  3. 0.19.0 01 Oct 2024
    Release notes
    • Sync with HarfBuzz 10.0.1. Thanks to @LaurenzV.

    Fixed

    Open source →
  4. 0.18.0 10 Aug 2024
    Release notes

    Added

    • WASM shapers support. Thanks to @asibahi.
    • Some performance improvements. Thanks to @LaurenzV.

    Fixed

    • Multiple bugs. Thanks to @LaurenzV.
    • kerx table parsing in some Apple fonts.
    • Allow hb_buffer_t::serial to overflow/wrap-around instead of panicking.
    Open source →
  5. 0.17.0 02 Jul 2024
    Release notes

    Changed

    • Bump ttf-parser.
    Open source →
  6. 0.16.0 02 Jul 2024
    Release notes
    • Sync with HarfBuzz 9.0.0. Thanks to @LaurenzV.

    Changed

    • Bump ttf-parser.
    • Use core_maths instead of libm. Should simplify the build process.

    Removed

    • no-std-float build flag. Should be handled automatically now.
    Open source →
  7. 0.15.0 29 Jun 2024
    Release notes
    • Sync with HarfBuzz 8.5.0 🎉<br> rustybuzz is finally in-sync with harfbuzz. Thanks to @LaurenzV.

    Changed

    • When building without the std feature one must enable no-std-float feature instead.

    Fixed

    • gvar phantom points handling which fixes some variable fonts shaping.
    Open source →
  8. 0.14.1 12 Jun 2024
    Release notes

    Fixed

    Open source →
  9. 0.14.0 11 May 2024
    Release notes

    Changed

    • Bump ttf-parser.
    • Bump Rust Edition to 2021.
    Open source →
  10. 0.13.0 17 Feb 2024
    Release notes
    • Sync with HarfBuzz 4.1.0. Thanks to @LaurenzV.
    Open source →
  11. 0.12.1 16 Dec 2023
    Release notes

    Added

    Open source →
  12. 0.12.0 02 Dec 2023
    Release notes

    Added

    • Sync with HarfBuzz 2.9.1. Thanks to @bluebear94.
    • UnicodeBuffer::set_pre_context and UnicodeBuffer::set_post_context. Thanks to @bluebear94.
    • shape_with_plan function to allow cached ShapePlans. Thanks to @vorporeal.
    Open source →
  13. 0.11.0 15 Oct 2023
    Release notes

    Added

    Open source →
  14. 0.10.0 10 Sep 2023
    Release notes

    Added

    • Sync with HarfBuzz 2.8.0.
    Open source →
  15. 0.9.0 09 Sep 2023
    Release notes

    Added

    • Sync with HarfBuzz 2.7.4. Thanks to @bluebear94.
    • State machines are autogenerated via ragel instead of manually translating them from C now. Thanks to @notgull.

    Changed

    • Use unicode-properties crate instead of unicode-general-category. Should significantly reduce compilation times. Thanks to @eddyb.

    Fixed

    • Panic in the Universal shaper. Thanks to @notgull.
    Open source →
  16. 0.8.0 12 Jun 2023
    Release notes

    Changed

    • Bump ttf-parser.
    Open source →
  17. 0.7.0 04 Feb 2023
    Release notes

    Added

    Changed

    • Bump ttf-parser.
    • Face::from_face no longer returns Option.
    Open source →
  18. 0.6.0 24 Oct 2022
    Release notes

    Added

    • ttf-parser is reexported now.

    Changed

    • Bump ttf-parser.
    Open source →
  19. 0.5.3 24 Oct 2022 withdrawn
    Release notes

    Changed

    • Revert 0.5.2 because it was a breaking change.
    Open source →
  20. 0.5.2 22 Oct 2022 withdrawn
    Release notes

    Added

    • ttf-parser is reexported now.

    Changed

    • Bump ttf-parser.
    Open source →
  21. 0.5.1 11 Jun 2022
    Release notes

    Added

    • Implement PartialOrd, Ord and Hash for Script.

    Fixed

    • no_std support thanks to @CryZe.
    Open source →
  22. 0.5.0 20 Feb 2022
    Release notes

    Changed

    • GSUB, GPOS, ankr, feat, kern, kerx, morx and trak tables parsing was moved to ttf-parser.
    • rustybuzz no longer do any TrueType parsing. Everything is handled by ttf-parser.

    Fixed

    • Multiple issues in AAT Lookup Table parsing.
    Open source →
  23. 0.4.0 27 Jun 2021
    Release notes

    Added

    • Face::from_face, so you can create rustybuzz::Face directly from ttf_parser::Face. Thanks to @lain-dono
    • no_std support thanks to @CryZe.
    • GlyphInfo::unsafe_to_break thanks to @glowcoil.

    Changed

    • Sync with harfbuzz 2.7.1
    • Rename GlyphInfo.codepoint into GlyphInfo.glyph_id to remove confusion.
    Open source →
  24. 0.3.0 05 Dec 2020
    Release notes

    Ported

    • Everything! 🎉
    • Tables: GSUB, GPOS, GDEF, ankr, feat, kern, kerx, morx, trak.
    • Main shaping logic.
    • hb_shape_plan_t and hb_ot_shape_plan_t
    • hb_ot_map_t
    • hb_ot_complex_shaper_t
    • OpenType layout (GSUB, GPOS).
    • AAT layout.
    • Normalization.
    • Fallback shaper.
    • Kerning.

    Changed

    • Rename Font to Face.

    Most of the changes in this release were made by laurmaedje.

    Open source →
  25. 0.2.0 25 Jul 2020
    Release notes

    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_t
    • hb_script_t
    • hb_feature_t
    • hb_variation_t
    • hb_language_t
    • hb_font_t
    • hb-ot-metrics
    • Unicode functions and tables.
    • Buffer serialization.

    Changed

    • Update to HarfBuzz 2.7.0
    • Rename Font::from_data into Font::from_slice.
    • Font is parsed via ttf-parser first. And if the parsing fails, the Font will not be created. harfbuzz allows 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 hdmx table.
    Open source →
  26. 0.1.1 04 Jul 2020
    Release notes

    Fixed

    • Compilation with an old XCode.
    Open source →
  27. 0.1.0 04 Jul 2020
    Release notes

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