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/version_bump
- com.google.fonts/check/outline_jaggy_segments
- com.google.fonts/check/outline_semi_vertical
- com.google.fonts/check/outline_colinear_vectors
- com.google.fonts/check/fontdata_namecheck
- com.google.fonts/check/outline_short_segments
- com.google.fonts/check/ttx_roundtrip
- com.google.fonts/check/outline_alignment_miss
Summary
💥 ERROR | ☠ FATAL | 🔥 FAIL | ⚠️ WARN | ⏩ SKIP | ℹ️ INFO | ✅ PASS |
---|---|---|---|---|---|---|
1 | 0 | 16 | 10 | 60 | 6 | 145 |
0% | 0% | 7% | 4% | 25% | 3% | 61% |
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
🔥🔥⚠️⚠️⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩ℹ️ℹ️Does GPOS table have kerning information? This check skips monospaced fonts as defined by post.isFixedPitch value
⚠️ NotoSansNKo-Regular.ttf
-
⚠️ WARN
GPOS table lacks kerning information.
[code: lacks-kern-info]
PPEM must be an integer on hinted fonts.
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
This is a hinted font, so it must have bit 3 set on the flags of the head table, so that PPEM values will be rounded into an integer value.
This can be accomplished by using the 'gftools fix-hinting' command:
[code: bad-flags]# create virtualenv python3 -m venv venv # activate virtualenv source venv/bin/activate # install gftools pip install git+https://www.github.com/googlefonts/gftools
Check there are no overlapping path segments
⚠️ NotoSansNKo-Regular.ttf
-
⚠️ WARN
The following glyphs have overlapping path segments:
[code: overlapping-path-segments]* uni07DC.medi: L<<244.0,0.0>--<244.0,0.0>> has the same coordinates as a previous segment. * uni07DC.init: L<<244.0,0.0>--<244.0,0.0>> has the same coordinates as a previous segment.
Are there unwanted tables?
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
The following unwanted font tables were found:
- DSIG - This font has a digital signature (DSIG table) which is only required - even if only a placeholder - on old programs like MS Office 2013 in order to work properly. The current recommendation is to completely remove the DSIG table.
They can be removed with the 'fix-unwanted-tables' script provided by gftools.
[code: unwanted-tables]
Article Checks
⚠️Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
⚠️ NotoSansNKo-Regular.ttf
-
⚠️ WARN
Article page is too short!
[code: length-requirements-not-met] -
⚠️ WARN
Article page lacks visual assets.
[code: missing-visual-asset] -
✅ PASS
ok
Metadata Checks
🔥🔥🔥🔥🔥⏩⏩⏩⏩⏩ℹ️METADATA.pb: Check URL on copyright string is the same as in repository_url field.
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
Please add a family.source.repository_url entry.
[code: lacks-repo-url]
Check font family directory name.
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
Family name on METADATA.pb is "Noto Sans N Ko" Directory name is "notosansnko_todelist" Expected "notosansnko"
[code: bad-directory-name]
METADATA.pb should contain at least "menu" and "latin" subsets.
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
Subsets "menu" and "latin" are mandatory, but METADATA.pb is missing "latin".
[code: missing]
METADATA.pb font.name and font.full_name fields match the values declared on the name table?
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
METADATA.pb Family name "Noto Sans N Ko" does not match name table entry "Noto Sans NKo"!
[code: familyname-mismatch]
METADATA.pb font.name value should be same as the family name declared on the name table.
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
Unmatched familyname in font: TTF has familyname = "Noto Sans NKo" while METADATA.pb has font.name = "Noto Sans N Ko".
[code: mismatch]
Glyphset Checks
💥Shapes languages in all GF glyphsets.
💥 NotoSansNKo-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
🔥🔥⚠️⏩Does DESCRIPTION file contain broken links?
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
The following links are broken in the article file: https://scriptsource.org/scr/Nkoo (status code: 403)
[code: broken-links]
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]
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]
Licensing Checks
🔥🔥🔥⚠️⏩Copyright notices match canonical pattern in fonts
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
Name Table entry: Copyright notices should match a pattern similar to:
"Copyright 2020 The Familyname Project Authors (git url)"
But instead we have got:
"Copyright 2017 Google Inc. All Rights Reserved."
[code: bad-notice-format] -
🔥 FAIL
METADATA.pb: Copyright notices should match a pattern similar to:
"Copyright 2020 The Familyname Project Authors (git url)"
But instead we have got:
"Copyright 2017 Google Inc. All Rights Reserved."
[code: bad-notice-format]
Check OFL body text is correct.
⚠️ NotoSansNKo-Regular.ttf
-
⚠️ WARN
The OFL.txt body text is incorrect. Please use https://github.com/googlefonts/Unified-Font-Repository/blob/main/OFL.txt as a template. You should only modify the first line.
Lines changed:
- This Font Software is licensed under the SIL Open Font License, Version 1.1.\n
+ This Font Software is licensed under the SIL Open Font License,\n
+ Version 1.1.\n
+ \n
- \n
- development of collaborative font projects, to support the font creation\n
+ development of collaborative font projects, to support the font\n
- efforts of academic and linguistic communities, and to provide a free and\n
+ creation efforts of academic and linguistic communities, and to\n
- open framework in which fonts may be shared and improved in partnership\n
- with others.\n
+ provide a free and open framework in which fonts may be shared and\n
+ improved in partnership with others.\n
- requirement for fonts to remain under this license does not apply\n
+ requirement for fonts to remain under this license does not apply to\n
- to any document created using the fonts or their derivatives.\n
+ any document created using the fonts or their derivatives.\n
- "Original Version" refers to the collection of Font Software components as\n
+ "Original Version" refers to the collection of Font Software\n
- distributed by the Copyright Holder(s).\n
+ components as distributed by the Copyright Holder(s).\n
- "Modified Version" refers to any derivative made by adding to, deleting,\n
+ "Modified Version" refers to any derivative made by adding to,\n
- or substituting -- in part or in whole -- any of the components of the\n
+ deleting, or substituting -- in part or in whole -- any of the\n
- Original Version, by changing formats or by porting the Font Software to a\n
- new environment.\n
+ components of the Original Version, by changing formats or by porting\n
+ the Font Software to a new environment.\n
- a copy of the Font Software, to use, study, copy, merge, embed, modify,\n
+ a copy of the Font Software, to use, study, copy, merge, embed,\n
- redistribute, and sell modified and unmodified copies of the Font\n
+ modify, redistribute, and sell modified and unmodified copies of the\n
- Software, subject to the following conditions:\n
+ Font Software, subject to the following conditions:\n
- 1) Neither the Font Software nor any of its individual components,\n
+ 1) Neither the Font Software nor any of its individual components, in\n
- in Original or Modified Versions, may be sold by itself.\n
+ Original or Modified Versions, may be sold by itself.\n
- Name(s) unless explicit written permission is granted by the corresponding\n
+ Name(s) unless explicit written permission is granted by the\n
- Copyright Holder. This restriction only applies to the primary font name as\n
+ corresponding Copyright Holder. This restriction only applies to the\n
- presented to the users.\n
+ primary font name as presented to the users.\n
- remain under this license does not apply to any document created\n
+ remain under this license does not apply to any document created using\n
- using the Font Software.\n
+ the Font Software.\n
[code: incorrect-ofl-body-text]
Check license file has good copyright string.
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
First line in license file is:
"copyright 2012 google inc. all rights reserved."
which does not match the expected format, similar to:
"Copyright 2022 The Familyname Project Authors (git url)"
[code: bad-format]
Check copyright namerecords match license file.
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
License file OFL.txt exists but NameID 13 (LICENSE DESCRIPTION) value on platform 3 (WINDOWS) is not specified for that. Value was: "This Font Software is licensed under the SIL Open Font License, Version 1.1. This Font Software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software." Must be changed to "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://openfontlicense.org"
[code: wrong]
Repository Checks
🔥⏩Directory name in GFonts repo structure must match NameID 1 of the regular.
🔥 Family Check
-
🔥 FAIL
Family name on the name table ('Noto Sans NKo') does not match directory name in the repo structure ('notosansnko_todelist'). Expected 'notosansnko'.
[code: mismatch]
Outline Checks
⚠️⚠️⚠️Are there any misaligned on-curve points?
⚠️ NotoSansNKo-Regular.ttf
-
⚠️ WARN
The following glyphs have on-curve points which have potentially incorrect y coordinates:
[code: found-misalignments]* uni07F7 (U+07F7): X=358.5,Y=712.0 (should be at cap-height 714?) * uni07E8.fina: X=196.0,Y=-1.0 (should be at baseline 0?) * uni07E9.fina: X=196.0,Y=-1.0 (should be at baseline 0?)
Do any segments have colinear vectors?
⚠️ NotoSansNKo-Regular.ttf
-
⚠️ WARN
The following glyphs have colinear vectors:
[code: found-colinear-vectors]* uni07DC.init: L<<244.0,0.0>--<239.0,0.0>> -> L<<239.0,0.0>--<15.0,0.0>> * uni07DC.init: L<<244.0,0.0>--<244.0,0.0>> -> L<<244.0,0.0>--<244.0,0.0>> * uni07DC.medi: L<<244.0,0.0>--<239.0,0.0>> -> L<<239.0,0.0>--<15.0,0.0>> * uni07DC.medi: L<<244.0,0.0>--<244.0,0.0>> -> L<<244.0,0.0>--<244.0,0.0>> * uniFD3E (U+FD3E): L<<272.0,409.0>--<273.0,459.0>> -> L<<273.0,459.0>--<273.0,583.0>>
Are any segments inordinately short?
⚠️ NotoSansNKo-Regular.ttf
-
⚠️ WARN
The following glyphs have segments which seem very short:
[code: found-short-segments]* uni07E8 (U+07E8) contains a short segment B<<194.0,-5.0>-<195.0,-2.0>-<197.0,0.0>> * uni07E9 (U+07E9) contains a short segment B<<194.0,-5.0>-<195.0,-2.0>-<197.0,0.0>> * uni07CF.init contains a short segment L<<463.0,116.0>--<463.0,116.0>> * uni07D6.medi contains a short segment L<<378.0,135.0>--<378.0,135.0>> * uni07DC.medi contains a short segment L<<244.0,0.0>--<244.0,0.0>> * uni07DC.medi contains a short segment L<<244.0,0.0>--<244.0,0.0>> * uni07DC.medi contains a short segment L<<244.0,0.0>--<239.0,0.0>> * uni07DC.init contains a short segment L<<244.0,0.0>--<244.0,0.0>> * uni07DC.init contains a short segment L<<244.0,0.0>--<244.0,0.0>> * uni07DC.init contains a short segment L<<244.0,0.0>--<239.0,0.0>> * uni07E8.medi contains a short segment B<<193.0,-7.0>-<195.0,-3.0>-<197.0,0.0>> * uni07E9.medi contains a short segment B<<194.0,-5.0>-<195.0,-2.0>-<197.0,0.0>> * uni07E9.init contains a short segment B<<194.0,-5.0>-<195.0,-2.0>-<197.0,0.0>>
Font File Checks
🔥🔥🔥⚠️⚠️⏩⏩⏩⏩⏩⏩⏩⏩⏩ℹ️ℹ️Check Google Fonts glyph coverage.
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
Missing required codepoints:
[code: missing-codepoints]- 0x0021 (EXCLAMATION MARK) - 0x0022 (QUOTATION MARK) - 0x0023 (NUMBER SIGN) - 0x0024 (DOLLAR SIGN) - 0x0025 (PERCENT SIGN) - 0x0026 (AMPERSAND) - 0x0027 (APOSTROPHE) - 0x0028 (LEFT PARENTHESIS) - 0x0029 (RIGHT PARENTHESIS) - 0x002A (ASTERISK) - 0x002B (PLUS SIGN) - 0x002C (COMMA) - 0x002D (HYPHEN-MINUS) - 0x002E (FULL STOP) - 0x002F (SOLIDUS) - 0x0030 (DIGIT ZERO) - 0x0031 (DIGIT ONE) - 0x0032 (DIGIT TWO) - 0x0033 (DIGIT THREE) - 0x0034 (DIGIT FOUR) - 0x0035 (DIGIT FIVE) - 0x0036 (DIGIT SIX) - 0x0037 (DIGIT SEVEN) - 0x0038 (DIGIT EIGHT) - 0x0039 (DIGIT NINE) - 0x003A (COLON) - 0x003B (SEMICOLON) - 0x003C (LESS-THAN SIGN) - 0x003D (EQUALS SIGN) - 0x003E (GREATER-THAN SIGN) - 0x003F (QUESTION MARK) - 0x0040 (COMMERCIAL AT) - 0x0041 (LATIN CAPITAL LETTER A) - 0x0042 (LATIN CAPITAL LETTER B) - 0x0043 (LATIN CAPITAL LETTER C) - 0x0044 (LATIN CAPITAL LETTER D) - 0x0045 (LATIN CAPITAL LETTER E) - 0x0046 (LATIN CAPITAL LETTER F) - 0x0047 (LATIN CAPITAL LETTER G) - 0x0048 (LATIN CAPITAL LETTER H) - 0x0049 (LATIN CAPITAL LETTER I) - 0x004A (LATIN CAPITAL LETTER J) - 0x004B (LATIN CAPITAL LETTER K) - 0x004C (LATIN CAPITAL LETTER L) - 0x004D (LATIN CAPITAL LETTER M) - 0x004E (LATIN CAPITAL LETTER N) - 0x004F (LATIN CAPITAL LETTER O) - 0x0050 (LATIN CAPITAL LETTER P) - 0x0051 (LATIN CAPITAL LETTER Q) - 0x0052 (LATIN CAPITAL LETTER R) - 0x0053 (LATIN CAPITAL LETTER S) - 0x0054 (LATIN CAPITAL LETTER T) - 0x0055 (LATIN CAPITAL LETTER U) - 0x0056 (LATIN CAPITAL LETTER V) - 0x0057 (LATIN CAPITAL LETTER W) - 0x0058 (LATIN CAPITAL LETTER X) - 0x0059 (LATIN CAPITAL LETTER Y) - 0x005A (LATIN CAPITAL LETTER Z) - 0x005B (LEFT SQUARE BRACKET) - 0x005C (REVERSE SOLIDUS) - 0x005D (RIGHT SQUARE BRACKET) - 0x005E (CIRCUMFLEX ACCENT) - 0x005F (LOW LINE) - 0x0060 (GRAVE ACCENT) - 0x0061 (LATIN SMALL LETTER A) - 0x0062 (LATIN SMALL LETTER B) - 0x0063 (LATIN SMALL LETTER C) - 0x0064 (LATIN SMALL LETTER D) - 0x0065 (LATIN SMALL LETTER E) - 0x0066 (LATIN SMALL LETTER F) - 0x0067 (LATIN SMALL LETTER G) - 0x0068 (LATIN SMALL LETTER H) - 0x0069 (LATIN SMALL LETTER I) - 0x006A (LATIN SMALL LETTER J) - 0x006B (LATIN SMALL LETTER K) - 0x006C (LATIN SMALL LETTER L) - 0x006D (LATIN SMALL LETTER M) - 0x006E (LATIN SMALL LETTER N) - 0x006F (LATIN SMALL LETTER O) - 0x0070 (LATIN SMALL LETTER P) - 0x0071 (LATIN SMALL LETTER Q) - 0x0072 (LATIN SMALL LETTER R) - 0x0073 (LATIN SMALL LETTER S) - 0x0074 (LATIN SMALL LETTER T) - 0x0075 (LATIN SMALL LETTER U) - 0x0076 (LATIN SMALL LETTER V) - 0x0077 (LATIN SMALL LETTER W) - 0x0078 (LATIN SMALL LETTER X) - 0x0079 (LATIN SMALL LETTER Y) - 0x007A (LATIN SMALL LETTER Z) - 0x007B (LEFT CURLY BRACKET) - 0x007C (VERTICAL LINE) - 0x007D (RIGHT CURLY BRACKET) - 0x007E (TILDE) - 0x00A2 (CENT SIGN) - 0x00A3 (POUND SIGN) - 0x00A5 (YEN SIGN) - 0x00A9 (COPYRIGHT SIGN) - 0x00AE (REGISTERED SIGN) - 0x00B0 (DEGREE SIGN) - 0x00B7 (MIDDLE DOT) - 0x00D7 (MULTIPLICATION SIGN) - 0x00F7 (DIVISION SIGN) - 0x2013 (EN DASH) - 0x2014 (EM DASH) - 0x2018 (LEFT SINGLE QUOTATION MARK) - 0x2019 (RIGHT SINGLE QUOTATION MARK) - 0x201C (LEFT DOUBLE QUOTATION MARK) - 0x201D (RIGHT DOUBLE QUOTATION MARK) - 0x2022 (BULLET) - 0x2026 (HORIZONTAL ELLIPSIS) - 0x20AC (EURO SIGN) - 0x2122 (TRADE MARK SIGN) - 0x2212 (MINUS SIGN)
Ensure fonts have ScriptLangTags declared on the 'meta' table.
⚠️ NotoSansNKo-Regular.ttf
-
⚠️ WARN
This font file does not have a 'meta' table.
[code: lacks-meta-table]
Font has old ttfautohint applied?
⚠️ NotoSansNKo-Regular.ttf
-
⚠️ WARN
ttfautohint used in font = 1.8.3; latest = 1.8.4; Need to re-run with the newer version!
[code: old-ttfa]
Ensure font can render its own name.
🔥 NotoSansNKo-Regular.ttf
-
🔥 FAIL
.notdef glyphs were found when attempting to render Noto Sans NKo
[code: render-own-name]
OS/2.fsSelection bit 7 (USE_TYPO_METRICS) is set in all fonts.
🔥 Family Check
-
🔥 FAIL
OS/2.fsSelection bit 7 (USE_TYPO_METRICS) wasNOT set in the following fonts: ['/Users/simon/others-repos/fonts//ofl/notosansnko_todelist/NotoSansNKo-Regular.ttf'].
[code: missing-os2-fsselection-bit7]