Intent to Implement: Font Table Access

83 views
Skip to first unread message

Chase Phillips

unread,
Aug 21, 2019, 3:17:21 PM8/21/19
to blink-dev
c...@chromium.org,jsb...@chromium.org https://github.com/inexorabletash/font-table-access/ TBD https://github.com/w3ctag/design-reviews/issues/400 Today, no API exists to offer web applications precise table data stored within local fonts. The proposed font table access API gives web applications the ability to get this table data in order to render fonts directly within their application. Font table access is a missing capability that has prevented modern web apps from making full use of the web platform. Professional design apps that need pixel-identical text rendering across platforms use libraries such as HarfBuzz and FreeType compiled to WASM to accomplish this. For design apps built for the web that want to use local fonts, they currently require users upload their fonts to a server and from there send the font's raw bytes to their client app for handling by the text shaping libraries. In other cases, web apps ask users to install a separate local program that provides additional capabilities like font enumeration and offers local font table data to the app. The font table access API will let a web app get access to a local font's table data to allow interacting with the fonts in a way that doesn't require these workarounds.
This API has been designed to support feature detection to allow applications to gracefully degrade based on the capabilities different user agents offer. If this feature were removed from the platform sites would lose the ability to retrieve font table data but otherwise are expected to continue to function. Firefox: No public signals Edge: No public signals Safari: No public signals Web developers: Strongly positive (https://crbug.com/535764#c2) Very positive support from web applications that interact with local fonts, such as Figma. (The linked bug originally referred to both enumeration and table access together.) This feature will frequently be used in tandem with the Font Enumeration API, which is another newly proposed API. Font Table Access can be used outside of Font Enumeration, which is why they are being proposed separately. Content for this API is available immediately since the API uses locally-installed fonts that are already present on the user's system. Usage of this API by an average web developer will require additional text shaping software that would render fonts based on data returned by this API. (eg. a Harfbuzz-in-WASM library) The API provides access to table data in local fonts which can expose additional information about a user's installed configuration to a web application. This new API is behind a permission prompt, making this an active fingerprinting target. See the TAG review's security and privacy questionnaire for more info: https://github.com/inexorabletash/font-table-access/blob/master/security-privacy.md
No special considerations. Yes All Blink platforms make use of local fonts, so this feature is useful on all platforms. No TBD https://www.chromestatus.com/feature/5082047209013248
Reply all
Reply to author
Forward
0 new messages