Closed
Description
Once we get #806 merged, we'll be into the home stretch of matching fontmake for oswald. This issue is intended to track the remaining sources of difference.
Diffs in the normalized markkern
layout-normalizer output:
- bigraphs: there is a difference in anchor propagation between fontmake & fontc for glyphs with multiple base components that are not ligatures. The best issue for this is issues with composites' anchor propagation glyphsLib#368 (comment). I believe cosimo has a fix ready for fontmake.
- anchor propagation for marks: Anchor propagation behaviour differs between fontmake & fontc for some mark glyphs, which causes fontc to treat certain spacing non-combining marks in oswald as bases for the mark feature. (Difference in anchor propagation & GDEF classification for some glyphs in oswald #811)
- marks for glyphs with no glyph category: in glyphs2fontir we were failing to treat glyphs with no (glyphs.app) category as bases where appropriate. fixed in [glyphs] Glyphs with no category can still be bases #846
Diffs in GPOS.ttx
- there are various diffs here that were the original impetus for layout-normalizer: some lookups have different ids for instance, and delta indexes differ. I think long term we want to just use normalizer on this full table, and ignore it?
Diffs in GSUB.ttx
- fontmake is generating an additional
ccmp
feature (two total), but this looks like a bug in fontmake, since the additional feature seems to be identical to the other one, except for a duplicate entry for one lookup? (fixed in [feaLib] don't reference same lookup multiple times within the same feature fonttools/fonttools#3520) - fontc and fontmake are choosing different formats for a contextual lookup. Looks like this is related to suboptimal inline multiple substitution lookup reuse; explanation at [feaLib] possibly suboptimal compilation of inline multiple substitution rules fonttools/fonttools#3551 and improvement for fontc at [fea-rs] More reuse of lookups for inline multisub rules #842.
- various other differences similar to GPOS, where some ids are different. I think like with GPOS, the answer here is going to be to just improve layout-normalizer and ignore this table (support GSUB in layout-normalizer #800)
Diffs in GDEF.ttx
- missing the ligature caret table: (Generate ligature caret table #809)
- some differences in the GDEF categories; I'm not actually sure how we're generating these, it might be that we're sort of getting it by accident via fea-rs? Some of these differences are related to things like the different handling of digraphs, others will need a bit of investigation. ([marks] Generate GDEF class definitions when none exist #805)
- the ItemVariationStore differs significantly, but this is probably mostly the result of the GPOS diffs, where we have more deltas because we have more items/rules; we can revisit this after GPOS is matching.