notofonts / latin-greek-cyrillic

Noto Latin, Greek, Cyrillic
SIL Open Font License 1.1
35 stars 7 forks source link

Intention to "sparsify" semibold master #457

Open simoncozens opened 5 months ago

simoncozens commented 5 months ago

"Core" Noto fonts (LGC, Indic, Arabic) were commissioned from Monotype back in the pre-VF days, and were supplied as eight master (four weight, two width) sources. In Noto LGC, we have italic and upright variants for sans and serif, meaning we have a total of 228 + 8 (Mono) = 40 masters. That's a lot, and we have a lot of glyphs in those masters.

So it's worth asking the question, "can we do without any of them?" The Semibold and Semibold Condensed masters seem like an obvious choice for investigation. Extra masters mean additional work when new glyphs are added or glyphs need to be corrected, and more layers mean more opportunities for bugs to creep in. As multiple people work on different sections of Noto fonts, there are different interpretations of what a semibold should look like, and things get out of sync. If we can simplify without losing fidelity, everybody wins. So the question becomes: Are there really enough valuable optical corrections in these semibold masters to justify them staying in the source, or can we remove them entirely, or can we do something perhaps in between?

To answer the question, I wrote a script to quantify the usefulness of the master - i.e. to work out how much deviation there is between the semibold layer of each glyph and the interpolation that would happen automatically if the semibold master was not there. My findings so far have shown that, out of 3920 glyphs in Noto Sans, only around a sixth of them show any visible deviation from the interpolated outlines. That's not many at all.

Many of these glyphs which do show a visible deviation are not actually optical corrections but clear bugs. For example, the underscore glyph in Noto Sans Bold (the semibold master is mapped to the bold instance) is 411 units wide - compared with the Regular (444 units) and the Black (500 units). Nreversedsmall in the Semibold master has a stem width of 106, whereas Nsmall has a stem width of 120, potentially another bug.

What I'm planning to do is not to completely remove the semibold/semibold condensed masters altogether, because I think that would make people sad. Instead, the script I wrote allows me to define a visual cutoff, and everything which is above the visual cutoff (including the bugs!) get moved to a sparse master. So Semibold and Semibold condensed masters go away, but there are intermediate layers which define the outlines which require a tweak compared to the interpolated outlines. Then we can review these later and work out which intermediate layers are bugs and should go away.

This should make it easier to find bugs, reduce the maintenance cost of the fonts, and also reduce the binary file size, without particularly changing the visual appearance of the font. If this works, I'll extend it to Noto Serif and Mono, and then the other core 2x4 Noto fonts.

davelab6 commented 5 months ago

I think this is a good idea