All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.20.1 - 2024-10-12
- Update canonical repository location
- Address Clippy lints
- Track HarfBuzz's signed/unsigned integer types to avoid overflows
0.20.0 - 2024-10-04
- Bump
ttf-parser
.
- Variations handling for fonts with
avar
table that has multiple axes. Thanks to @maxmelander.
0.19.0 - 2024-10-01
- Sync with HarfBuzz 10.0.1. Thanks to @LaurenzV.
- RTL text handling. Thanks to @LaurenzV.
0.18.0 - 2024-08-10
- Multiple bugs. Thanks to @LaurenzV.
kerx
table parsing in some Apple fonts.- Allow
hb_buffer_t::serial
to overflow/wrap-around instead of panicking.
0.17.0 - 2024-07-02
- Bump
ttf-parser
.
0.16.0 - 2024-07-02
- Sync with HarfBuzz 9.0.0. Thanks to @LaurenzV.
- Bump
ttf-parser
. - Use
core_maths
instead oflibm
. Should simplify the build process.
no-std-float
build flag. Should be handled automatically now.
0.15.0 - 2024-06-29
- Sync with HarfBuzz 8.5.0 🎉
rustybuzz
is finally in-sync withharfbuzz
. Thanks to @LaurenzV.
- When building without the
std
feature one must enableno-std-float
feature instead.
gvar
phantom points handling which fixes some variable fonts shaping.
0.14.1 - 2024-06-12
no_std
build. Thanks to @jackpot51
0.14.0 - 2024-05-10
- Bump
ttf-parser
. - Bump Rust Edition to 2021.
0.13.0 - 2024-02-18
- Sync with HarfBuzz 4.1.0. Thanks to @LaurenzV.
0.12.1 - 2023-12-16
- Derive
Hash
forFeature
. Thanks to @laurmaedje. ShapePlan
isSend
andSync
now. Thanks to @laurmaedje.
0.12.0 - 2023-11-29
- Sync with HarfBuzz 2.9.1. Thanks to @bluebear94.
UnicodeBuffer::set_pre_context
andUnicodeBuffer::set_post_context
. Thanks to @bluebear94.shape_with_plan
function to allow cachedShapePlan
s. Thanks to @vorporeal.
0.11.0 - 2023-10-15
- Sync with HarfBuzz 2.9.0. Thanks to @bluebear94.
0.10.0 - 2023-09-10
- Sync with HarfBuzz 2.8.0.
0.9.0 - 2023-09-09
- 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.
- Use
unicode-properties
crate instead ofunicode-general-category
. Should significantly reduce compilation times. Thanks to @eddyb.
- Panic in the Universal shaper. Thanks to @notgull.
0.8.0 - 2023-06-12
- Bump
ttf-parser
.
0.7.0 - 2023-02-04
UnicodeBuffer::add
thanks to @bluebear94.
- Bump
ttf-parser
. Face::from_face
no longer returnsOption
.
0.6.0 - 2022-10-24
ttf-parser
is reexported now.
- Bump
ttf-parser
.
0.5.3 - 2022-10-24
- Revert 0.5.2 because it was a breaking change.
0.5.2 - 2022-10-22
ttf-parser
is reexported now.
- Bump
ttf-parser
.
0.5.1 - 2022-06-11
- Implement
PartialOrd
,Ord
andHash
forScript
.
no_std
support thanks to @CryZe.
0.5.0 - 2022-02-20
GSUB
,GPOS
,ankr
,feat
,kern
,kerx
,morx
andtrak
tables parsing was moved tottf-parser
.rustybuzz
no longer do any TrueType parsing. Everything is handled byttf-parser
.
- Multiple issues in AAT Lookup Table parsing.
0.4.0 - 2021-06-27
Face::from_face
, so you can createrustybuzz::Face
directly fromttf_parser::Face
. Thanks to @lain-donono_std
support thanks to @CryZe.GlyphInfo::unsafe_to_break
thanks to @glowcoil.
- Sync with harfbuzz 2.7.1
- Rename
GlyphInfo.codepoint
intoGlyphInfo.glyph_id
to remove confusion.
0.3.0 - 2020-12-05
- Everything! 🎉
- Tables:
GSUB
,GPOS
,GDEF
,ankr
,feat
,kern
,kerx
,morx
,trak
. - Main shaping logic.
hb_shape_plan_t
andhb_ot_shape_plan_t
hb_ot_map_t
hb_ot_complex_shaper_t
- OpenType layout (GSUB, GPOS).
- AAT layout.
- Normalization.
- Fallback shaper.
- Kerning.
- Rename
Font
toFace
.
Most of the changes in this release were made by laurmaedje.
0.2.0 - 2020-07-25
- 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.
- Update to HarfBuzz 2.7.0
- Rename
Font::from_data
intoFont::from_slice
. - Font is parsed via
ttf-parser
first. And if the parsing fails, theFont
will not be created.harfbuzz
allows malformed fonts.
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.
0.1.1 - 2020-07-04
- Compilation with an old XCode.
At this point, this is just a simple Rust bindings to a stripped down harfbuzz.
- An absolute minimum Rust API.
- harfbuzz's shaping test suite had been ported to Rust.
- harfbuzz source code was reformatted using clang-format.
- 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.