boring-expansion-spec
boring-expansion-spec copied to clipboard
Proposed changes based on August Portland f2f
Based on the all-day discussion around the beyond-64k and glyf2 proposals, here's the list of technical suggestions for how to proceed:
-
New table
GLYF/LOCAthat have the same format as existingglyf/loca, but can support 24-bit glyph indices. All the beyond-64k and glyf2 proposed changes will go into the newGLYF/LOCA. That is:- The number of glyphs in the font will be deduces from either
LOCAtable, or from the num-CharStrings from theCFF2table, GLYFtable regular composites have to usenumContours=-1exactly, and will be extended as already proposed to support 24bit GIDs.GLYFtable simple glyphs can use a mix of quadratic and cubic curves and already proposed.GLYFtable VariableComposites will use `numContours=-2 and work as proposed.gvartable will be used forGLYFtable variations, as already proposed. This means that if there's bothglyftable andGLYFtable present, then need to match on the legacy part. Alternatively a newGVARtable can be used.
- The number of glyphs in the font will be deduces from either
-
New
HMTX/VMTXtables that have the exact same format as existinghmtx/vmtx, except thatnumberOfHMetricswill be deduces from the length of the table and number of glyphs in the font. So there won't be any newhhea/vheaparallel tables. -
GSUB/GPOS/GDEFtable proposed changes stay as is.
Humm. Need to modify VarComposite glyf format to accommodate hinting.
It would be nice to state that implementations must support avar2 if they support the new glyph tables to ensure it's safe to assume if GLYF/LOCA work so does avar2, make it a clear implementation error to use the identity avar with the new glyph tables when avar2 is present.
(I realize implementations can do whatever they like, but a nudge that way can't hurt)
@rsheeter you can't really say, implementations must (shall) support technically-unrelated feature X if they support Y, in a spec - to do so weakens the spec. However, it's possible to have a conformance requirement “Font processors claiming to conform to OFF 2024 must implement the GLYF table, support 24-bit glyph IDs, AVAR version 2, and also the DSIG table.” In practice, some test cases (sample fonts) may be a better approach though, because i don’t think many users care about conformance at this level of the stack. In particular it doesn’t really make sense to talk about support or conformance without tests.