W3C

– DRAFT –
Web Fonts Working Group Teleconference

14 December 2021

Attendees

Present
Garret, Myles, Vlad
Regrets
-
Chair
Vlad
Scribe
Garret

Meeting minutes

Vlad: issue 63

Vlad: probably connected to 56

Vlad: client would need to send the patchsubset request so the server can act upon it immediately.

Vlad: if request doesn't include patch subset info then you can use it.

Myles: if the client doesn't include the info for patch subset it can't respond w/ patch subset. If the client wants either it needs the info for both.

Vlad: first request needs enough info the server can come back with either.

<myles> Garret: I don't think range reques tneeds anything specific. It just needs to say "here's the font url please send me the font"

myles: client can choose, there's two approaches. First request the client just starts streaming and can make subsequent requests while streaming. or it can guess at what an initial range request is.

myles: so if it's guessing it has to send initial range request and patch subset request in the first request.

myles: I think this is a better solution to the "server recommeneded ift" selection

myles: if we have a model where the client tells the server x, they need to know that info before sending an initial request. So I think having the client send both and let the server pick.

myles: instead of adding an extra round trip. So this issue superceeds issue 56.

Garret: close 56 and move discussion to this one?

Vlad: yes

<myles> Garret: With respect to this one, let's add that extra column to the matrix, and then we have a way forward to fill that in. There's no changes needed to the behaviors.

Myles: yes, that's already facilities to have the client send both.

Myles: right now this table is non-normative.

Myles: probably need to add something to a previous section that the server will have to pick if both are sent.

<myles> Garret: Once the range request is merged into the doc, this table can be central to both methods

Myles: re: one two or three specs. Everyone agrees there should be one, but we need a second docuemnt temporarily so we can have another FPWD

Vlad: so each document will be published seperately, once patent exclusion opportunity is closed we'll merge.

Vlad: issue 56 is closed.

Vlad: 61

Myles: just a tracking issue. Think is reasonable to give a recommendation of a suggested ordering.

Myles: interesting that the suggested ordering is an ordering of codepoints. So it only really makes sense for CJK, that's probably fine.

Myles: I'll get this data from the corpus Garret published. Running a program and getting some orderings and adding to the appendix

Vlad: 60 we can postpone until later.

Vlad: 59, if we can package the original file without brotli and no transforms it would be misleading to call it a woff2 file. We should be open, if you have woff2 file you probably won't be able to use it with range request. Run it through the optimizer and then use it.

Myles: I don't think I'm at the point where I can say can't yet. Do want to be honest, it's likely that opentype/truetype will work better. I just think the word can't is a little strong.

Vlad: I'm talking about woff2 files in existence which will have both transformed and brotli compresssion. Neither of which can be randomly accessed. So you need the full decompression to get something actionable.

Myles: brotli is macro block compression so you can get by blocks and we don't know yet what's typical for fonts that already exist.

Vlad: 58

Vlad: can suggest something to add to the current or future draft. To describe ways the smart server can improve on range request method, specifically when composite fonts are in use. Smart server can help.

Vlad: could have a section which is not normative but gives some ideas of what can be done to improve things. Leave it open added so implementations can add value and compete.

Myles: normative part should be if the server responds with different ranges the client should handle that.

Vlad: when it comes to normative parts, client is a construct that constitutes author choices executed by user agent.

Vlad: so normative parts can only be on the user agent.

Myles: happy to change the language but for now will use server/client. If the server sends a range other than what the client requested it should handle that in some way and not crash.

Vlad: just want to be specific when making normative statements to use user agent and not client.

Vlad: so that was something as a comment for issue 57

Vlad: need to seperate authors, clients, and user agents.

Vlad: once the browser reads the css file with font face that's when request is generated.

Myles: how it works is the opt in mechanism is the tech(incremental) and it's up to the user agent to decide which method and an ambivalent client to leave it up to the server.

Vlad: can leave issue open and continue discussion

Myles: issue 51, will create new issue to update range request to describe requests in terms of fetch like patch subset

Myles: added labels, if labelled with a method that means the fix requires text edits specific to that method. Can have either label, both, or neither.

Garret: sounds good, let's stick with that for now.

<myles> Garret: Issue 50: this is about mandating extra code points. This needs more thought. We need some kind of proposal. I'm still not sure what the best way to do this is.

<myles> Vlad: We may not know what is the best way to do this. It may be up to authors / implementors.

<myles> Garret: I think it's goign to be hard to come up wtih a specific recommendation that works well, so we'll have to balance to recommend enough that it works bnot not clamping down too hard.

<myles> Vlad: I think the best way is to raise awareness

<myles> myles: I think we can pick sensible minimums

vlad: Myles your point was good that there isn't a single sensible minimum.

Myles: we need to incorporate that into any solution.

Vlad: at minimum we need enough in the spec to raise awareness.

Myles: instead of publishing a list of numbers, we can publish an algorithm that given a script will produce a minimum.

Myles: want to make sure it's clear the implementers can choose more or less privacy. It shouldn't dictate the exact number or the characters that should get added. Should be a range with bounds though.

Vlad: interesting thing, composite glyphs can give some amount of privacy.

Myles: for components you also need to request the composed glyph too.

Vlad: the components may or may not be characters. So when you request components there's not necessarily meaning associated with it.

Myles: the claim that I'm making is the browser nevers requests just the component, it will also need to reference the real character associated.

Vlad: for range request you are only requesting glyphs so you have to do a reverse lookup through the cmap.

Vlad: in patch subset when we ask for characters we are getting close to the state where privacy is an issue.

Vlad: with range request when you request a range of glyphs without reverse lookup you don't know what they are.

<myles> Garret: issue 49. We can close this. I removed the connection speed field from the spec. It's up to the client.

<myles> Vlad: This was opened by peter as part of the review, should we ask him ...

<myles> Garret: He LGTM'ed the PR>

<myles> Garret: I can close the issue and ask him to re-open if he wants.

<myles> Vlad: OK. let's do that.

<myles> Garret: We can close issue 43, because using fetch should solve this. I'll comment to ask if that's correct.

<myles> Garret: It sounds like Chris was already asking this. I'll comment again in case they missed that.

<myles> Garret: For issue 42, we're waiting for a response from the original author. Not sure if there's anythign to do just yet.

<myles> Vlad: I was looking through the list of issues and realized the issue I opened about supporting both issues, I made the same mistake about referring to "client" so I edited the title following my own comment about how we need to be specific.

<myles> Garret: I think most of the remaining issues, there's not much to talk about. Most of them are just checklists.

Discussion on issue 28, font collections.

Myles: font-face as it currently exists is identifying a specific font within the collection.

Garret: so then it's probably natural to have patch/subset operate at the same granularity. ie. one request is specifying the subset for one font within the colleciton.

Myles: range request works even if the different font uses different glyph tables as long as those are all at the end.

Vlad: Jan. 11th will be next call.

Minutes manually created (not a transcript), formatted by scribe.perl version 185 (Thu Dec 2 18:51:55 2021 UTC).

Diagnostics

No scribenick or scribe found. Guessed: Garret