Update HarfBuzz to 4.1.0
Categories
(Core :: Graphics: Text, task, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox100 | --- | fixed |
People
(Reporter: RyanVM, Assigned: RyanVM)
References
Details
(Whiteboard: [third-party-lib-audit][gfx-noted])
Attachments
(1 file)
+++ This bug was initially created as a clone of Bug #1756664 +++
Mostly filing this as a placeholder for now as we almost certainly want to let this release bake for awhile before trying to update our in-tree copy.
Overview of changes leading to 4.0.0
Tuesday, March 1, 2022
-
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 https://github.com/be-fonts/boring-expansion-spec/issues/6 and
https://github.com/be-fonts/boring-expansion-spec/issues/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_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()
Assignee | ||
Comment 1•2 years ago
|
||
Assignee | ||
Comment 2•2 years ago
|
||
Assignee | ||
Comment 3•2 years ago
|
||
Overview of changes leading to 4.0.1
Friday, March 11, 2022
-
Update OpenType to AAT mappings for “hist” and “vrtr” features.
(Florian Pircher) -
Update IANA Language Subtag Registry to 2022-03-02. (David Corbett)
-
Update USE shaper to allow any non-numeric tail in a symbol cluster, and
remove obsolete data overrides. (David Corbett) -
Fix handling of baseline variations to return correctly scaled values.
(Matthias Clasen) -
A new experimental hb_subset_repack_or_fail() to repack an array of objects,
eliminating offset overflows. The API is not available unless HarfBuzz is
built with experimental APIs enabled. (Qunxin Liu) -
New experimental API
+hb_link_t
+hb_object_t
+hb_subset_repack_or_fail()
Updated•2 years ago
|
Assignee | ||
Comment 4•2 years ago
|
||
Assignee | ||
Comment 5•2 years ago
|
||
Overview of changes leading to 4.1.0
Wednesday, March 23, 2022
-
Various OSS-Fuzz fixes. (Behdad Esfahbod)
-
Make fallback vertical-origin match FreeType’s. (Behdad Esfahbod)
-
Treat visible viramas like dependent vowels in USE shaper. (David Corbett)
-
Apply presentation forms features and discretionary features in one go in
Indic shaper, which seems to match Uniscribe and CoreText behaviour.
(Behdad Esfahbod, David Corbett) -
Various bug fixes.
-
New API
+hb_set_add_sorted_array()
Try push:
https://treeherder.mozilla.org/jobs?repo=try&revision=3e4b246d7d2dfb997fcf0cea7d31e422ad727e01
Updated•2 years ago
|
Pushed by rvandermeulen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/802e68d6b81e Update HarfBuzz to 4.1.0. r=jfkthame
Comment 7•2 years ago
|
||
bugherder |
Comment 8•2 years ago
|
||
Ryan, as a heads-up: it turns out this harfbuzz version regressed the rendering of the current version of Lohit Devanagari (commonly found on Linux, and potentially used elsewhere); the same issue may affect other Indic fonts as well.
This has been fixed upstream, and I expect a new release (4.1.1?) will appear shortly. But given where we are in our release cycle, I wondered whether we should back out this patch from trunk for now? I don't want us to ship this regression -- it impacts the correct readability of the text -- so we need to either take the (not-yet-formally-released) fix or a backout for Firefox 100, and we don't have much time before it goes to beta.
I'd prefer the forward fix, as the next release will also fix an emoji rendering issue on latest macOS, but that at least isn't a regression for (some people's) everyday language.
Assignee | ||
Comment 9•2 years ago
|
||
(In reply to Jonathan Kew (:jfkthame) from comment #8)
Ryan, as a heads-up: it turns out this harfbuzz version regressed the rendering of the current version of Lohit Devanagari (commonly found on Linux, and potentially used elsewhere); the same issue may affect other Indic fonts as well.
Filed bug 1762183 for this.
Description
•