googlefonts / roboto-classic

Development of a Roboto Variable font
SIL Open Font License 1.1
151 stars 15 forks source link

File size diet test: issue with features, groups, kerning #48

Closed sannorozco closed 4 years ago

sannorozco commented 4 years ago

Features Roboto has a lot of opentype features, so how will these be updated on the fly? This is a big one, since features needs to be compiled for each master, and I’m not sure if HarfBuzz can add the new rendered glyphs to its features?

Groups & Kerning If say, /Aacute is rendered, how it will be added to the /A left and right groups to apply the kerning?

khaledhosny commented 4 years ago

Harfbuzz will decompose the Unicode character for /Aacute into two glyphs /A and /acutecomb, so kerning and other OpenType features for /A will apply (some lookups will need IgnoreMarks lookup flag for this to work).

HarfBuzz does not create new glyphs, it will be basically essentially as if the input was /A/acutecomb.

The tricky part is when there are OpenType feature specific to the composite glyph, e.g. a kerning pair specific to /Aacute, as this will need to be done as a contextual positioning lookup by the font (but it should be possible to do this by a script that examines the existing sources and build such positioning data).

This also does not depend on glyph names in anyway, HarfBuzz applies Unicode normalization which uses Unicode code points.

brawer commented 4 years ago

@sannorozco, OpenType has a lookupflag which might come in handy here, especially if you want to keep your GPOS tables small.