Closed Bug 1500356 Opened 6 years ago Closed 6 years ago

Update HarfBuzz to 2.3.0

Categories

(Core :: Graphics: Text, defect, P3)

defect

Tracking

()

RESOLVED FIXED
mozilla66
Tracking Status
firefox66 --- fixed

People

(Reporter: ionnv, Assigned: RyanVM)

References

Details

(Whiteboard: [third-party-lib-audit][gfx-noted])

Attachments

(2 files)

https://cgit.freedesktop.org/harfbuzz/commit/?id=3d9a0306ebb48706778fd2c487c3cacc7d508d6c Overview of changes leading to 2.0.0 Wednesday, October 17, 2018 ==================================== - Added AAT shaping support (morx/kerx/trak). Automatically used if GSUB/GPOS are not available respectively. Set HB_OPTIONS=aat env var to have morx/kerx preferred over GSUB/GPOS. - Apply TrueType kern table internally, instead of relying on hb_font_t callbacks. - Khmer shaper significantly rewritten to better match Uniscribe. - Indic3 tags ('dev3', etc) are passed to USE shaper. - .dfont Mac font containers implemented. - Script- and language-mapping revamped to better use BCP 47. - Misc USE and Indic fixes. - Misc everything fixes. - Too many things to list. Biggest release since 0.9.1, with over 500 commits in just over 5 weeks! Didn't intend it to be a big release. Just happened to become. - hb-ft now locks underlying FT_Face during use.
Depends on: 1490062
Let's give this release a bit of time to settle, and get past the Fx64 soft-freeze before we consider taking it.
I ran 2.0.0 through Try just to see where things stand. I ran into two new issues: MSVC Werror build bustage: https://treeherder.mozilla.org/logviewer.html#?job_id=206684240&repo=try Looks like we have 3 in-tree uses of the old API that'll need switching to the new one. Android reftest failures: https://treeherder.mozilla.org/logviewer.html#?job_id=206687164&repo=try These hit both opt and debug builds, so I'm pretty sure it's real. Here's a link to the raw diff to save you some time if you want to test locally: https://hg.mozilla.org/try/raw-rev/f19de9d0b0b0fda00023f5bbd0997ab4f700bae7
Status: UNCONFIRMED → NEW
Ever confirmed: true
Whiteboard: [third-party-lib-audit][gfx-noted]
https://cgit.freedesktop.org/harfbuzz/commit/?id=7c2c8ac301b526da8b5384d6b90f156ca096568e Overview of changes leading to 2.0.1 Friday, October 19, 2018 ==================================== - Fix hb-version.h reported release version that went wrong (1.8.0) with previous release. - Fix extrapolation in 'trak' table. - Fix hb-font infinite-recursion issue with some font funcs and subclassed fonts. - Implement variation-kerning format in kerx table, although without variation. - Fix return value of hb_map_is_empty(). https://cgit.freedesktop.org/harfbuzz/commit/?id=0a3b7a0fb0734a66926dfda5d95d3cacea8890ce Overview of changes leading to 2.0.2 Saturday, October 20, 2018 ==================================== - Fix two minor memory access issues in AAT tables.
Summary: Update HarfBuzz to 2.0.0 → Update HarfBuzz to 2.0.2
Overview of changes leading to 2.1.0 Tuesday, October 30, 2018 ==================================== - AAT shaping improvements: o Allow user controlling AAT features, for whole buffer only currently. o Several 'morx' fixes. o Implement tuple-kerns in 'kerx'; Fixes kerning with Apple default San Francisco fonts. - Support for color fonts: o COLR/CPAL API to fetch color layers. o SVG table to fetch SVG documents. o CBDT/sbix API to fetch PNG images. - New 'name' table API. - hb-ot-font now uses 'VORG' table to correctly position CFF glyphs in vertical layout. - Various fuzzer-found bug fixes. Changed API: A type and a macro added in 2.0.0 were renamed: hb_name_id_t -> hb_ot_name_id_t HB_NAME_ID_INVALID -> HB_OT_NAME_ID_INVALID New API: +hb_color_t +HB_COLOR +hb_color_get_alpha() +hb_color_get_red() +hb_color_get_green() +hb_color_get_blue() +hb_ot_color_has_palettes() +hb_ot_color_palette_get_count() +hb_ot_color_palette_get_name_id() +hb_ot_color_palette_color_get_name_id() +hb_ot_color_palette_flags_t +hb_ot_color_palette_get_flags() +hb_ot_color_palette_get_colors() +hb_ot_color_has_layers() +hb_ot_color_layer_t +hb_ot_color_glyph_get_layers() +hb_ot_color_has_svg() +hb_ot_color_glyph_reference_svg() +hb_ot_color_has_png() +hb_ot_color_glyph_reference_png() +hb_ot_name_id_t +HB_OT_NAME_ID_INVALID +HB_OT_NAME_ID_COPYRIGHT +HB_OT_NAME_ID_FONT_FAMILY +HB_OT_NAME_ID_FONT_SUBFAMILY +HB_OT_NAME_ID_UNIQUE_ID +HB_OT_NAME_ID_FULL_NAME +HB_OT_NAME_ID_VERSION_STRING +HB_OT_NAME_ID_POSTSCRIPT_NAME +HB_OT_NAME_ID_TRADEMARK +HB_OT_NAME_ID_MANUFACTURER +HB_OT_NAME_ID_DESIGNER +HB_OT_NAME_ID_DESCRIPTION +HB_OT_NAME_ID_VENDOR_URL +HB_OT_NAME_ID_DESIGNER_URL +HB_OT_NAME_ID_LICENSE +HB_OT_NAME_ID_LICENSE_URL +HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY +HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY +HB_OT_NAME_ID_MAC_FULL_NAME +HB_OT_NAME_ID_SAMPLE_TEXT +HB_OT_NAME_ID_CID_FINDFONT_NAME +HB_OT_NAME_ID_WWS_FAMILY +HB_OT_NAME_ID_WWS_SUBFAMILY +HB_OT_NAME_ID_LIGHT_BACKGROUND +HB_OT_NAME_ID_DARK_BACKGROUND +HB_OT_NAME_ID_VARIATIONS_PS_PREFIX +hb_ot_name_entry_t +hb_ot_name_list_names() +hb_ot_name_get_utf8() +hb_ot_name_get_utf16() +hb_ot_name_get_utf32()
Summary: Update HarfBuzz to 2.0.2 → Update HarfBuzz to 2.1.0
Overview of changes leading to 2.1.1 Monday, November 5, 2018 ==================================== - AAT improvements: o Implement 'mort' table. o Implement 'kern' subtables Format 1 and Format 3.
Summary: Update HarfBuzz to 2.1.0 → Update HarfBuzz to 2.1.1
Assignee: nobody → ryanvm
Priority: -- → P3
https://cgit.freedesktop.org/harfbuzz/commit/?id=fdb29ab2b0058c9813f9fc44c83dd9048db92d16 Overview of changes leading to 2.1.2 Friday, November 16, 2018 +==================================== - Various internal changes. - AAT shaping improvements: o Implement kern table Format 1 state-machine-based kerning. o Implement cross-stream kerning (cursive positioning, etc). o Ignore emptyish GSUB tables (zero scripts) if morx present. o Don't apply GPOS if morx is being applied. Matches Apple. https://cgit.freedesktop.org/harfbuzz/commit/?id=e3a1a8350a6a7933b0a100194985f4425ab9de19 Overview of changes leading to 2.1.3 Friday, November 16, 2018 ==================================== - Fix AAT 'mort' shaping, which was broken in 2.1.2
Summary: Update HarfBuzz to 2.1.1 → Update HarfBuzz to 2.1.3
Overview of changes leading to 2.2.0 Thursday, November 29, 2018 ==================================== - Misc shaping bug fixes. - Add font variations named-instance API. - Deprecate font variations axis enumeration API and add replacement. - AAT shaping improvements: o Fixed 'kern' table Format 2 implementation. o Implement 'feat' table API for feature detection. o Blacklist 'GSUB' table of fonts from 'MUTF' foundry that also have 'morx'. New API: +hb_aat_layout_feature_type_t +hb_aat_layout_feature_selector_t +hb_aat_layout_get_feature_types() +hb_aat_layout_feature_type_get_name_id +hb_aat_layout_feature_selector_info_t +HB_AAT_LAYOUT_NO_SELECTOR_INDEX +hb_aat_layout_feature_type_get_selector_infos() +hb_ot_var_axis_flags_t +hb_ot_var_axis_info_t +hb_ot_var_get_axis_infos() +hb_ot_var_find_axis_info() +hb_ot_var_get_named_instance_count() +hb_ot_var_named_instance_get_subfamily_name_id() +hb_ot_var_named_instance_get_postscript_name_id() +hb_ot_var_named_instance_get_design_coords() Deprecated API: +HB_OT_VAR_NO_AXIS_INDEX +hb_ot_var_axis_t +hb_ot_var_get_axes() +hb_ot_var_find_axis()
Summary: Update HarfBuzz to 2.1.3 → Update HarfBuzz to 2.2.0
When we're ready to take the harfbuzz update, this should fix the issue of the deprecation warnings.
Comment on attachment 9030085 [details] [diff] [review] Update gfxFont/gfxFontEntry to use new harfbuzz API in place of deprecated functions Looks great, thanks for figuring that out! https://treeherder.mozilla.org/#/jobs?repo=try&revision=6f7e7bbe5779402b15e137cb081fabae813e27d2 Happy to land this all together once the reviews are ready to go :)
Flags: needinfo?(jfkthame)
Attachment #9030085 - Flags: feedback+
OK; I'm intending to keep an eye on stability upstream, and consider taking an update sometime in January. Leaving ni? flag as a reminder.
Overview of changes leading to 2.3.0 Thursday, December 20, 2018 ==================================== - Fix regression on big-endian architectures. Ouch! - Misc bug and build fixes. - Fix subsetting of simple GSUB/GDEF. - Merge CFF / CFF2 support contributed by Adobe. This mostly involves the subsetter, but also get_glyph_extents on CFF fonts. New API in hb-aat.h: +hb_aat_layout_has_substitution() +hb_aat_layout_has_positioning() +hb_aat_layout_has_tracking()
Summary: Update HarfBuzz to 2.2.0 → Update HarfBuzz to 2.3.0
Blocks: 1455265
Comment on attachment 9030085 [details] [diff] [review] Update gfxFont/gfxFontEntry to use new harfbuzz API in place of deprecated functions Review of attachment 9030085 [details] [diff] [review]: ----------------------------------------------------------------- This just adjusts our code to use non-deprecated harfbuzz API and avoid build failure due to warnings-as-errors, without changing behavior. I expect we'll also want to add the new Indic-script v.3 tags to the ScriptRange records where appropriate (so I've left room in the struct for them), but let's do that in a separate bug.
Attachment #9030085 - Flags: review?(jmuizelaar)
Attachment #9030085 - Flags: review?(jmuizelaar) → review+
Pushed by ryanvm@gmail.com: https://hg.mozilla.org/integration/autoland/rev/2d077b8e0b5b Update HarfBuzz to version 2.3.0. r=jfkthame https://hg.mozilla.org/integration/autoland/rev/27730939a138 Update gfxFont/gfxFontEntry to use new harfbuzz API in place of deprecated functions. r=jrmuizel
Flags: needinfo?(jfkthame)
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla66
Coverity found 18 new issues in this update. Complaining about dead code, Large stack use, and other things. No high impact defects (medium and low)
Blocks: 1509423
(In reply to Sylvestre Ledru [:sylvestre] from comment #22) > Coverity found 18 new issues in this update. > Complaining about dead code, Large stack use, and other things. > No high impact defects (medium and low) Behdad, do you have access to Coverity results for HarfBuzz?
Flags: needinfo?(mozilla)
> Behdad, do you have access to Coverity results for HarfBuzz? Hey there. To be honest enabling it was my task but I got stock as the lack of familiarity, can you guys help us on enabling it again with our CI?
Seems that it is here: https://scan.coverity.com/projects/harfbuzz And see here: https://scan.coverity.com/faq#get-account If you want, we can share the results I was mentioning above.
Depends on: 1517767
No longer depends on: 1517767

We don't have our Coverity build working. I've written to Coverity people multiple times, with no response.

Can you give me access to Mozilla's run of Coverity?

Flags: needinfo?(mozilla)

(In reply to Behdad Esfahbod from comment #26)

We don't have our Coverity build working. I've written to Coverity people multiple times, with no response.

Can you give me access to Mozilla's run of Coverity?
We are encountering the same issue unfortunately on the scan service from Coverity. It's been down for a while now.

Blocks: 1524102
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: