Intent to Ship: Open Font Format avar2 text shaping and glyph rendering

21 views
Skip to first unread message

Dominik Röttsches

unread,
9:57 AM (7 hours ago) 9:57 AM
to blink-dev
Contact emails
dr...@chromium.org

Explainer
https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md

Specification
https://www.iso.org/standard/87621.html

Summary
Version 2 of the avar (Axis Variations) table enables font designers to create variable fonts with better control over interpolation. While the original variable font spec handles axes independently, avar2 allows axes to influence one another. 

This leads to fonts that are easier to use for content authors to use, and enable compact storage. 

Support for this feature in Blink means at the core, activating a compile flag in HarfBuzz that processes the version 2 additional fields of the avar table to extend axis variations processing.

Avar2 works by using the same familiar concepts of font variations, but applying the variable delta values to the design axis specifications itself.  Plus, it allows doing this over a range of multiple axes. 

As an example, it allows the creation of "meta sliders" which control multiple variation axes at once, alleviating the user from fine-tuning and finding a useful corner of the font's design space. 

Avar2 gives font designers better control over the usable variation space of their font, and allows coordinating the adjustment of design axes across several axes. By defining the relationships between axes mathematically within the avar version 2 table, fonts can achieve complex designs with fewer masters, leading to smaller file sizes, because the interpolation is stored more efficiently.

Blink component
Blink>Fonts

Web Feature ID
font-variation-settings

Motivation
Provide interoperability for this new feature of the of the Open Font Format font standard.

Initial public proposal
No information provided

TAG review
Not needed, as it is not a W3C spec, but ISO/OFF spec.

TAG review status
Not applicable

Goals for experimentation
None

Risks


Interoperability and Compatibility
Low, Safari and FireFox have shipped the feature. The change to add this feature adds WPT tests that perform basic interop tests which Safari and FireFox seem to handle correctly.

Gecko: Shipped/Shipping Tests show that avar2 support is present in FireFox. Shaping and glyph variations work (tested on Linux).

WebKit: Shipped/Shipping Tests show that Safari ships avar2 by means of support in the OS' CoreText libraries. Avar2 shaping and glyph variations work.

Web developers: Positive

Other signals: Google Fonts as an internal stake holder is keen on having this feature available on the web for optimising future fonts.

Activation
With the avar2 font-tech feature definition in https://drafts.csswg.org/css-fonts-5/#font-technologies-formats it is possible for authors to implement graceful degradation. Only if the UA understands the technology(avar2) attribute, it would load and use such a font.

Security
We pass all avar2 web fonts to Fontations, which actually increases security over using system rasterizers.

WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?

No specific WebView risks.


Debuggability
Not applicable here, DevTools does not descend into sub features of Open Font Format or OpenType fonts and their activation.

Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
Yes

Is this feature fully tested by web-platform-tests?
Yes
Covered by several WPT tests added as part of enabling avar2.

Flag name on about://flags
No information provided

Finch feature name
No information provided

Non-finch justification
It is not possible to have a cleanly isolating RuntimeEnabledFeature flag for the launch of this feature. The tech(avar2) support can be gated, which controls whether the UA selects an avar2 font if it is tagged as such.
HarfBuzz (where shaping support for avar2 is implemented) only allows this as a compile time feature. Fontations (where glyph rendering support for avar2 is implemented) has no switch and we were already shipping glyhph variant support for this feature when switching to Fontations.


Rollout plan
Will ship enabled for all users

Requires code in //chrome?
False

Tracking bug
https://crbug.com/40246300

Measurement
Blink.Fonts.VariableFontsRatio metric measures different font format's instantiation ratios. This covers avar2 and shows the proportion of avar2 fonts among all web fonts.

Availability expectation
Across browsers.

Estimated milestones
Shipping on desktop148
Shipping on Android148
Shipping on WebView148


Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., changing to naming or structure of the API in a non-backward-compatible way).

No information provided

Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5169590743203840?gate=6513397493530624

This intent message was generated by Chrome Platform Status.

Dominik Röttsches

unread,
10:27 AM (6 hours ago) 10:27 AM
to blink-dev, dr...@chromium.org
> Specification
https://www.iso.org/standard/87621.html

As for specification details,  avar2 is part of the draft of the 5th edition draft, ISO/IEC FDIS 14496-22 . https://www.iso.org/standard/87621.html in Section 7.3.1. avar.
Reply all
Reply to author
Forward
0 new messages