Status

()

defect
P3
normal
RESOLVED FIXED
7 months ago
4 months ago

People

(Reporter: ionnv, Assigned: RyanVM)

Tracking

unspecified
mozilla66
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox66 fixed)

Details

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

Attachments

(2 attachments)

Reporter

Description

7 months ago
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.
Reporter

Updated

7 months ago
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.
Assignee

Comment 2

7 months ago
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
Assignee

Updated

7 months ago
Whiteboard: [third-party-lib-audit][gfx-noted]
Reporter

Comment 3

7 months ago
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
Assignee

Comment 5

7 months ago
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
Assignee

Comment 7

7 months ago
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
Reporter

Comment 9

6 months ago
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
Assignee

Comment 11

6 months ago
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
Assignee

Comment 12

6 months ago
No new issues with 2.2.0. Just the MSVC Werror bustage still.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=ee04ab3f3ce2bf8c710ad5bbbd60a876beaf6c12
When we're ready to take the harfbuzz update, this should fix the issue of the deprecation warnings.
Assignee

Comment 14

5 months ago
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.
Assignee

Comment 16

5 months ago
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+

Comment 20

5 months ago
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)

Comment 21

5 months ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/2d077b8e0b5b
https://hg.mozilla.org/mozilla-central/rev/27730939a138
Status: NEW → RESOLVED
Last Resolved: 5 months 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
Assignee

Comment 23

5 months ago
(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)

Comment 24

5 months ago
> 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

Comment 26

5 months ago

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.

Assignee

Updated

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