Recent Releases
10.1.028 Nov 2024 21:45
major bugfix:
Tuesday, November 5, 2024
the sign of fallback vertical glyph advance (used when font has no
vertical advance data).
Increase maximum CFF operands limit 20 times to support more complex fonts.
Add --face-loader option to command line utilities.
Support COLR v0 table in hb_font_get_glyph_extents().
Add support for font functions that use Core Text APIs, similar to FreeType
font functions. This allows, for example, using drawing fonts that use the new.
(and undocumented) hvgl table.
Update IANA and OT language registries, as well ase USE data files.
build with ICU 76.
Various compiler warnings and build.
Various subsetter.
New API:
+hb_face_create_or_fail().
+hb_face_create_from_file_or_fail().
+hb_coretext_face_create_from_file_or_fail().
+hb_coretext_font_set_funcs().
+hb_ft_face_create_from_file_or_fail().
10.0.125 Nov 2024 05:05
minor bugfix:
Tuesday, Sep 24, 2024
Relax sanitization checks for morx subtables to broken AAT shaping of
macOS 15.0 version of GeezaPro.
10.0.025 Nov 2024 03:05
major bugfix:
Monday, Sep 23, 2024
Unicode 16.0.0 support.
Various documentation.
Various build.
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.
If after partially instancing a font no variation data is left (the instance
is fully static), don t consider this a failure.
Workaround a Firefox in displaying SVGs generated be hb-view command
line tool under certain circumstances.
in macroman mapping for cmap table.
difference shaping output when HarfBuzz is built with with.
HB_NO_OT_RULESETS_FAST_PATH enabled.
Various subsetting and instancing.
Various fuzzing.
Add with_libstdcxx meson build option.
New API:
+HB_SCRIPT_GARAY.
+HB_SCRIPT_GURUNG_KHEMA.
+HB_SCRIPT_KIRAT_RAI.
+HB_SCRIPT_OL_ONAL.
+HB_SCRIPT_SUNUWAR.
+HB_SCRIPT_TODHRI.
+HB_SCRIPT_TULU_TIGALARI.
+hb_buffer_set_not_found_variation_selector_glyph().
+hb_buffer_get_not_found_variation_selector_glyph().
+hb_get_table_tags_func_t.
+hb_face_set_get_table_tags_func().
9.0.028 Jun 2024 05:05
major bugfix:
Thursday, Jun 27, 2024
HarfBuzz now the supports the proposed new OpenType VARC table. This
replaces the previously supported Variable Composites experimental feature.
VARC support is still experimental and it is not enabled unless HarfBuzz is
built with experimental APIs enabled:
https://github.com/harfbuzz/boring-expansion-spec/blob/main/VARC.md.
Autotools build system have been dropped. Meson is the only supported build
system in HarfBuzz going forward.
Speed up AAT shaping for short words by up to 4 .
Ignore unknown CFF operators.
hb_subset_input_keep_everything() now keeps also non-unicode name table
records.
Update the IANA and OpenType language tag registries.
Support composite glyphs with very large number of points in hb-draw API.
Various build.
8.5.014 May 2024 14:05
major bugfix:
Monday, May 13, 2024
API for partial instancing is now stable and have been promoted out of
experimental APIs.
Support instancing BASE table.
Speedup AAT shaping by 13 30 .
Various build.
Various subsetter and instancer.
New API.
+HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS.
+hb_subset_input_get_axis_range().
+hb_subset_input_pin_axis_location().
8.4.029 Mar 2024 15:04
major bugfix:
Add /bigobj to MSVC compiler flags in meson build, to building hb-subset.cc. Specify minimum versions of various dependencies in meson and autotools build. When subsetting, place variation store at the end of GDEF table to shaping with some versions of Adobe InDesign. Various build. New API: +hb_buffer_set_random_state(). +hb_buffer_get_random_state().
8.3.117 Mar 2024 16:06
major bugfix:
- hb_blob_create_from_file_or_fail() on Windows will now try to interpret the
file name as UTF-8 first, and as system code page if it is not valid UTF-8.
- Fix hb_style_get_value() in fonts with STAT table.
- Properly handle negative offsets in CFF table.
- Update IANA Language Subtag Registry to 2024-03-07.
- Subsetter now supports subsetting BASE table.
- Subsetter will update hhea font metrics in sync with OS/2 ones.
- --variations option of hb-subset now supports leaving out values that
should be unchanged, e.g. wght=:500: will change the default and keep max
and min unchanged. It also supports *=drop to to pin all axes to default
location.
- Fix hb_ot_math_get_glyph_kerning() to match updated MATH table spec.
- Support legacy MacRoman encoding in cmap table.
- Various build fixes.
- Various subsetting and instancing fixes.
- New API:
hb_subset_input_pin_all_axes_to_default()
8.3.012 Nov 2023 03:25
major bugfix:
Saturday, November 11, 2023
Improve memory barrier to potential segfaults.
Various build.
Various subsetting and instancing.
Rename hb-subset option --instance to --variations to match the other
tools. Old option is kept as an alias.
New API:
HB_AAT_LAYOUT_FEATURE_TYPE_CURSIVE_CONNECTION
Deprecated API:
HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION
8.2.218 Oct 2023 03:15
minor bugfix:
Wednesday, October 18, 2023
From the river to the sea, Palestine will be free .
Regression from 8.1.0 in shaping fonts with duplicate feature tags.
Regression from 8.2.0 in parsing CSS-style feature strings.
Variable fonts instanciation now handles more tables.
Various CMake build improvements.
Various to build without errors with gcc 4.9.2.
8.2.119 Sep 2023 06:05
minor bugfix:
Monday, September 18, 2023
Unicode 15.1 support.
8.2.009 Sep 2023 03:15
major bugfix:
Friday, September 8, 2023
Various build and fuzzing - Improvements to COLRv1 painting.
New API:
+hb_paint_color_glyph_func_t.
+hb_paint_funcs_set_color_glyph_func.
+hb_paint_color_glyph.
8.1.105 Aug 2023 11:05
minor bugfix:
Wednesday, August 2, 2023
Shaping of contextual rules at the end of string, introduced in 8.1.0.
Stack-overflow in repacker with malicious fonts.
30 speed up loading Noto Duployan font.
8.1.001 Aug 2023 15:45
major bugfix:
Tuesday, August 1, 2023
long-standing build with the AIX compiler and older Apple clang.
Revert optimization that could cause timeout during subsetting with malicious fonts.
More optimization work:
- 45 speed up in shaping Noto Duployan font.
- 10 speed up in subsetting Noto Duployan font.
- Another 8 speed up in shaping Gulzar.
- 5 speed up in loading Roboto.
New API:
+hb_ot_layout_collect_features_map().
8.0.113 Jul 2023 19:25
minor bugfix:
Wednesday, July 12, 2023
Build on 32-bit ARM.
More speed optimizations:
- 60 speedup in retaingids subsetting SourceHanSans-VF.
- 38 speed up in subsetting (beyond-64k) mega-merged Noto.
- 16 speed up in retain-gid (used for IFT) subsetting of NotoSansCJKkr.
8.0.009 Jul 2023 11:41
major feature:
4.0.002 Mar 2022 00:30
major feature:
New public API to create subset plan and gather information on things like glyph mappings in the final subset. The plan can then be passed on to perform the subsetting operation. (Garret Rieger)
Draw API for extracting glyph shapes have been extended and finalized and is no longer an experimental API. The draw API supports glyf, CFF and CFF2 glyph outlines tables, and applies variation settings set on the font as well as synthetic slant. The new public API is not backward compatible with the previous, non-public, experimental API. (Behdad Esfahbod)
The hb-view tool will use HarfBuzz draw API to render the glyphs instead of cairo-ft when compiled with Cairo 1.17.5 or newer, setting HB_DRAW environment variable to 1 or 0 will force using or not use the draw API, respectively. (Behdad Esfahbod)
The hb-shape and hb-view tools now default to using HarfBuzz s own font loading functions (ot) instead of FreeType ones (ft). They also have a new option, --font-slant, to apply synthetic slant to the font. (Behdad Esfahbod)
HarfBuzz now supports more than 65535 (the OpenType limit) glyph shapes and metrics. See be-fonts/boring-expansion-spec#6 and be-fonts/boring-expansion-spec#7 for details. (Behdad Esfahbod)
New API to get the dominant horizontal baseline tag for a given script. (Behdad Esfahbod)
New API to get the baseline positions from the font, and synthesize missing ones. As well as new API to get font metrics and synthesize missing ones. (Matthias Clasen)
Improvements to finding dependencies on Windows when building with Visual Studio. (Chun-wei Fan)
New buffer flag, HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT, that must be set during shaping for HB_GLYPH_FLAG_UNSAFE_TO_CONCAT flag to be reliably produced. This is to limit the performance hit of producing this flag to when
it is actually needed. (Behdad Esfahbod)
Documentation improvements. (Matthias Clasen)
New API
General:
+HB_BUFFER_FLAG_PRODUCE_UNSAFE_
3.0.019 Sep 2021 07:45
minor feature:
Unicode 14.0 support (David Corbett).
.
The hb-subset API and the harfbuzz-subset library's ABI are now declared stable. The harfbuzz-subset library would not have been possible without the work of Garret Rieger and Qunxin Liu from Google Fonts, and the earlier work of Michiharu Ariza from Adobe.
.
The hb-style API is now stable and no longer experimental.
.
New API:
+hb_style_tag_t.
+hb_style_get_value().
+hb_subset_input_t.
+hb_subset_flags_t.
+hb_subset_sets_t.
+hb_subset_input_create_or_fail().
+hb_subset_input_reference().
+hb_subset_input_destroy().
+hb_subset_input_set_user_data().
+hb_subset_input_get_user_data().
+hb_subset_input_unicode_set().
+hb_subset_input_glyph_set().
+hb_subset_input_set().
+hb_subset_input_get_flags().
+hb_subset_input_set_flags().
+hb_subset_or_fail().
.
Removed old unstable harfbuzz-subset API:
-hb_subset_input_nameid_set().
-hb_subset_input_namelangid_set().
-hb_subset_input_layout_features_set().
-hb_subset_input_no_subset_tables_set().
-hb_subset_input_drop_tables_set().
-hb_subset_input_set_drop_hints().
-hb_subset_input_get_drop_hints().
-hb_subset_input_set_desubroutinize().
-hb_subset_input_get_desubroutinize().
-hb_subset_input_set_retain_gids().
-hb_subset_input_get_retain_gids().
-hb_subset_input_set_name_legacy().
-hb_subset_input_get_name_legacy().
-hb_subset_input_set_overlaps_flag().
-hb_subset_input_get_overlaps_flag().
-hb_subset_input_set_notdef_outline().
-hb_subset_input_get_notdef_outline().
-hb_subset_input_set_no_prune_unicode_ranges().
-hb_subset_input_get_no_prune_unicode_ranges().
-hb_subset().
2.9.108 Sep 2021 03:15
minor feature:
Final subset API is in place and if no are discovered, it will be the stable subset API of HarfBuzz 3.0.0. Old API is kept to ease transition, but will be removed in 3.0.0.
Various fuzzer-found.
Hb_buffer_append() now handles the pre- and post-context which previously were left unchanged in the destination buffer.
hb-view / hb-shape now accept following new arguments:
--unicodes-before/after: takes a list of hex numbers that represent Unicode.
Codepoints.
.
--unicodes-before/after: takes a list of hex numbers that represent Unicode.
Codepoints.
Undeprecated API:hb_set_invert().
2.9.020 Aug 2021 06:25
minor feature:
Subsetter API is being stabilized, with the first stable API to happen in
3.0.0 release.
Support multiple variation axes with same tag, aka HOI.
The coretext testing shaper now passes font variations to CoreText.
hb-shape/hb-view does not break line at new lines unless text is read from
file.
hb-view and hb-subset has a --batch now, similar to hb-shape.
The --batch mode now uses ; as argument separator instead of : used previously.
The --batch in hb-shape does not expect 0th argument anymore. That is, the
lines read are interpreted as argv 1: , instead of argv 0: .
The --batch option has been undocumented. We are ready to document it; send
feedback if you find it useful.
hb-subset got arguments revamps. Added much-requested --gids-file, --glyphs, --glyphs-file, --unicodes-file, supporting ranges in --unicodes.
Various.
2.8.209 Jul 2021 04:05
minor feature:
Shaping LTR digits for RTL scripts now makes the native direction of the
digits LTR, applying shaping and positioning rules on the same glyph order as
Uniscribe. (Jonathan Kew, Khaled Hosny).
Subsetting COLR v1 and CPAL tables is now supported. (Garret Rieger, Qunxin Liu).
Various and improvements to the subsetter. (Garret Rieger, Qunxin Liu, Behdad).
When applying morx table, mark glyph widths should not be zeroed. (Jonathan Kew).
GPOS is preferred over kerx, if GSUB was applied. (Behdad).
Regional_Indicator pairs are grouped together when clustering. (Behdad).
New APIs:
+hb_blob_create_or_fail().
+hb_blob_create_from_file_or_fail().
+hb_set_copy().
2.8.106 May 2021 06:25
minor feature:
2.8.1
Subsetter now fully supports GSUB/GPOS/GDEF tables (including variations); as.
such, layout tables are retained by subsetter by default. (Garret Rieger, Qunxin Liu).
Build scripts no longer check for FontConfig as HarfBuzz does not use it.
hb-view supports iTerm2 and kitty inline image protocols (Khaled Hosny).
it can also use Chafa for terminal graphics if available (Hans Petter Jansson).
2.8.017 Mar 2021 03:15
minor feature:
Shape joining scripts other than Arabic/Syriac using the Universal Shaping Engine.
Previously these were shaped using the generalized Arabic shaper. (David Corbett).
regression in shaping of U+0B55 ORIYA SIGN OVERLINE. (David Corbett).
Update language tags. (David Corbett).
Variations: reduce error: do not round each interpolated delta. (Just van Rossum).
Documentation improvements. (Khaled Hosny, Nathan Willis).
Subsetter improvements: subsets most, if not all, lookup types now. (Garret Rieger, Qunxin Liu).
Fuzzer-found and other improvements when memory failures happen. (Behdad).
Removed most atomic implementations now that we have C++11 atomic impl. (Behdad).
General codebase upkeep; using more C++11 features: constexpr constructors, etc. (Behdad).
2.7.428 Dec 2020 03:20
minor feature:
Missing --enable-introspection configure option from previous release tarball.
Documentation updates.
2.7.324 Dec 2020 15:45
minor feature:
Update USE shaper to 2020-08-13 specification, and other improvements.
Don t disable liga feature in myanmar shaper, to match Uniscribe.
Improvements to language and script tags handling.
Update language system tag registry to OpenType 1.8.4.
Support for serializing and deserializing Unicode buffers. Serialized buffers
are now delimited with or based on whether it is a Unicode or
glyphs buffer.
Increase buffer work limits to handle fonts with many complex lookups.
Handle more shaping operations in trace output.
Memory access.
More OOM.
Improved documentation.
Build system improvements.
New API:
+hb_buffer_has_positions().
+hb_buffer_serialize().
+hb_buffer_serialize_unicode().
+hb_buffer_deserialize_unicode().
2.7.229 Aug 2020 03:15
minor feature:
a regression in the previous release that caused a crash with Kaithi.
More OOM.
2.7.114 Aug 2020 06:25
minor feature:
ot-funcs now handles variable empty glyphs better when hvar/vvar isn't present.
Reverted a GDEF processing regression.
A couple of to handle OOM better.
2.7.026 Jul 2020 03:25
minor feature:
Use an implementation for round that always rounds up, some minor fluctuations
Are expected on var font specially when hb-ot callback is used.
an AAT's kerx on broken rendering of Devanagari Sangam MN.
Remove AAT's lcar table support from _get_ligature_carets API, not even much
Use on macOS installed fonts (only two files). GDEF support is the recommended
One and expected to work properly after two releases ago.
Minor memory to handle OOM better specially in hb-ft.
Minor.so files versioning scheme change and remove stable/unstable scheme
Differences, was never used in practice (always default to stable scheme).
We are now suggesting careful packaging of the library using meson,https://github.com/harfbuzz/harfbuzz/wiki/Notes-on-migration-to-meson
For more information.
Distribution package URL is changed, either use GitHub generated tarballs,https://github.com/harfbuzz/harfbuzz/archive/ pkgver.tar.gz
or, even more preferably use commit hash of the release and git checkouts like,git+https://github.com/harfbuzz/harfbuzz#commit= commit.
2.6.823 Jun 2020 03:15
minor feature:
New API to fetch glyph alternates from GSUB table.
hb-coretext build for macOS 10.10.
Meson build, cmake port removal is postponed but please prepare for
it and give us feedback.
Autotools is still our main build system however please consider
experimenting with meson also for packaging the library.
New API:
+hb_ot_layout_lookup_get_glyph_alternates().
2.6.704 Jun 2020 03:15
minor feature:
Update to Unicode 13.0.0.
Hb_ot_layout_get_ligature_carets for fonts without lcar table, it was
Completely broken for all the other fonts since 2.1.2.
As a part of our migration to meson, this release will be the last one
to provide cmake port files but autotools still is our main build system.
There is a possibility that the next version or the after be released
Using meson.
2.6.612 May 2020 03:15
minor feature:
A in AAT kerning for Geeza Pro.
Better support for resource fork fonts on macOS.
2.6.518 Apr 2020 03:15
minor feature:
Add experimental meson build system. Autotools is still the primary
and supported build system.
AAT is now always preferred for horizontal scripts when both AAT and OT
layout tables exist at the same time.
Subsetter improvements.
New API:
+hb_ft_font_lock_face().
+hb_ft_font_unlock_face().
2.6.402 Nov 2019 15:45
minor feature:
Small.
Build.
2.6.329 Oct 2019 08:45
minor feature:
Misc small, mostly to build-related.
New API:
+hb_font_get_nominal_glyphs().
2.6.202 Oct 2019 05:59
minor feature:
https://github.com/harfbuzz/harfbuzz/blob/master/NEWS
2.2.602 Oct 2019 02:05
minor feature:
https://github.com/harfbuzz/harfbuzz/blob/master/NEWS