If you think a check is flawed or have an idea for a check, please file an issue at https://github.com/fonttools/fontbakery/issues and remember to include a pointer to the repo and branch you're checking.
Summary
| 💥 ERROR | ☠ FATAL | 🔥 FAIL | ⚠️ WARN | ⏩ SKIP | ℹ️ INFO | ✅ PASS |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 5 | 21 | 2 | 75 |
| 0% | 0% | 0% | 5% | 20% | 2% | 73% |
Meaning of check results:
- 💥 An ERROR is something wrong with FontBakery itself, possibly a bug.
- ☠ A FATAL is an extremely severe issue that must be addressed immediately.
- 🔥 A FAIL is a problem with the font that must be fixed.
- ⚠️ A WARN is something that you should consider addressing.
- ℹ️ An INFO result simply prints something useful. Typically stats.
- ✅ A PASS means the font looks good for the given checking routine.
- ⏩ And a SKIP happens when the check does not apply to the given font.
If you get ERRORs, please help us improve the tool by reporting them at our issue tracker.
(but other kinds of bug reports and/or feature requests are also always welcome, of course!)
FontBakery version: 0.12.5
OpenType Specification Checks
⚠️⚠️⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩Checking correctness of monospaced metadata.
There are various metadata in the OpenType spec to specify if a font is monospaced or not. If the font is not truly monospaced, then no monospaced metadata should be set (as sometimes they mistakenly are...)
Requirements for monospace fonts:
-
post.isFixedPitch - "Set to 0 if the font is proportionally spaced, non-zero if the font is not proportionally spaced (monospaced)" (https://www.microsoft.com/typography/otspec/post.htm)
-
hhea.advanceWidthMax must be correct, meaning no glyph's width value is greater. (https://www.microsoft.com/typography/otspec/hhea.htm)
-
OS/2.panose.bProportion must be set to 9 (monospace) on latin text fonts.
-
OS/2.panose.bSpacing must be set to 3 (monospace) on latin hand written or latin symbol fonts.
-
Spec says: "The PANOSE definition contains ten digits each of which currently describes up to sixteen variations. Windows uses bFamilyType, bSerifStyle and bProportion in the font mapper to determine family type. It also uses bProportion to determine if the font is monospaced." (https://www.microsoft.com/typography/otspec/os2.htm#pan https://monotypecom-test.monotype.de/services/pan2)
-
OS/2.xAvgCharWidth must be set accurately. "OS/2.xAvgCharWidth is used when rendering monospaced fonts, at least by Windows GDI" (http://typedrawers.com/discussion/comment/15397/#Comment_15397)
Also we should report an error for glyphs not of average width.
Please also note:
Thomas Phinney told us that a few years ago (as of December 2019), if you gave a font a monospace flag in Panose, Microsoft Word would ignore the actual advance widths and treat it as monospaced.
Source: https://typedrawers.com/discussion/comment/45140/#Comment_45140
- Original proposal: legacy:check/033
⚠️ Lilex-VF.ttf
-
⚠️ WARN
The OpenType spec recomments at https://learn.microsoft.com/en-us/typography/opentype/spec/recom#hhea-table that hhea.numberOfHMetrics be set to 3 but this font has 1305 instead. Please read https://github.com/fonttools/fonttools/issues/3014 to decide whether this makes sense for your font.
[code: bad-numberOfHMetrics]
Check glyphs in mark glyph class are non-spacing.
Glyphs in the GDEF mark glyph class should be non-spacing.
Spacing glyphs in the GDEF mark glyph class may have incorrect anchor positioning that was only intended for building composite glyphs during design.
- Original proposal: https://github.com/fonttools/fontbakery/issues/2877
⚠️ Lilex-VF.ttf
-
⚠️ WARN
The following spacing glyphs may be in the GDEF mark glyph class by mistake: caronslovakcomb (U+0315), commabelowcomb (U+0326), commaturnedtopcomb (U+0312) and hookcomb (U+0309)
[code: spacing-mark-glyphs]
Universal Profile Checks
⚠️⚠️⚠️⏩⏩⏩⏩⏩ℹ️Check accent of Lcaron, dcaron, lcaron, tcaron
Lcaron, dcaron, lcaron, tcaron should NOT be composed with quoteright or quotesingle or comma or caron(comb). It should be composed with a distinctive glyph which doesn't look like an apostrophe.
Source: https://ilovetypography.com/2009/01/24/on-diacritics/ http://diacritics.typo.cz/index.php?id=5 https://www.typotheque.com/articles/lcaron
- Original proposal: https://github.com/fonttools/fontbakery/issues/3308
⚠️ Lilex-VF.ttf
-
⚠️ WARN
dcaron is decomposed and therefore could not be checked. Please check manually.
[code: decomposed-outline] -
✅ PASS
Looks good!
Check font contains no unreachable glyphs
Glyphs are either accessible directly through Unicode codepoints or through substitution rules.
In Color Fonts, glyphs are also referenced by the COLR table. And mathematical fonts also reference glyphs via the MATH table.
Any glyphs not accessible by these means are redundant and serve only to increase the font's file size.
- Original proposal: https://github.com/fonttools/fontbakery/issues/3160
⚠️ Lilex-VF.ttf
-
⚠️ WARN
The following glyphs could not be reached by codepoint or substitution rules:
[code: unreachable-glyphs]- IJacute - dotlessjdotbelow - ijacute - st.ordn - tonos.case - uni01CE.alt01 - uni03BC.001.alt
Glyph names are all valid?
Microsoft's recommendations for OpenType Fonts states the following:
'NOTE: The PostScript glyph name must be no longer than 31 characters, include only uppercase or lowercase English letters, European digits, the period or the underscore, i.e. from the set [A-Za-z0-9_.] and should start with a letter, except the special glyph name .notdef which starts with a period.'
https://learn.microsoft.com/en-us/typography/opentype/otspec181/recom#-post--table
In practice, though, particularly in modern environments, glyph names can be as long as 63 characters.
According to the "Adobe Glyph List Specification" available at:
https://github.com/adobe-type-tools/agl-specification
- Original proposal: legacy:check/058
- See also: https://github.com/fonttools/fontbakery/issues/2832
⚠️ Lilex-VF.ttf
-
⚠️ WARN
The following glyph names may be too long for some legacy systems which may expect a maximum 31-characters length limit: asciitilde_asciitilde_greater.liga, greater_greater_equal_middle.seq, greater_greater_hyphen_middle.seq, greater_greater_hyphen_start.seq and underscore_underscore_parenleft.liga
[code: legacy-long-names]