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/52e03101-c60d-45f5-af43-ddf41bbc277dn%40chromium.org.

Reply via email to