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.
DEPRECATION WARNING
By late-December 2024, FontBakery version 0.13.0 introduced a new naming scheme for the check-IDs.
Fontbakery detected usage of old IDs and performed an automatic backwards-compatibility translation for you.
This automatic translation will be deprecated in the next major release.
Please start using the new check-IDs as documented at /Lib/fontbakery/legacy_checkids.py
The following legacy check-IDs were detected:
- com.google.fonts/check/ttx_roundtrip
- com.google.fonts/check/outline_colinear_vectors
- com.google.fonts/check/outline_jaggy_segments
- com.google.fonts/check/outline_alignment_miss
- com.google.fonts/check/outline_semi_vertical
- com.google.fonts/check/fontdata_namecheck
- com.google.fonts/check/outline_short_segments
- com.google.fonts/check/version_bump
Summary
💥 ERROR | ☠ FATAL | 🔥 FAIL | ⚠️ WARN | ⏩ SKIP | ℹ️ INFO | ✅ PASS |
---|---|---|---|---|---|---|
1 | 0 | 4 | 10 | 58 | 6 | 159 |
0% | 0% | 2% | 4% | 24% | 3% | 67% |
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.13.1
Universal Profile Checks
🔥⚠️⚠️⚠️⚠️⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩ℹ️ℹ️Ensure the font supports case swapping for all its glyphs.
🔥 TacOne-Regular.ttf
-
🔥 FAIL
The following glyphs lack their case-swapping counterparts:
Glyph present in the font Missing case-swapping counterpart U+03BB: GREEK SMALL LETTER LAMDA U+039B: GREEK CAPITAL LETTER LAMDA U+03C7: GREEK SMALL LETTER CHI U+03A7: GREEK CAPITAL LETTER CHI
Check if each glyph has the recommended amount of contours.
⚠️ TacOne-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:
[code: contour-count]- Glyph name: asterisk Contours detected: 2 Expected: 1 or 4 - Glyph name: Eth Contours detected: 3 Expected: 2 - Glyph name: aogonek Contours detected: 3 Expected: 2 - Glyph name: Dcroat Contours detected: 3 Expected: 2 - Glyph name: dcroat Contours detected: 3 Expected: 2 - Glyph name: eogonek Contours detected: 3 Expected: 2 - Glyph name: Lslash Contours detected: 2 Expected: 1 - Glyph name: lslash Contours detected: 2 Expected: 1 - Glyph name: Tbar Contours detected: 2 Expected: 1 - Glyph name: tbar Contours detected: 2 Expected: 1 - Glyph name: Uogonek Contours detected: 2 Expected: 1 - Glyph name: uogonek Contours detected: 2 Expected: 1 - Glyph name: uni0180 Contours detected: 3 Expected: 2 - Glyph name: uni0181 Contours detected: 4 Expected: 3 - Glyph name: Dtail Contours detected: 3 Expected: 2 - Glyph name: uni018A Contours detected: 3 Expected: 2 - Glyph name: uni0197 Contours detected: 2 Expected: 1 - Glyph name: uni019A Contours detected: 2 Expected: 1 - Glyph name: ohorn Contours detected: 3 Expected: 2 - Glyph name: uni01A4 Contours detected: 3 Expected: 2 - Glyph name: Uhorn Contours detected: 2 Expected: 1 - Glyph name: uhorn Contours detected: 2 Expected: 1 - Glyph name: uni01B5 Contours detected: 2 Expected: 1 - Glyph name: uni01E4 Contours detected: 2 Expected: 1 - Glyph name: uni01E5 Contours detected: 3 Expected: 2 - Glyph name: uni01EA Contours detected: 3 Expected: 2 - Glyph name: uni01EB Contours detected: 3 Expected: 2 - Glyph name: uni01EC Contours detected: 4 Expected: 3 - Glyph name: uni01ED Contours detected: 4 Expected: 3 - Glyph name: uni0228 Contours detected: 2 Expected: 1 - Glyph name: uni0229 Contours detected: 3 Expected: 2 - Glyph name: uni023B Contours detected: 1 Expected: 2 - Glyph name: uni023D Contours detected: 2 Expected: 1 - Glyph name: uni0243 Contours detected: 4 Expected: 3 - Glyph name: uni0246 Contours detected: 2 Expected: 3 - Glyph name: uni0247 Contours detected: 3 Expected: 4 - Glyph name: uni0248 Contours detected: 2 Expected: 1 - Glyph name: uni0249 Contours detected: 3 Expected: 2 - Glyph name: uni024D Contours detected: 2 Expected: 1 - Glyph name: uni1E08 Contours detected: 3 Expected: 2 - Glyph name: uni1E09 Contours detected: 3 Expected: 2 - Glyph name: uni1E1C Contours detected: 3 Expected: 2 - Glyph name: uni1E1D Contours detected: 4 Expected: 3 - Glyph name: uni1EDB Contours detected: 4 Expected: 3 - Glyph name: uni1EDD Contours detected: 4 Expected: 3 - Glyph name: uni1EDF Contours detected: 4 Expected: 3 - Glyph name: uni1EE1 Contours detected: 4 Expected: 3 - Glyph name: uni1EE3 Contours detected: 4 Expected: 3 - Glyph name: uni1EE8 Contours detected: 3 Expected: 2 - Glyph name: uni1EE9 Contours detected: 3 Expected: 2 - Glyph name: uni1EEA Contours detected: 3 Expected: 2 - Glyph name: uni1EEB Contours detected: 3 Expected: 2 - Glyph name: uni1EEC Contours detected: 3 Expected: 2 - Glyph name: uni1EED Contours detected: 3 Expected: 2 - Glyph name: uni1EEE Contours detected: 3 Expected: 2 - Glyph name: uni1EEF Contours detected: 3 Expected: 2 - Glyph name: uni1EF0 Contours detected: 3 Expected: 2 - Glyph name: uni1EF1 Contours detected: 3 Expected: 2 - Glyph name: uni20A9 Contours detected: 5 Expected: 1, 3, 4 or 7 - Glyph name: arrowboth Contours detected: 2 Expected: 1 - Glyph name: Dcroat Contours detected: 3 Expected: 2 - Glyph name: Eth Contours detected: 3 Expected: 2 - Glyph name: Lslash Contours detected: 2 Expected: 1 - Glyph name: Tbar Contours detected: 2 Expected: 1 - Glyph name: Uhorn Contours detected: 2 Expected: 1 - Glyph name: Uogonek Contours detected: 2 Expected: 1 - Glyph name: aogonek Contours detected: 3 Expected: 2 - Glyph name: arrowboth Contours detected: 2 Expected: 1 - Glyph name: asterisk Contours detected: 2 Expected: 1 or 4 - Glyph name: dcroat Contours detected: 3 Expected: 2 - Glyph name: eogonek Contours detected: 3 Expected: 2 - Glyph name: fi Contours detected: 2 Expected: 3 - Glyph name: fl Contours detected: 1 Expected: 2 - Glyph name: lslash Contours detected: 2 Expected: 1 - Glyph name: ohorn Contours detected: 3 Expected: 2 - Glyph name: tbar Contours detected: 2 Expected: 1 - Glyph name: uhorn Contours detected: 2 Expected: 1 - Glyph name: uni0180 Contours detected: 3 Expected: 2 - Glyph name: uni0181 Contours detected: 4 Expected: 3 - Glyph name: uni018A Contours detected: 3 Expected: 2 - Glyph name: uni0197 Contours detected: 2 Expected: 1 - Glyph name: uni019A Contours detected: 2 Expected: 1 - Glyph name: uni01A4 Contours detected: 3 Expected: 2 - Glyph name: uni01B5 Contours detected: 2 Expected: 1 - Glyph name: uni01E4 Contours detected: 2 Expected: 1 - Glyph name: uni01E5 Contours detected: 3 Expected: 2 - Glyph name: uni01EC Contours detected: 4 Expected: 3 - Glyph name: uni01ED Contours detected: 4 Expected: 3 - Glyph name: uni0228 Contours detected: 2 Expected: 1 - Glyph name: uni0229 Contours detected: 3 Expected: 2 - Glyph name: uni023B Contours detected: 1 Expected: 2 - Glyph name: uni023D Contours detected: 2 Expected: 1 - Glyph name: uni0243 Contours detected: 4 Expected: 3 - Glyph name: uni0246 Contours detected: 2 Expected: 3 - Glyph name: uni0247 Contours detected: 3 Expected: 4 - Glyph name: uni0248 Contours detected: 2 Expected: 1 - Glyph name: uni0249 Contours detected: 3 Expected: 2 - Glyph name: uni024D Contours detected: 2 Expected: 1 - Glyph name: uni1E08 Contours detected: 3 Expected: 2 - Glyph name: uni1E09 Contours detected: 3 Expected: 2 - Glyph name: uni1E1C Contours detected: 3 Expected: 2 - Glyph name: uni1E1D Contours detected: 4 Expected: 3 - Glyph name: uni1EDB Contours detected: 4 Expected: 3 - Glyph name: uni1EDD Contours detected: 4 Expected: 3 - Glyph name: uni1EDF Contours detected: 4 Expected: 3 - Glyph name: uni1EE1 Contours detected: 4 Expected: 3 - Glyph name: uni1EE3 Contours detected: 4 Expected: 3 - Glyph name: uni1EE8 Contours detected: 3 Expected: 2 - Glyph name: uni1EE9 Contours detected: 3 Expected: 2 - Glyph name: uni1EEA Contours detected: 3 Expected: 2 - Glyph name: uni1EEB Contours detected: 3 Expected: 2 - Glyph name: uni1EEC Contours detected: 3 Expected: 2 - Glyph name: uni1EED Contours detected: 3 Expected: 2 - Glyph name: uni1EEE Contours detected: 3 Expected: 2 - Glyph name: uni1EEF Contours detected: 3 Expected: 2 - Glyph name: uni1EF0 Contours detected: 3 Expected: 2 - Glyph name: uni1EF1 Contours detected: 3 Expected: 2 - Glyph name: uni20A9 Contours detected: 5 Expected: 1, 3, 4 or 7 - Glyph name: uogonek Contours detected: 2 Expected: 1
Check math signs have the same width.
⚠️ TacOne-Regular.ttf
-
⚠️ WARN
The most common width is 373 among a set of 3 math glyphs. The following math glyphs have a different width, though:
Width = 430: plus
Width = 460: equal, notequal
Width = 438: logicalnot
Width = 431: plusminus
Width = 441: multiply
Width = 469: divide
Width = 440: minus
Width = 442: approxequal
Width = 394: greaterequal
[code: width-outliers]
Check there are no overlapping path segments
⚠️ TacOne-Regular.ttf
-
⚠️ WARN
The following glyphs have overlapping path segments:
[code: overlapping-path-segments]* ae (U+00E6): B<<433.0,150.0>-<433.0,150.0>-<435.0,151.0>> has the same coordinates as a previous segment. * ae (U+00E6): B<<436.0,152.0>-<466.0,166.0>-<483.0,190.0>> has the same coordinates as a previous segment. * uni01E3 (U+01E3): B<<433.0,150.0>-<433.0,150.0>-<435.0,151.0>> has the same coordinates as a previous segment. * uni01E3 (U+01E3): B<<436.0,152.0>-<466.0,166.0>-<483.0,190.0>> has the same coordinates as a previous segment.
Check font contains no unreachable glyphs
⚠️ TacOne-Regular.ttf
-
⚠️ WARN
The following glyphs could not be reached by codepoint or substitution rules:
[code: unreachable-glyphs]- _bottomshortstroke.part - _topshortstroke.part - asterisk_node - dotlessi_ogonek - strokelongY.comb - uni01C2.001 - uni025F.dotless
Article Checks
🔥Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
🔥 TacOne-Regular.ttf
-
⚠️ WARN
Article page is too short!
[code: length-requirements-not-met] -
🔥 FAIL
[code: filesize]/Users/simon/others-repos/fonts//ofl/tacone/article/3.4.jpg
has1174429 bytes
, but the maximum filesize for raster images is819200 bytes
. -
🔥 FAIL
[code: filesize]/Users/simon/others-repos/fonts//ofl/tacone/article/3.2.jpg
has1446584 bytes
, but the maximum filesize for raster images is819200 bytes
. -
✅ PASS
ok
Metadata Checks
⚠️⚠️⏩⏩⏩ℹ️METADATA.pb: Designers are listed correctly on the Google Fonts catalog?
⚠️ TacOne-Regular.ttf
-
⚠️ WARN
It seems that Mirko Velimirović is still not listed on the designers catalog. Please submit a photo and a link to a webpage where people can learn more about the work of this designer/typefoundry.
[code: profile-not-found]
Check for codepoints not covered by METADATA subsets.
⚠️ TacOne-Regular.ttf
-
⚠️ WARN
The following codepoints supported by the font are not covered by any subsets defined in the font's metadata file, and will never be served. You can solve this by either manually adding additional subset declarations to METADATA.pb, or by editing the glyphset definitions.
- U+02D8 BREVE: try adding one of: canadian-aboriginal, yi
- U+02D9 DOT ABOVE: try adding one of: canadian-aboriginal, yi
- U+02DB OGONEK: try adding one of: canadian-aboriginal, yi
- U+0306 COMBINING BREVE: try adding one of: old-permic, tifinagh
- U+030A COMBINING RING ABOVE: try adding one of: syriac, duployan
- U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: cherokee, osage
- U+030C COMBINING CARON: try adding one of: tai-le, cherokee
- U+030D COMBINING VERTICAL LINE ABOVE: try adding sunuwar
- U+030F COMBINING DOUBLE GRAVE ACCENT: not included in any glyphset definition
- U+0311 COMBINING INVERTED BREVE: try adding one of: coptic, todhri
- U+0313 COMBINING COMMA ABOVE: try adding one of: old-permic, todhri
- U+031B COMBINING HORN: not included in any glyphset definition
- U+0324 COMBINING DIAERESIS BELOW: try adding one of: cherokee, duployan, syriac
- U+0325 COMBINING RING BELOW: try adding syriac
- U+0328 COMBINING OGONEK: not included in any glyphset definition
- U+032D COMBINING CIRCUMFLEX ACCENT BELOW: try adding one of: sunuwar, syriac
- U+032E COMBINING BREVE BELOW: try adding syriac
- U+0331 COMBINING MACRON BELOW: try adding one of: cherokee, tifinagh, sunuwar, caucasian-albanian, syriac, thai, gothic
- U+0334 COMBINING TILDE OVERLAY: not included in any glyphset definition
- U+0335 COMBINING SHORT STROKE OVERLAY: not included in any glyphset definition
- U+0337 COMBINING SHORT SOLIDUS OVERLAY: not included in any glyphset definition
- U+0358 COMBINING DOT ABOVE RIGHT: try adding osage
- U+0E3F THAI CURRENCY SYMBOL BAHT: try adding thai
- U+1DC4 COMBINING MACRON-ACUTE: not included in any glyphset definition
- U+1DC5 COMBINING GRAVE-MACRON: not included in any glyphset definition
- U+1DC6 COMBINING MACRON-GRAVE: not included in any glyphset definition
- U+1DC7 COMBINING ACUTE-MACRON: not included in any glyphset definition
- U+1DCA COMBINING LATIN SMALL LETTER R BELOW: not included in any glyphset definition
- U+2021 DOUBLE DAGGER: try adding adlam
- U+2030 PER MILLE SIGN: try adding adlam
- U+2116 NUMERO SIGN: try adding cyrillic
- U+AB53 LATIN SMALL LETTER CHI: not included in any glyphset definition
- U+FB01 LATIN SMALL LIGATURE FI: not included in any glyphset definition
- U+FB02 LATIN SMALL LIGATURE FL: not included in any glyphset definition
Or you can add the above codepoints to one of the subsets supported by the font:
[code: unreachable-subsetting]latin
,latin-ext
,math
,menu
,symbols
,vietnamese
Glyphset Checks
💥Shapes languages in all GF glyphsets.
💥 TacOne-Regular.ttf
-
💥 ERROR
Failed with ModuleNotFoundError: No module named 'shaperglot.checker'
[code: failed-check]File "/Users/simon/work/gf-dashboard/venv/lib/python3.13/site-packages/fontbakery/checkrunner.py", line 222, in _run_check subresults = list(subresults) File "/Users/simon/work/gf-dashboard/venv/lib/python3.13/site-packages/fontbakery/checks/vendorspecific/googlefonts/glyphsets/shape_languages.py", line 19, in check_glyphsets_shape_languages from shaperglot.checker import Checker
Description Checks
🔥🔥⚠️⏩⏩⏩⏩⏩⏩DESCRIPTION.en_us.html should end in a linebreak.
⚠️ METADATA.pb
-
⚠️ WARN
The last characther on DESCRIPTION.en_us.html is not a line-break. Please add it.
[code: missing-eof-linebreak]
Check for presence of an ARTICLE.en_us.html file
🔥 TacOne-Regular.ttf
-
🔥 FAIL
This font has both a DESCRIPTION.en_us.html file and an ARTICLE.en_us.html file. In this case the description must be deleted.
[code: description-and-article]
DESCRIPTION.en_us.html must have more than 200 bytes.
🔥 METADATA.pb
-
🔥 FAIL
DESCRIPTION.en_us.html must have size larger than 200 bytes.
[code: too-short]
Outline Checks
⚠️Do outlines contain any jaggy segments?
⚠️ TacOne-Regular.ttf
-
⚠️ WARN
The following glyphs have jaggy segments:
[code: found-jaggy-segments]* Aogonek (U+0104): L<<305.0,0.0>--<378.0,0.0>>/B<<378.0,0.0>-<350.0,-7.0>-<334.0,-22.0>> = 14.036243467926484 * Eogonek (U+0118): L<<306.0,0.0>--<379.0,0.0>>/B<<379.0,0.0>-<351.0,-7.0>-<335.0,-22.0>> = 14.036243467926484 * Iogonek (U+012E): L<<144.0,0.0>--<217.0,0.0>>/B<<217.0,0.0>-<189.0,-7.0>-<173.0,-22.0>> = 14.036243467926484 * Uogonek (U+0172): L<<397.0,0.0>--<480.0,0.0>>/B<<480.0,0.0>-<452.0,-7.0>-<436.0,-20.5>> = 14.036243467926484 * aogonek (U+0105): L<<347.0,0.0>--<430.0,0.0>>/B<<430.0,0.0>-<402.0,-7.0>-<386.0,-20.5>> = 14.036243467926484 * dotlessi_ogonek: L<<114.0,0.0>--<197.0,0.0>>/B<<197.0,0.0>-<169.0,-7.0>-<153.0,-20.5>> = 14.036243467926484 * eogonek (U+0119): L<<182.0,0.0>--<265.0,0.0>>/B<<265.0,0.0>-<237.0,-7.0>-<221.0,-20.5>> = 14.036243467926484 * iogenek.dotless: L<<5074.0,0.0>--<5157.0,0.0>>/B<<5157.0,0.0>-<5129.0,-7.0>-<5113.0,-20.5>> = 14.036243467926484 * iogonek (U+012F): L<<114.0,0.0>--<197.0,0.0>>/B<<197.0,0.0>-<169.0,-7.0>-<153.0,-20.5>> = 14.036243467926484 * ogonek (U+02DB): L<<90.0,0.0>--<173.0,0.0>>/B<<173.0,0.0>-<145.0,-7.0>-<129.0,-20.5>> = 14.036243467926484 * uni01EA (U+01EA): L<<351.0,0.0>--<434.0,0.0>>/B<<434.0,0.0>-<406.0,-7.0>-<390.0,-20.5>> = 14.036243467926484 * uni01EB (U+01EB): L<<331.0,0.0>--<414.0,0.0>>/B<<414.0,0.0>-<386.0,-7.0>-<370.0,-20.5>> = 14.036243467926484 * uni01EC (U+01EC): L<<351.0,0.0>--<434.0,0.0>>/B<<434.0,0.0>-<406.0,-7.0>-<390.0,-20.5>> = 14.036243467926484 * uni01ED (U+01ED): L<<331.0,0.0>--<414.0,0.0>>/B<<414.0,0.0>-<386.0,-7.0>-<370.0,-20.5>> = 14.036243467926484 * uni0328 (U+0328): L<<90.0,0.0>--<173.0,0.0>>/B<<173.0,0.0>-<145.0,-7.0>-<129.0,-20.5>> = 14.036243467926484 * uni0328.case: L<<100.0,0.0>--<173.0,0.0>>/B<<173.0,0.0>-<145.0,-7.0>-<129.0,-22.0>> = 14.036243467926484 * uogonek (U+0173): L<<372.0,0.0>--<455.0,0.0>>/B<<455.0,0.0>-<427.0,-7.0>-<411.0,-20.5>> = 14.036243467926484
Font File Checks
⚠️⚠️⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩ℹ️ℹ️Ensure fonts have ScriptLangTags declared on the 'meta' table.
⚠️ TacOne-Regular.ttf
-
⚠️ WARN
This font file does not have a 'meta' table.
[code: lacks-meta-table]
Checking OS/2 achVendID.
⚠️ TacOne-Regular.ttf
-
⚠️ WARN
OS/2 VendorID value 'NONE' is not yet recognized. If you registered it recently, then it's safe to ignore this warning message. Otherwise, you should set it to your own unique 4 character code, and register it with Microsoft at https://www.microsoft.com/typography/links/vendorlist.aspx
[code: unknown]