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 <slightly...@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 <yoavwe...@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 <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?
>>>>>
>>>>
>>>> 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 |
>>>>>>>>> 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/CAD649j6eHWQmUV-_BMKeYsMULXNJm_4cBoAxspetm-eupgi9Yw%40mail.gmail.com.

Reply via email to