v0.6.20
- 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.