W3C

– DRAFT –
Web Fonts Working Group Teleconference

04 October 2022

Attendees

Present
Garret, jhudson, skef, Vlad
Regrets
-
Chair
-
Scribe
skef

Meeting minutes

<Garret> https://docs.google.com/document/d/1MdtB_WPC2grAx3vFgLHA1-CqRzQtWj_cJYx40W2VQgI/edit#heading=h.dy3wd9u6su7

Speeding up incremental transfer patch generation

What is the current rough cost of patch generation using the current two methods relative to subset generation?

garret will answer in a bit

Different methods of speeding up patching

1) brotli quality parameter (computation vs size)

2) Custom brotli encoding possibilities

(brotli has meta-blocks, which are semi-independent chunks of data. meta-blocks can be produced via different methods)

Case 1: Supporting precompression of file sections that don't change between subsets (e.g. GPOS/GSUB with fixed GIDs)

Can embed chunks that are pre-compressed at higher quality

Case ?: Custom compression and diffing of font tables with a known format

Data summary: "Immutable" layout slower and larger for subsetting, but patches are correspondingly smaller.

Patch generation times are a bit more than double subset generation times for equivalent levels of compression.

Noto sans data: much larger font, correspondingly longer times, but mostly proportional to the times for a smaller font

Brotli level 5 is the minimum for patch generation (probably because of lack of back-tracking at lower levels)

Some preliminary work on generating back-track maps using table-specific knowledge.

Also investigating the possibility of pre-compressing frequently-transmitted-together glyph subsets

Opportunities to speed up HarfBuzz's mode for GID preserving subset generation

<Garret> Data I presented: https://docs.google.com/spreadsheets/d/1Xf2KY4sbR_mSXDRJdO7mKKEBPSEBPmjCYxeqhvLOe7c/edit#gid=1341899720

<Garret> https://github.com/garretrieger/patch-subset-incxfer/blob/custom_brotli/util/brotli_stream.h

<Garret> https://github.com/garretrieger/patch-subset-incxfer/blob/custom_brotli/util/precompress-test.cc

Good to get comparable stats on vcdiff and also just gzipping the patches

<Garret> Take aways: 1. precompression looks useful, provides meaningful speedups in some cases. Also may reduce overall transfer sizes by avoiding patching layout (or other tables0.

<Garret> 2. Brotli quality 5-8 looks like a sweet spot for dynamic use.

<Garret> 3. Lots of potential in the glyf diffing and custom brotli encoder approach, more work is needed to see the full benefits.

Relative to potential PRs: skef has the impression that everything discussed actually fits within the current spec -- ti's all below the level of what we've recorded so far

Minutes manually created (not a transcript), formatted by scribe.perl version 192 (Tue Jun 28 16:55:30 2022 UTC).