LGTM2 Thanks for pushing forward the discussions, and landing the spec in a good place from an interop perspective.
On Monday, May 9, 2022 at 7:20:53 PM UTC+2 Ajay Rahatekar wrote: > Hello API Owners, > > Please let us know if there are any outstanding concerns apart from the > discussion on the Mozilla position > <https://github.com/mozilla/standards-positions/issues/401#issuecomment-1115057239>, > > that we can address. The team is targeting M103 for shipping this api. > > Thanks for all your help and guidance. > > -Ajay > > On Wednesday, May 4, 2022 at 8:37:03 AM UTC-7 sligh...@chromium.org wrote: > >> I LGTM'd in the tool but it didn't show up here, but y'all have my +1. >> Thanks for getting this done. >> >> On Thursday, April 28, 2022 at 5:01:51 PM UTC-7 Joshua Bell wrote: >> > FYI, non-normative note added. I also followed up on the questions in the >>> Moz standards position thread, added a few more notes to the spec as well. >>> >>> On Wed, Apr 27, 2022 at 9:01 AM Alex Russell <sligh...@chromium.org> >>> wrote: >>> >> A non-normative note in the spec sounds good. Wouldn't want to block >>>> shipping on it. >>>> >>>> On Wednesday, April 27, 2022 at 2:05:53 AM UTC-7 Yoav Weiss wrote: >>>> >>> If we're going with exposing byte-by-byte representation of the fonts on >>>>> the user's filesystem, we should make that slightly more explicit. Maybe >>>>> add a note to >>>>> https://wicg.github.io/local-font-access/#font-representation-data-bytes >>>>> clarifying that point? >>>>> >>>>> I *think* that lack of normalization should resolve the issues Anne >>>>> was concerned about in >>>>> https://github.com/WICG/local-font-access/issues/20, where different >>>>> normalization algorithms result in compatibility issues. I also *think* >>>>> it >>>>> should resolve Tess' concerns RE user assumptions of the fonts being >>>>> Open-Type. Can you clarify those points with them? >>>>> >>>>> On Monday, April 25, 2022 at 6:12:00 PM UTC+2 Alex Russell wrote: >>>>> >>>> Normalisation isn't usually a goal for users that want the actual bytes >>>>>> of the local font in order to do the rendering themselves and can be an >>>>>> active non-goal given the ways that folks want to do custom grouping, >>>>>> enumeration, and rendering. Partners have consistently asked us not to >>>>>> remove information and I've never heard of a request for normalisation >>>>>> from >>>>>> a partner. >>>>>> >>>>>> This is in line with not adding OTS sanitisation for these files (we >>>>>> don't need to when the OS rendering pipeline isn't at potential risk), >>>>>> and >>>>>> highlights the way that the current design is isomorphic with local file >>>>>> access. >>>>>> >>>>>> I've LGTM'd it in the tool as a result. >>>>>> >>>>>> Thanks to everyone at Google for continuing to push this forward. >>>>>> >>>>>> Best Regards, >>>>>> >>>>>> Alex >>>>>> >>>>>> On Thursday, April 21, 2022 at 9:46:15 AM UTC-7 Joshua Bell wrote: >>>>>> >>>>> On Wed, Apr 20, 2022 at 4:21 AM Yoav Weiss <yoav...@chromium.org> >>>>>>> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> 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 <yoav...@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? >>>>>>>> >>>>>>> That is correct. The spec text is currently agnostic about what >>>>>>> happens. It could be made more forceful, e.g. that UAs are not required >>>>>>> to >>>>>>> normalize data, and that consumers of the API should code defensively. >>>>>>> >>>>>>> Folks that chimed in on the issues represented the spread of >>>>>>> thoughts, from not wanting to assume anything about fonts (which would >>>>>>> preclude future innovation) to considering a lack of normalization a >>>>>>> flaw, >>>>>>> even for image uploads. I haven't had a chance to respond in detail. >>>>>>> "Normalization" could imply many things, from rearranging elements >>>>>>> within >>>>>>> general container formats (e.g. JFIF marker segments for images, SNFT >>>>>>> tables for fonts, MP4 data streams and captioning for audio/video) to >>>>>>> dropping elements (e.g. EXIF metadata in images, COLRv1 or Variable >>>>>>> support >>>>>>> in fonts, text captions from video) attempting to transcode (e.g. >>>>>>> lossily >>>>>>> converting an SVG image to a PNG, or SVG font to OTF). The consumers of >>>>>>> the >>>>>>> API, on behalf of users, expressly do not want to lose fidelity of the >>>>>>> fonts, so that designers creating content have access to tools as >>>>>>> powerful >>>>>>> as native. >>>>>>> >>>>>> >>>>>>>>> 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 | >>>>>>>>>>>> ajayra...@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/f4786591-4aad-474f-9977-d2e2f796c659n%40chromium.org.