Releases: harfbuzz/harfbuzz
4.0.0
-
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
andCFF2
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, settingHB_DRAW
environment variable to 1 or 0 will force using or not use the draw API, respectively. (Behdad Esfahbod) -
The
hb-shape
andhb-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 harfbuzz/boring-expansion-spec#6 and harfbuzz/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 forHB_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_TO_CONCAT
+hb_var_num_t -
Draw:
+hb_draw_funcs_t
+hb_draw_funcs_create()
+hb_draw_funcs_reference()
+hb_draw_funcs_destroy()
+hb_draw_funcs_is_immutable()
+hb_draw_funcs_make_immutable()
+hb_draw_move_to_func_t
+hb_draw_funcs_set_move_to_func()
+hb_draw_line_to_func_t
+hb_draw_funcs_set_line_to_func()
+hb_draw_quadratic_to_func_t
+hb_draw_funcs_set_quadratic_to_func()
+hb_draw_cubic_to_func_t
+hb_draw_funcs_set_cubic_to_func()
+hb_draw_close_path_func_t
+hb_draw_funcs_set_close_path_func()
+hb_draw_state_t
+HB_DRAW_STATE_DEFAULT
+hb_draw_move_to()
+hb_draw_line_to()
+hb_draw_quadratic_to()
+hb_draw_cubic_to()
+hb_draw_close_path()
+hb_font_get_glyph_shape_func_t
+hb_font_funcs_set_glyph_shape_func()
+hb_font_get_glyph_shape() -
OpenType layout
+HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL
+HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL
+hb_ot_layout_get_horizontal_baseline_tag_for_script()
+hb_ot_layout_get_baseline_with_fallback() -
Metrics:
+hb_ot_metrics_get_position_with_fallback() -
Subset:
+hb_subset_plan_t
+hb_subset_plan_create_or_fail()
+hb_subset_plan_reference()
+hb_subset_plan_destroy()
+hb_subset_plan_set_user_data()
+hb_subset_plan_get_user_data()
+hb_subset_plan_execute_or_fail()
+hb_subset_plan_unicode_to_old_glyph_mapping()
+hb_subset_plan_new_to_old_glyph_mapping()
+hb_subset_plan_old_to_new_glyph_mapping()
-
3.4.0
-
Perform sanity checks on shaping results is now part of “harfbuzz” library and can be enabled by setting the buffer flag
HB_BUFFER_FLAG_VERIFY
. (Behdad Esfahbod) -
Arabic Mark Transient Reordering Algorithm have been updated to revision 6. (Khaled Hosny)
-
ISO 15924 code for mathematical notation, ‘Zmth’, now maps to the OpenType ‘math’ tag. (Alexis King)
-
It is now possible to get at once all math kerning values for a given glyph at a given corner. (Alexis King)
-
Fix locale_t portability issues on systems the typedef’s it to a void pointer. (Behdad Esfahbod)
-
New API:
+HB_BUFFER_FLAG_VERIFY
+HB_OT_TAG_MATH_SCRIPT
+HB_SCRIPT_MATH
+hb_ot_math_kern_entry_t
+hb_ot_math_get_glyph_kernings() -
Deprecated API
+HB_OT_MATH_SCRIPT
3.3.2
- Revert splitting of pair positioning values introduced in 3.3.0 as it proved problematic. (Behdad Esfahbod)
3.3.1
- Fix heap-use-after-free in harfbuzz-subset introduced in previous release. (Garret Rieger)
3.3.0
-
Improved documentation. (Matthias Clasen)
-
Internal code cleanup, using C++ standard library more. (Behdad Esfahbod)
-
The low 16-bits of face index will be used by
hb_face_create()
to select a face inside a font collection file format, while the high 16-bits will be used byhb_font_create()
to load the named instance. (Behdad Esfahbod) -
Glyph positions and other font metrics now apply synthetic slant set by
hb_font_set_synthetic_slant()
, for improved positioning for synthetically slanted fonts. (Behdad Esfahbod) -
Fixed unintentional locale dependency in
hb_variation_to_string()
for decimal point representation. (Matthias Clasen) -
When applying pair positioning (kerning) the positioning value is split between the two sides of the pair for improved cursor positioning between such pairs. (Behdad Esfahbod)
-
Introduced new
HB_GLYPH_FLAG_UNSAFE_TO_CONCAT
, to be used in conjunction withHB_GLYPH_FLAG_UNSAFE_TO_BREAK
for optimizing re-shaping during line breaking. Check the documentation for further details. (Behdad Esfahbod) -
Improved handling of macrolanguages when mapping BCP 47 codes to OpenType tags. (David Corbett)
-
New API:
+HB_GLYPH_FLAG_UNSAFE_TO_CONCAT
+hb_segment_properties_overlay()
+hb_buffer_create_similar()
+hb_font_set_synthetic_slant()
+hb_font_get_synthetic_slant()
+hb_font_get_var_coords_design()
3.2.0
harfbuzz
library improvements:
- Fixed shaping of Apple Color Emoji flags in right-to-left context. (Behdad Esfahbod)
- Fixed positioning of CFF fonts in
HB_TINY
profile. (Behdad Esfahbod) - OpenType 1.9 language tags update. (David Corbett)
- Add
HB_NO_VERTICAL
config option. (Behdad Esfahbod) - Add
HB_CONFIG_OVERRIDE_H
for easier configuration. (Behdad Esfahbod)
harfbuzz-subset
library improvements:
- Improved packing of
cmap
,loca
, andLigature
tables. (Garret Rieger) - Significantly improved overflow-resolution strategy in the repacker. (Garret Rieger)
3.1.2
3.1.1
3.1.0
-
Better offset-overflow handling in the subsetter library. (Garret Rieger)
-
Improved Unicode 14 properties in the USE shaper, and various other USE shaper fixes. (David Corbett)
-
MATH and COLR v1 tables subsetting support, and various other subsetter fixes. (Qunxin Liu)
-
Support for Pwo Karen / Ason Chin medial la. (Simon Cozens)
-
Apply GPOS positioning when substituting with morx table, if kerx is missing. (Behdad Esfahbod)
-
Apply calt and clig features across syllable boundaries in Indic shaper. (Behdad Esfahbod)
-
Meson option for enabling Graphite 2 has been renamed to graphite2.
-
Build and documentation fixes.
-
New API:
+hb_buffer_set_not_found_glyph()
+hb_buffer_get_not_found_glyph()
3.0.0
-
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()