Font Bakery Logo image/svg+xml Font Bakery Logo Robert Martinez font build service https://github.com/xen/fontbakery
Fontbakery Technical Report

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 30 202 12 324
0% 0% 0% 5% 36% 2% 57%

Meaning of check results:

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.

Check ID: <FontBakeryCheck:com.google.fonts/check/monospace>

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:

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

⚠️ Lilex-Bold.ttf
⚠️ Lilex-ExtraLight.ttf
⚠️ Lilex-ExtraThick.ttf
⚠️ Lilex-Medium.ttf
⚠️ Lilex-Regular.ttf
⚠️ Lilex-Thin.ttf

Check glyphs in mark glyph class are non-spacing.

Check ID: <FontBakeryCheck:com.google.fonts/check/gdef_spacing_marks>

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.

⚠️ Lilex-Bold.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]
⚠️ Lilex-ExtraLight.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]
⚠️ Lilex-ExtraThick.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]
⚠️ Lilex-Medium.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]
⚠️ Lilex-Regular.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]
⚠️ Lilex-Thin.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

Check ID: <FontBakeryCheck:com.google.fonts/check/alt_caron>

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

⚠️ Lilex-Bold.ttf
  • ⚠️ WARN

    dcaron is decomposed and therefore could not be checked. Please check manually.

    [code: decomposed-outline]
  • ✅ PASS

    Looks good!

⚠️ Lilex-ExtraLight.ttf
  • ⚠️ WARN

    dcaron is decomposed and therefore could not be checked. Please check manually.

    [code: decomposed-outline]
  • ✅ PASS

    Looks good!

⚠️ Lilex-ExtraThick.ttf
  • ⚠️ WARN

    dcaron is decomposed and therefore could not be checked. Please check manually.

    [code: decomposed-outline]
  • ✅ PASS

    Looks good!

⚠️ Lilex-Medium.ttf
  • ⚠️ WARN

    dcaron is decomposed and therefore could not be checked. Please check manually.

    [code: decomposed-outline]
  • ✅ PASS

    Looks good!

⚠️ Lilex-Regular.ttf
  • ⚠️ WARN

    dcaron is decomposed and therefore could not be checked. Please check manually.

    [code: decomposed-outline]
  • ✅ PASS

    Looks good!

⚠️ Lilex-Thin.ttf
  • ⚠️ WARN

    dcaron is decomposed and therefore could not be checked. Please check manually.

    [code: decomposed-outline]
  • ✅ PASS

    Looks good!

Check if each glyph has the recommended amount of contours.

Check ID: <FontBakeryCheck:com.google.fonts/check/contour_count>

Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only be constructured in a handful of ways. This means a glyph's contour count will only differ slightly amongst different fonts, e.g a 'g' could either be 2 or 3 contours, depending on whether its double story or single story.

However, a quotedbl should have 2 contours, unless the font belongs to a display family.

This check currently does not cover variable fonts because there's plenty of alternative ways of constructing glyphs with multiple outlines for each feature in a VarFont. The expected contour count data for this check is currently optimized for the typical construction of glyphs in static fonts.

⚠️ Lilex-Bold.ttf
  • ⚠️ WARN

    This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

    - Glyph name: percent	Contours detected: 6	Expected: 4 or 5
    
    - Glyph name: onequarter	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: onehalf	Contours detected: 4	Expected: 3
    
    - Glyph name: threequarters	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: fraction	Contours detected: 2	Expected: 1
    
    - Glyph name: uni20A8	Contours detected: 2	Expected: 3
    
    - Glyph name: uni2153	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2154	Contours detected: 4	Expected: 1 or 3
    
    - Glyph name: uni2155	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2156	Contours detected: 4	Expected: 3
    
    - 30 more.
    

    Use -F or --full-lists to disable shortening of long lists.

    [code: contour-count]
⚠️ Lilex-ExtraLight.ttf
  • ⚠️ WARN

    This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

    - Glyph name: percent	Contours detected: 6	Expected: 4 or 5
    
    - Glyph name: onequarter	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: onehalf	Contours detected: 4	Expected: 3
    
    - Glyph name: threequarters	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: fraction	Contours detected: 2	Expected: 1
    
    - Glyph name: uni20A8	Contours detected: 2	Expected: 3
    
    - Glyph name: uni2153	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2154	Contours detected: 4	Expected: 1 or 3
    
    - Glyph name: uni2155	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2156	Contours detected: 4	Expected: 3
    
    - 30 more.
    

    Use -F or --full-lists to disable shortening of long lists.

    [code: contour-count]
⚠️ Lilex-ExtraThick.ttf
  • ⚠️ WARN

    This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

    - Glyph name: percent	Contours detected: 6	Expected: 4 or 5
    
    - Glyph name: onequarter	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: onehalf	Contours detected: 4	Expected: 3
    
    - Glyph name: threequarters	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: fraction	Contours detected: 2	Expected: 1
    
    - Glyph name: uni20A8	Contours detected: 2	Expected: 3
    
    - Glyph name: uni2153	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2154	Contours detected: 4	Expected: 1 or 3
    
    - Glyph name: uni2155	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2156	Contours detected: 4	Expected: 3
    
    - 30 more.
    

    Use -F or --full-lists to disable shortening of long lists.

    [code: contour-count]
⚠️ Lilex-Medium.ttf
  • ⚠️ WARN

    This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

    - Glyph name: percent	Contours detected: 6	Expected: 4 or 5
    
    - Glyph name: onequarter	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: onehalf	Contours detected: 4	Expected: 3
    
    - Glyph name: threequarters	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: fraction	Contours detected: 2	Expected: 1
    
    - Glyph name: uni20A8	Contours detected: 2	Expected: 3
    
    - Glyph name: uni2153	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2154	Contours detected: 4	Expected: 1 or 3
    
    - Glyph name: uni2155	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2156	Contours detected: 4	Expected: 3
    
    - 30 more.
    

    Use -F or --full-lists to disable shortening of long lists.

    [code: contour-count]
⚠️ Lilex-Regular.ttf
  • ⚠️ WARN

    This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

    - Glyph name: percent	Contours detected: 6	Expected: 4 or 5
    
    - Glyph name: onequarter	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: onehalf	Contours detected: 4	Expected: 3
    
    - Glyph name: threequarters	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: fraction	Contours detected: 2	Expected: 1
    
    - Glyph name: uni20A8	Contours detected: 2	Expected: 3
    
    - Glyph name: uni2153	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2154	Contours detected: 4	Expected: 1 or 3
    
    - Glyph name: uni2155	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2156	Contours detected: 4	Expected: 3
    
    - 30 more.
    

    Use -F or --full-lists to disable shortening of long lists.

    [code: contour-count]
⚠️ Lilex-Thin.ttf
  • ⚠️ WARN

    This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

    - Glyph name: percent	Contours detected: 6	Expected: 4 or 5
    
    - Glyph name: onequarter	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: onehalf	Contours detected: 4	Expected: 3
    
    - Glyph name: threequarters	Contours detected: 5	Expected: 3 or 4
    
    - Glyph name: fraction	Contours detected: 2	Expected: 1
    
    - Glyph name: uni20A8	Contours detected: 2	Expected: 3
    
    - Glyph name: uni2153	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2154	Contours detected: 4	Expected: 1 or 3
    
    - Glyph name: uni2155	Contours detected: 4	Expected: 3
    
    - Glyph name: uni2156	Contours detected: 4	Expected: 3
    
    - 30 more.
    

    Use -F or --full-lists to disable shortening of long lists.

    [code: contour-count]

Glyph names are all valid?

Check ID: <FontBakeryCheck:com.google.fonts/check/valid_glyphnames>

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

⚠️ Lilex-Bold.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]
⚠️ Lilex-ExtraLight.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]
⚠️ Lilex-ExtraThick.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]
⚠️ Lilex-Medium.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]
⚠️ Lilex-Regular.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]
⚠️ Lilex-Thin.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]