On Wed, Apr 13, 2022 at 6:46 PM Joshua Bell <jsb...@google.com> wrote:
> On Wed, Apr 13, 2022 at 6:36 AM Yoav Weiss <yoavwe...@chromium.org> wrote: > >> Also, any learnings/feedback from the Origin Trial? >> >> > Not distinct from the dev trial (i.e. developers trying the API behind a > flag). There was a feature request for additional metadata which was > implemented, then the request was withdrawn so that code was backed out. > Other requests are marked as "enhancements" in the issue tracker, e.g. font > modification timestamps. > > >> On Wednesday, April 13, 2022 at 3:35:02 PM UTC+2 Yoav Weiss wrote: >> >>> On Friday, April 8, 2022 at 8:15:42 PM UTC+2 Ajay Rahatekar wrote: >>> >>>> 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 >>>> >>> >>> https://github.com/WICG/local-font-access/issues/20 and >>> https://github.com/WICG/local-font-access/issues/19 are still open and >>> seem to be increasing the interop risk here. Can you expand on plans to >>> resolve them? >>> >> > https://github.com/WICG/local-font-access/issues/81 is also related and > comes down to: how much do we shield the web app from the contents of font > files? At one extreme, the data is normalized into some strict subset, > stripping features. At the other, they are treated like files. When we > started exploring the API we started in the middle exposing the font data > in a more structured way (e.g. tables), but this (1) would lock the API > into current font formats/concepts and (2) all sites planning to use the > API are using common libraries that consume entire files, which already > have robust parsing. So we lean heavily into the "treat them like files" - > provide the data and get out of the way of the sites/libraries to use the > rich data, similar to uploading images. > So, no normalization happens on the font files? Is that reflected in the spec? Did you get any feedback on that approach from the folks that chimed in on the issues? > > The API shape takes an options object, which would allow adding a filter > for font file formats in the future, e.g. {accept: ["font/ttf", "font/off", > "font/woff", "font/woff2"]}, so that sites could limit what types are > provided. I could imagine us adding that and providing a default like the > above if new formats become supported by the web but that might "surprise" > sites. > > >> >>> >>>> 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 >>>> >>> >>> Are we planning to monitor potential abuse of the API? (e.g. random >>> sites requesting access-to-fonts permissions) >>> >>> >>>> Mitigations to existing passive fingerprinting vectors using local >>>> fonts (i.e. via CSS and Canvas) >>>> >>> >>> Aside, but I don't know that I'd consider those passive. >>> >>> >>>> 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/CAL5BFfUdXwAxJH%3DL_%3DuAoPaKuVewkgOTRR%3DFHQu3SYyA1a1zeg%40mail.gmail.com.