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/68cd08ef-7739-4ef3-bfd6-145cd5790f4fn%40chromium.org.

Reply via email to