I’ve noticed a difference between fonts exported from the same .glyphs file (format version 3.5), once with Glyphs 4.1.1 (4108) and once with Glyphs 3.
WHAT HAPPENS
Combining marks typed after a letter (e.g. A + U+0308 or a + U+0323) aren’t positioned in Affinity when the font was exported from Glyphs 4. The marks sit next to the letter instead of on it. The same file exported from Glyphs 3 works in Affinity 3.0.3. In FontGauntlet (HarfBuzz), both exports work.
THE CAUSE
The GPOS table is byte-for-byte identical in both exports (same checksum and length). The difference is in the GDEF table (compared with ttx):
- Glyphs 3 export: all letters and other glyphs with anchors are listed as base glyphs (class 1).
- Glyphs 4 export: there are no base glyphs at all. Only marks (class 3) and ligatures (class 2) are listed. Ldot, ldot and uni2116 (numero sign) are listed as ligatures, even though they serve as bases in the mark feature. In Glyphs 3 they have class 1.
Glyphs that aren’t listed get class 0. HarfBuzz treats these as bases, whereas Affinity apparently only attaches marks to glyphs that are explicitly classed as bases.
A SECOND, SMALLER PROBLEM
The mkmk lookup uses a mark filtering set. In the Glyphs 4 export, this set contains only uni031B. As a result, the lookup can never apply, because uni0304 (the mark it attaches to) is filtered out. The Glyphs 3 export correctly contains [uni0304 uni031B].
WORKAROUND
For now, I’m exporting from Glyphs 3 or fixing the GDEF table after export with fontTools. I’m happy to send both GDEF dumps (ttx) along.
Would it be possible for Glyphs 4 to behave the same way as Glyphs 3?
TTX.zip (8.5 KB)