Contact emails ds...@chromium.org, jsb...@chromium.org
Explainer https://github.com/WICG/local-font-access Specification https://wicg.github.io/local-font-access/ Design docsDesign Doc: https://bit.ly/2HWBOLi <https://chromestatus.com/admin/features/launch/6234451761692672/Design%20Doc:%20https://bit.ly/2HWBOLi> Blog: https://web.dev/local-fonts/ Summary Gives web applications the ability to enumerate local fonts and some metadata about each. Today, no API exists to provide a list of local fonts to web applications. Also gives web applications access to the font data as a binary blob, allowing those fonts to be rendered within their applications using custom text stacks. Blink component Blink>Fonts <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EFonts> TAG review https://github.com/w3ctag/design-reviews/issues/400 TAG review status Pending RisksInteroperability and Compatibility This API has been designed to support feature detection to allow applications to gracefully degrade based on the capabilities different user agents offer. We expect developers using this API to design their web applications to use web-based fonts as the primary set of font choices, but allow users to opt-in to take advantage of their local fonts for specific design needs. If this feature were removed from the platform, web applications would lose the ability to enumerate local fonts and retrieve font data but otherwise are expected to continue to function. Gecko: https://github.com/mozilla/standards-positions/issues/401 WebKit: https://lists.webkit.org/pipermail/webkit-dev/2022-April/032176.html Web developers: Strongly positive (https://crbug.com/535764#c2) Very positive support from web applications that interact with local fonts, such as Figma. Adopted by: Boxy SVG <https://boxy-svg.com/app> Other signals: Ergonomics The feature builds both enumeration and data access into the same new API. Separation was considered but rejected. (See the Explainer for more details.) That may limit use. Activation Developers will be able to take advantage of this feature immediately since it uses the same available local fonts that other native applications have access to. The API makes it possible for web developers to implement a font picker (either UI-driven or algorithmic) and API usage will see more traction once popular UI libraries build font pickers on top of it. 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 is designed to support additional functionality in the future. Several such additions are under consideration: - Querying for a "system UI" font, for web applications that render text with their own text stack and need access to the full font data, but wish to match the local system appearance. This would be equivalent to the CSS "system-ui" generic font family <https://chromestatus.com/feature/5640395337760768>. - Querying for only "low entropy" fonts, i.e. fonts that are part of the operating system base installation. - Querying font metadata in specific languages. Fonts often contain metadata with language tags, but OS APIs for enumerating fonts typically return only the metadata for the active language. - Providing additional metadata or events to notify web apps of changes to fonts, to refresh caches. Security The API provides access to full font 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/wicg/local-font-access/blob/master/security-privacy.md Mitigations to existing passive fingerprinting vectors using local fonts (i.e. via CSS and Canvas) have been considered in non-Chromium-based browsers, and should be considered for Chrome as well, but are outside the scope of this I2S. In light of those existing vectors, we do not believe this new API contributes meaningfully to new fingerprintability, and we assert that future privacy enhancements should be applied equally across all font-based vectors. 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? This API does not change the behavior of any other existing APIs. Debuggability No special considerations. Is this feature fully tested by web-platform-tests <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md> ? No Flag name font-access Requires code in //chrome? False Tracking bug https://crbug.com/535764 Estimated milestones OriginTrial desktop last 90 OriginTrial desktop first 87 We aim to ship in 102 Link to entry on the Chrome Platform Status https://chromestatus.com/feature/6234451761692672 Links to previous Intent discussions Intent to Experiment: https://groups.google.com/a/chromium.org/g/blink-dev/c/3MW3ngOsUOk/m/iE0Bvg-6AwAJ This intent message was generated by Chrome Platform Status <https://chromestatus.com/>. -- Ajay Rahatekar | Technical Program Manager | ajayrahate...@google.com | 650-797-1279 <(650)%20650-797-1279> -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHB%2BDAixuJx20aCUMPGQsq_13Xo8v-%2BfQnKd15R11-M7CWMXRA%40mail.gmail.com.