Skip to content

v0.6.20

Compare
Choose a tag to compare
@github-actions github-actions released this 24 Apr 14:56
  • Added language_code definition for GF_Latin_PriAfrican to allow shaping tests
  • Added glyphsets coverage CLI command that prints a font's glyphset coverages
  • Reworked glyphset coverage calculation in get_glyphsets_fulfilled(); now based on characters per glyphset that are unique when compared to GF_Latin_Core.

Coverage Calculation Changes in Detail:

Previously, the coverage percentage as returned by get_glyphsets_fulfilled() would calculate all the font’s characters as a percentage of a glyphset’s total characters. Fontbakery (among others) would then treat a glyphset as covered as soon as 80% of characters are present.

This generally worked, but created unwelcome overlaps as soon as glyphsets were too similar to each other. The newly redefined GF_Latin_PriAfrican glyphset, for example, has only 34 additional characters compared to GF_Latin_Core, as revealed by the command glyphsets compare GF_Latin_Core GF_Latin_PriAfrican.

GF_Latin_Core on the other hand currently has 324 glyphs, and so a font that covers GF_Latin_Core also covers 90% of GF_Latin_PriAfrican and would therefore be counted as supporting GF_Latin_PriAfrican by accident, without actually supporting it, resulting in loads of unwelcome reports by Fontbakery’s shape_languages check.

The new calculation is based solely on additional characters when compared to GF_Latin_Core. Similar to the compare command, additional characters are calculated in a first step (Ŋ ŋ Ɓ Ɔ Ɗ Ɛ Ƙ ƙ Ɲ Ƴ ƴ Ǹ ǹ ɓ ɔ ɗ ɛ ɲ Ḿ ḿ Ṅ ṅ Ṣ ṣ Ẹ ẹ Ị ị Ọ ọ Ụ ụ for GF_Latin_PriAfrican vs GF_Latin_Core), and then it is calculated how many of those characters a font supports, which is a significantly more accurate calculation.

Since get_glyphsets_fulfilled() is hosted here inside glyphsets, no changes to external implementations are required as the API didn't change, only the calculation of the percentage. Fontbakery still uses 80% as the threshold, but now based on a more accurate calculation.