- Update to version 12.3.0:
+ Invalid font tables (eg. GSUB/GPOS) are outright rejected,
instead of partially validated and used. This behavior is
different from DirectWrite and HarfRust, and is in line with
CoreText.
+ Various speed optimizations:
- AAT shaping: speed up state machine on Apple silicon using a
fast-path.
- 12% faster in LucidaGrande benchmark.
- OpenType shaping: speed up (Chain)Context lookup shaping
using a fast-path and Coverage caching. 20% speedup in
NotoNastaliqUrdu benchmark.
- Drawing mega variable-fonts: 30% speedup on GoogleSansFlex
benchmark.
- Drawing VARC fonts: 5% speedup on varc-hanzi benchmark.
- Always apply synthetic slant around horizontal glyph origin
in hb-draw API.
- Fix undefined C++ behavior in some uses union.
- Remove the disabled by default uniscribe-bug-compatible mode
from Indic and Khmer shapers, that used to be used when
testing against Uniscribe shaping behaviour.
- Support full instancing fonts with v2 avar table.
- Various subsetting, build, fuzzing, and documentation fixes. (forwarded request 1324573 from iznogood)
OBS-URL: https://build.opensuse.org/request/show/1324682
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/harfbuzz?expand=0&rev=132
+ Invalid font tables (eg. GSUB/GPOS) are outright rejected,
instead of partially validated and used. This behavior is
different from DirectWrite and HarfRust, and is in line with
CoreText.
+ Various speed optimizations:
- AAT shaping: speed up state machine on Apple silicon using a
fast-path.
- 12% faster in LucidaGrande benchmark.
- OpenType shaping: speed up (Chain)Context lookup shaping
using a fast-path and Coverage caching. 20% speedup in
NotoNastaliqUrdu benchmark.
- Drawing mega variable-fonts: 30% speedup on GoogleSansFlex
benchmark.
- Drawing VARC fonts: 5% speedup on varc-hanzi benchmark.
- Always apply synthetic slant around horizontal glyph origin
in hb-draw API.
- Fix undefined C++ behavior in some uses union.
- Remove the disabled by default uniscribe-bug-compatible mode
from Indic and Khmer shapers, that used to be used when
testing against Uniscribe shaping behaviour.
- Support full instancing fonts with v2 avar table.
- Various subsetting, build, fuzzing, and documentation fixes.
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=302
- Update to version 12.2.0:
+ While Windows platform contain the matching of the ChainContext
rules to within the syllable for those features that are
applied per syllable (in Indic-like and USE shapers), in 2015
we decided that in HarfBuzz we would allow the backtrack /
lookahead parts of the rule to match across syllables. However,
our implementation had a latent bug, causing the backtrack
sequences to be matched within syllable most of the time, and
inconsistently so. As such, and after empirical testing, we
have decided to match the Windows implementation for this, so
now both backtrack and lookahead sequences are contained to
within the syllable, just like DirectWrite does.
+ Disable legacy kern table for most shapers, enabling it only
for default, Arabic, Hangul, and Hebrew shapers.
+ When dropping STAT table during subsetting, drop also named IDs
that are referenced only by it.
+ Don’t apply synthetic slant to glyph origin, fixing horizontal
shift in slanted glyphs.
+ Various build and fuzzing fixes.
+ Documentation fixes. (forwarded request 1315662 from iznogood)
OBS-URL: https://build.opensuse.org/request/show/1315783
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/harfbuzz?expand=0&rev=131
+ While Windows platform contain the matching of the ChainContext
rules to within the syllable for those features that are
applied per syllable (in Indic-like and USE shapers), in 2015
we decided that in HarfBuzz we would allow the backtrack /
lookahead parts of the rule to match across syllables. However,
our implementation had a latent bug, causing the backtrack
sequences to be matched within syllable most of the time, and
inconsistently so. As such, and after empirical testing, we
have decided to match the Windows implementation for this, so
now both backtrack and lookahead sequences are contained to
within the syllable, just like DirectWrite does.
+ Disable legacy kern table for most shapers, enabling it only
for default, Arabic, Hangul, and Hebrew shapers.
+ When dropping STAT table during subsetting, drop also named IDs
that are referenced only by it.
+ Don’t apply synthetic slant to glyph origin, fixing horizontal
shift in slanted glyphs.
+ Various build and fuzzing fixes.
+ Documentation fixes.
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=300
+ Build fixes with GCC 15 on some 32 bit platforms.
+ Fix misaligned pointer use.
+ New API, hb_ot_layout_lookup_collect_glyph_alternates(), to
collect glyph substitutions from single and alternate
substitution lookups in one call, instead of getting
substitutions one by one using
hb_ot_layout_lookup_get_glyph_alternates().
+ New API: +hb_ot_layout_lookup_collect_glyph_alternates()
- Update to version 12.0.0:
+ The major feature of this release is that the Variable
Composites / Components (VARC table) addition to the ISO
OpenFontFormat has graduated from experimental, and is now
enabled by default. It can be disabled at compile time by
defining the HB_NO_VAR_COMPOSITESz macro.
+ VARC table is a new way to store glyph outlines, that allows
for better shape reuse, and can reduce font file size for
Chinese, Japanese, Korean, and some other scripts drastically.
Some font design tools provide a similar feature to designers,
known as "smart components". This technology brings the same
idea to the compiled font file.
+ The Fontra font editor already supports this technology. Note
that this new format involves just the HarfBuzz draw API and
does not affect shaping.
+ Correctly handle markFilteringSet lookup field during
subsetting.
+ Deduplicate features during subsetting.
+ Disable “more” buffer messages that give more verbose output
when using buffer messages callbacks, as it has a performance
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=298
+ Make shaping fail much faster for certain malformed fonts
(e.g., those that trigger infinite recursion).
+ Fix undefined behaviour introduced in 11.4.2.
+ Fix detection of the “Cambria Math” font when fonts are scaled,
so the workaround for the bad MATH table constant is applied.
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=289
+ Various performance and memory usage improvements.
+ The hb-shape command line tool can now be built with the
amalgamated harfbuzz.cc source.
+ Fix regression in handling version 2 of avar table.
+ Increase various buffer length limits for better handling of
fonts that generate huge number of glyphs per codepoint (e.g.
Noto Sans Duployan).
+ Improvements to the harfrust shaper for more accurate testing.
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=288
- Update to version 11.4.1:
+ Fix clang compiler warnings.
- Changes from version 11.4.0:
+ General shaping and subsetting speedups.
+ Fix in Graphite shaping backend when glyph advances became
negative.
+ Subsetting improvements, pruning empty mark-attachment lookups.
+ Don't use the macro name _S, which is reserved by system
liberaries.
+ Build fixes and speedup.
+ Add a kbts shaping backend that calls into the kb_text_shape
single-header shaping library. This is purely for testing and
performance evaluation and we do NOT recommend using it for any
other purposes. (forwarded request 1299331 from iznogood)
OBS-URL: https://build.opensuse.org/request/show/1299403
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/harfbuzz?expand=0&rev=125
+ Fix clang compiler warnings.
- Changes from version 11.4.0:
+ General shaping and subsetting speedups.
+ Fix in Graphite shaping backend when glyph advances became
negative.
+ Subsetting improvements, pruning empty mark-attachment lookups.
+ Don't use the macro name _S, which is reserved by system
liberaries.
+ Build fixes and speedup.
+ Add a kbts shaping backend that calls into the kb_text_shape
single-header shaping library. This is purely for testing and
performance evaluation and we do NOT recommend using it for any
other purposes.
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=286
+ Fix build with non-compliant C++11 compilers that don't
recognize the "and" keyword.
- Changes from version 11.3.1:
+ Fix crasher in the glyph_v_origin function introduced in
11.3.0.
- Changes from version 11.3.0:
+ Speed up handling fonts with very large number of variations.
+ Speed up getting horizontal and vertical glyph advances by up
to 24%.
+ Significantly speed up vertical text shaping.
+ Various documentation improvements.
+ Various build improvements.
+ Various subsetting improvements.
+ Various improvements to Rust font functions (fontations
integration) and shaper (HarfRust integration).
+ Rename harfruzz option and shaper to harfrust following
upstream rename.
+ Implement hb_face_reference_blob() for DirectWrite font
functions.
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=282
- Update to version 11.2.1:
+ Various build improvements.
+ Fix build with HB_NO_DRAW and HB_NO_PAINT.
+ Add an optional harfruzz shaper that uses HarfRuzz; an ongoing
Rust port of HarfBuzz shaping. This shaper is mainly used for
testing the output of the Rust implementation.
+ Fix regression that caused applying unsafe_to_break() to the
whole buffer to be ignored.
+ Update USE data files.
+ Fix getting advances of out-of-rage glyph indices in
DirectWrite font functions.
- Changes from version 11.2.0:
+ Painting of COLRv1 fonts without clip boxes is now about 10
times faster.
+ Synthetic bold/slant of a sub font is now respected, instead of
using the parent’s.
+ Glyph extents for fonts synthetic bold/slant are now accurately
calculated.
+ Various build fixes. (forwarded request 1276943 from iznogood)
OBS-URL: https://build.opensuse.org/request/show/1277946
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/harfbuzz?expand=0&rev=122
- Update to version 11.2.1:
+ Various build improvements.
+ Fix build with HB_NO_DRAW and HB_NO_PAINT.
+ Add an optional harfruzz shaper that uses HarfRuzz; an ongoing
Rust port of HarfBuzz shaping. This shaper is mainly used for
testing the output of the Rust implementation.
+ Fix regression that caused applying unsafe_to_break() to the
whole buffer to be ignored.
+ Update USE data files.
+ Fix getting advances of out-of-rage glyph indices in
DirectWrite font functions.
- Changes from version 11.2.0:
+ Painting of COLRv1 fonts without clip boxes is now about 10
times faster.
+ Synthetic bold/slant of a sub font is now respected, instead of
using the parent’s.
+ Glyph extents for fonts synthetic bold/slant are now accurately
calculated.
+ Various build fixes.
OBS-URL: https://build.opensuse.org/request/show/1276943
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=280
+ Include bidi mirroring variants of the requested codepoints
when subsetting. The new HB_SUBSET_FLAGS_NO_BIDI_CLOSURE can be
used to disable this behaviour.
+ Various bug fixes.
+ Various build fixes and improvements.
+ Various test suite improvements.
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=278
- Update to version 11.0.1:
+ The change in version 10.3.0 to apply “trak” table tracking
values to glyph advances directly has been reverted as it
required every font functions implementation to handle it,
which breaks existing custom font functions. Tracking is
instead back to being applied during shaping.
+ When directwrite integration is enabled, we now link to
dwrite.dll instead of dynamically loading it.
+ A new experimental APIs for getting raw “CFF” and “CFF2”
CharStrings.
+ We now provide manpages for the various command line utilities.
Building manpages requires “help2man” and will be skipped if it
is not present.
+ The command line utilities now set different return value for
different kinds of failures. Details are provided in the
manpages.
+ Various fixes and improvements to fontations font functions.
+ All shaping operations using the ot shaper have become memory
allocation-free.
+ Glyph extents returned by hb-ot and hb-ft font functions are
now rounded in stead of flooring/ceiling them, which also
matches what other font libraries do.
+ Fix “AAT” deleted glyph marks interfering with fallback mark
positioning.
+ Glyph outlines emboldening have been moved out of hb-ot and
hb-ft font functions to the HarfBuzz font layer, so that it
works with any font functions implementation.
+ Fix our fallback C++11 atomics integration, which seems to not
be widely used.
+ Various testing fixes and improvements. (forwarded request 1267275 from iznogood)
OBS-URL: https://build.opensuse.org/request/show/1267614
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/harfbuzz?expand=0&rev=120
+ The change in version 10.3.0 to apply “trak” table tracking
values to glyph advances directly has been reverted as it
required every font functions implementation to handle it,
which breaks existing custom font functions. Tracking is
instead back to being applied during shaping.
+ When directwrite integration is enabled, we now link to
dwrite.dll instead of dynamically loading it.
+ A new experimental APIs for getting raw “CFF” and “CFF2”
CharStrings.
+ We now provide manpages for the various command line utilities.
Building manpages requires “help2man” and will be skipped if it
is not present.
+ The command line utilities now set different return value for
different kinds of failures. Details are provided in the
manpages.
+ Various fixes and improvements to fontations font functions.
+ All shaping operations using the ot shaper have become memory
allocation-free.
+ Glyph extents returned by hb-ot and hb-ft font functions are
now rounded in stead of flooring/ceiling them, which also
matches what other font libraries do.
+ Fix “AAT” deleted glyph marks interfering with fallback mark
positioning.
+ Glyph outlines emboldening have been moved out of hb-ot and
hb-ft font functions to the HarfBuzz font layer, so that it
works with any font functions implementation.
+ Fix our fallback C++11 atomics integration, which seems to not
be widely used.
+ Various testing fixes and improvements.
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/harfbuzz?expand=0&rev=276
- Update to version 10.0.1:
+ Relax sanitization checks for “morx” subtables to fix broken
AAT shaping of macOS 15.0 version of GeezaPro.
- Switch to source service for tarball.
- Update to version 10.0.0:
+ Unicode 16.0.0 support.
+ Various documentation fixes.
+ Various build fixes.
+ Add API to allow HarfBuzz client to set what glyph to use when
a Unicode Variation Selector is not supported by the font,
which would allow the client to customize what happens in this
case, by using a different font for example.
+ Add a callback to for “hb_face_t” for getting the list of table
tags. This is now used to make calling
“hb_face_get_table_tags()” work on a faces created by
“hb_face_create_for_tables()” (e.g. faces returned by
“hb_subset_or_fail()”).
+ CGJ and Mongolian Variation Selectors are now ignored during
glyph positioning, previously they would block both glyph
substitution and positioning across them.
+ Support cairo script as an output format for “hb-view” command
line tool.
+ Drop an optimization that would cause HarfBuzz not apply pair
positioning lookup subtables under certain circumstances, for
compatibility with other implementations that do apply these
subtables.
+ Subsetting will now fail if source font has no glyphs, so
feeding the subsetter invalid data will not silently return an
empty face.
OBS-URL: https://build.opensuse.org/request/show/1203399
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/harfbuzz?expand=0&rev=113