Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Font Table Access API #400

Closed
3 of 5 tasks
chasephillips opened this issue Aug 7, 2019 · 13 comments
Closed
3 of 5 tasks

Font Table Access API #400

chasephillips opened this issue Aug 7, 2019 · 13 comments
Assignees
Labels
Missing: venue Provenance: Fugu Resolution: unsatisfied The TAG does not feel the design meets required quality standards Review type: CG early review An early review of general direction from a Community Group Topic: fonts Related to fonts on the web, including web fonts and system fonts

Comments

@chasephillips
Copy link

chasephillips commented Aug 7, 2019

こんにちはTAG!

I'm requesting a TAG review of:

Further details:

We recommend the explainer to be in Markdown. On top of the usual information expected in the explainer, it is strongly recommended to add:

  • Links to major pieces of multi-stakeholder review or discussion of this specification:
  • Links to major unresolved issues or opposition with this specification:

We'd prefer the TAG provide feedback as (please select one):

  • open issues in our GitHub repo for each point of feedback
  • open a single issue in our GitHub repo for the entire review
  • leave review feedback as a comment in this issue and @-notify [github usernames]

Please preview the issue and check that the links work before submitting. In particular, if anything links to a URL which requires authentication (e.g. Google document), please make sure anyone with the link can access the document.

¹ For background, see our explanation of how to write a good explainer.

@hober hober added Missing: venue Progress: unreviewed Review type: CG early review An early review of general direction from a Community Group Topic: fonts Related to fonts on the web, including web fonts and system fonts and removed Progress: untriaged labels Aug 9, 2019
@annevk
Copy link
Member

annevk commented Aug 20, 2019

The various non-goals seem like they would make it rather hard for alternative approaches to doing fonts to enter the market or for smaller players with alternative approaches to compete. If even on the same platform the data you get back depends on the implementation it's highly likely sites will code toward a single implementation.

@chasephillips
Copy link
Author

Hi Anne, thanks for taking a look at the table access API. I filed https://github.com/inexorabletash/font-table-access/issues/6 to discuss it further. Let's follow up there.

@plinss plinss added this to the 2019-09-04-telecon milestone Aug 21, 2019
@hober hober self-assigned this Sep 11, 2019
@dbaron
Copy link
Member

dbaron commented Sep 12, 2019

A very brief comment here after looking at #399 -- it seems like there's less additional fingerprinting surface here -- but it's not zero, and worth mentioning. In particular, it seems like there are some changes in fonts that are not detectable on the web today, but would be detectable with raw font table access. Thus this might be providing the additional fingerprinting entropy to distinguish a user with version 1.0.4 of a font from one with version 1.0.5 of the same font in cases where that wasn't detectable today.

Hoping to look more later...

@plinss
Copy link
Member

plinss commented Dec 3, 2019

@hober and I reviewed this at our December F2F, this still feels like it's too low-level of an API and is geared strongly to OpenType fonts, where there are a number of different font technologies in use (and are likely to be more down the road). We'd rather see higher level APIs exposing font metrics and glyph vectors that are font technology agnostic.

@plinss plinss added Progress: pending external feedback The TAG is waiting on response to comments/questions asked by the TAG during the review and removed Progress: unreviewed labels Dec 3, 2019
@alice alice removed this from the 2019-09-10-f2f-tokyo milestone Jan 27, 2020
@atanassov
Copy link

@plinss and I looked at the proposal as part of the March F2F. There isn't any new information or updates in the explainer or relevant issues.
Additional concern here is the dependency on Font Enumeration API and the fact that this proposal isn't progressing anymore.

Given we haven't heard back from the authors, should we consider there is no longer interest of making progress on either of these two proposals?

@inexorabletash
Copy link

re: lack of progress - we deferred work for a while, but are planning to revisit in the very near future.

re: two proposals - we are planning to re-merge the proposals; at one point we thought splitting them made sense to unblock some discussion. Closing one of these out is fine.

@hober
Copy link
Contributor

hober commented May 27, 2020

We (@dbaron @hober @plinss) looked at this again during the TAG F2F this week. We've tried to file issues in the WICG/local-font-access repo which capture each of the concerns that have come up during the several TAG breakouts on these two reviews. Given the lack of engagement in these reviews thus far, we don't see any value in keeping these issues open. Please feel free to ping us to re-open or file a new issue when there are significant changes.

@hober hober closed this as completed May 27, 2020
@inexorabletash
Copy link

inexorabletash commented Feb 25, 2022

Hey @hober - I think we're ready for another go-round on this. Should we re-use this or #399, or open a new issue?

Relative to the above list:

⬆️ I believe these are effectively the same issue, although I may be missing nuance here. These are still fundamental issues, but apply to similar APIs for accessing local resources, e.g. file uploads, such as for images or videos, where web apps must be future-proof against new formats. That might suggest an approach, e.g. allowing (requiring?) web apps to specify accept to identify supported content types, e.g. query({accept: ['font/otf']})

⬆️ Should be resolved.

⬆️ Added.

⬆️ Added.

⬆️ Resolved through allowing passing name list to query().

@inexorabletash
Copy link

@hober @plinss and anyone else - Can we re-open this per the above? We'd love to reboot the discussion here.

@annevk
Copy link
Member

annevk commented Apr 19, 2022

I really don't see the comparison to file uploads. With file uploads we don't provide some kind of normalized access to the underlying file that might differ across browsers. Each browser ends up with the same data.

I suppose what applies is that file uploads expose platform differences to websites, but I would take that as something to improve upon, not as something to imitate.

@torgo torgo modified the milestones: 2020-05-21-f2f, 2022-05-23-week May 10, 2022
@atanassov atanassov self-assigned this May 11, 2022
@torgo torgo modified the milestones: 2022-05-23-week, 2022-06-06-week Jun 4, 2022
@plinss plinss added Progress: in progress and removed Progress: pending external feedback The TAG is waiting on response to comments/questions asked by the TAG during the review labels Jul 11, 2022
@atanassov
Copy link

Hi @inexorabletash, @plinss and I had a chance to go over the updates you linked to - thank you for these and reopening. These are the concerns we have after this review pass:

The expanded fingerprinting issue commit is good, however there is no mitigation suggestions just some info. For example, "in incognito mode, don't expose the fonts" or something similar is what we would generally expect.

It seems you added a choose method, but the mechanism is still of the format "give me all the fonts" and allow user to choose which fonts to expose. What we asked for was - "let the user choose a font and then you get back a font". Exposing all fonts runs into the issue of users just hitting "select all" and move on.

Another concern we have is the exposing the blob function and access to the font raw data. You stated that users of the API will want to provide data to libraries that expect all the fonts. That is the justification for the blob approach. Can you provide examples of such libraries you're talking about? Our assumption was that the goal of such API is to replace those libraries.

@inexorabletash
Copy link

For example, "in incognito mode, don't expose the fonts" or something similar is what we would generally expect.

Thanks - I'll add something. In practice, it might be more subtle than that. Browsers allow file upload in incognito, and exposure of specific fonts seems comparable.

It seems you added a choose method, but the mechanism is still of the format "give me all the fonts" and allow user to choose which fonts to expose. What we asked for was - "let the user choose a font and then you get back a font".

Correct, and understood. We consider it critical to support use cases where multiple fonts - including potentially all local fonts - are provided to the site in one user interaction. We tried to craft an API shape that would allow browsers to support this use case, or alternately (perhaps in more privacy-focused modes, or just different UAs) limit the number of fonts exposed, perhaps to just a single font.

Another concern we have is the exposing the blob function and access to the font raw data. You stated that users of the API will want to provide data to libraries that expect all the fonts. That is the justification for the blob approach. Can you provide examples of such libraries you're talking about?

To clarify: libraries expect the full data for a given font, rather than a subset of tables. An library example is the pairing of HarfBuzz and FreeType, used by many native and (more recently) web applications to implement custom text stacks. These take as input full OpenType font files, and do the table parsing themselves. We did early experiments with APIs that produced only some of the font tables, and to interoperate with existing libraries required glue code that recomposed a full container file from the parts.

Our assumption was that the goal of such API is to replace those libraries.

The goal of the API is to provide the data so that it can be consumed by those libraries.

@atanassov
Copy link

The issues as we see them so far:

  1. there are a number of unresolved issues which have been raised during the course of this review (e.g. #19, #20, #62, etc.)
  2. the fingerprinting risk is quite large here. There's always a tradeoff to be made regarding fingerprinting surface area and new functionality - however in our view the high risk is not commensurate with the benefit in this case.
  3. the API seems to be on a trajectory to ship regardless of our feedback and the other negative feedback surfaced on this issue.

In conclusion: we think we should be more deliberate as stewards of the web platform in terms of how we represent fonts. We don't think this is the right approach to solve these use cases in the context of the wider web.

@atanassov atanassov added Resolution: unsatisfied The TAG does not feel the design meets required quality standards and removed Progress: in progress labels Aug 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Missing: venue Provenance: Fugu Resolution: unsatisfied The TAG does not feel the design meets required quality standards Review type: CG early review An early review of general direction from a Community Group Topic: fonts Related to fonts on the web, including web fonts and system fonts
Projects
None yet
Development

No branches or pull requests

9 participants