LGTM3
On Wed, May 11, 2022 at 5:02 PM Yoav Weiss <yoavwe...@chromium.org> wrote: > 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 > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/f4786591-4aad-474f-9977-d2e2f796c659n%40chromium.org?utm_medium=email&utm_source=footer> > . > -- TAMURA Kent Software Engineer, Google -- 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/CAGH7WqHf0ZdL72k3nLFDHTOAPid5Ksc22DSbvzJWFVAj5GiPzQ%40mail.gmail.com.