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_short_segments
- com.google.fonts/check/fontdata_namecheck
- com.google.fonts/check/outline_jaggy_segments
- com.google.fonts/check/outline_colinear_vectors
- com.google.fonts/check/outline_semi_vertical
- com.google.fonts/check/outline_alignment_miss
- com.google.fonts/check/ttx_roundtrip
Summary
💥 ERROR | ☠ FATAL | 🔥 FAIL | ⚠️ WARN | ⏩ SKIP | ℹ️ INFO | ✅ PASS |
---|---|---|---|---|---|---|
2 | 0 | 16 | 13 | 40 | 6 | 161 |
1% | 0% | 7% | 5% | 17% | 3% | 68% |
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
OpenType Specification Checks
⚠️⏩⏩⏩⏩⏩⏩⏩Check GDEF mark glyph class doesn't have characters that are not marks.
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
The following non-mark characters should not be in the GDEF mark glyph class: U+FC5E, U+FC5F, U+FC60, U+FC61, U+FC62 and U+FC63
[code: non-mark-chars]
Universal Profile Checks
💥🔥🔥🔥🔥⚠️⚠️⚠️⚠️⚠️⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩⏩ℹ️ℹ️Check that glyph for U+0675 ARABIC LETTER HIGH HAMZA is not a mark.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
The arabic letter high hamza (U+0675) should have roughly the same size the arabic letter hamza (U+0621), but a different glyph outline area was detected.
[code: glyph-area]
EXPERIMENTAL CHECK - Since 2024/12/28
Check base characters have non-zero advance width.
💥 NotoNaskhArabicUI[wght].ttf
-
💥 ERROR
Failed with AttributeError: 'CheckRunContext' object has no attribute 'get'
[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/base_has_width.py", line 46, in check_base_has_width problems = bullet_list(context, problems) File "/Users/simon/work/gf-dashboard/venv/lib/python3.13/site-packages/fontbakery/utils.py", line 155, in bullet_list return f"{indentation}{bullet} " + pretty_print_list( ~~~~~~~~~~~~~~~~~^ config, ^^^^^^^ ...<2 lines>... glue=f"\n\n{indentation}{bullet} ", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/Users/simon/work/gf-dashboard/venv/lib/python3.13/site-packages/fontbakery/utils.py", line 140, in pretty_print_list if config.get("full_lists"): ^^^^^^^^^^
Checking OS/2 usWinAscent & usWinDescent.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
OS/2.usWinAscent value should be equal or greater than 1191, but got 1069 instead
[code: ascent] -
🔥 FAIL
OS/2.usWinDescent value should be equal or greater than 419, but got 293 instead
[code: descent]
Does GPOS table have kerning information? This check skips monospaced fonts as defined by post.isFixedPitch value
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
GPOS table lacks kerning information.
[code: lacks-kern-info]
Detect any interpolation issues in the font.
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
Interpolation issues were found in the font:
[code: interpolation-issues]- Contour 0 point 72 in glyph 'uni06AA' has a kink between location wght=400 and location wght=700 - Contour 0 point 40 in glyph 'uni0602' has a kink between location wght=400 and location wght=700 - Contour order differs in glyph 'uni08F1': [0, 1] in wght=400, [1, 0] in wght=700. - Contour 0 point 26 in glyph 'uni0665' has a kink between location wght=400 and location wght=700 - Contour 0 in glyph 'uni08AA': becomes underweight between wght=400 and wght=700. - Contour 0 point 24 in glyph 'uni08AA' has a kink between location wght=400 and location wght=700
Are there caret positions declared for every ligature?
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
This font lacks caret position values for ligature glyphs on its GDEF table.
[code: lacks-caret-pos]
Ensure variable fonts include an avar table.
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
This variable font does not have an avar table. Most variable fonts should include an avar table to correctly define axes progression rates.
[code: missing-avar]
Ensure glyphs do not have components which are themselves components.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
The following glyphs have components which themselves are component glyphs: * uni0674 * uni0623 * uniFE84 * uniFE84.rlig * uni0675 * uni0675.fina * uni0675.fina.rlig * uni0628 * uniFE90 * uniFE92 * uniFE91 * uni067E * uniFB57 * uniFB59 * uniFB58 * uni067B * uniFB53 * uniFB55 * uniFB54 * uni0680 * uniFB5B * uniFB5D * uniFB5C * uni062A * uniFE96 * uniFE98 * uniFE97 * uni067C * uni067C.fina * uni067C.medi * uni067C.init * uni067D * uni067D.fina * uni067D.medi * uni067D.init * uni062B * uniFE9A * uniFE9C * uniFE9B * uni0679 * uniFB67 * uniFB69 * uniFB68 * uni067A * uniFB5F * uniFB61 * uniFB60 * uni067F * uniFB63 * uniFB65 * uniFB64 * uni0751 * uni0751 * uni0751.fina * uni0751.fina * uni0751.medi * uni0751.medi * uni0751.init * uni0751.init * uni0752 * uni0752.fina * uni0752.medi * uni0752.init * uni0753 * uni0753 * uni0753.fina * uni0753.fina * uni0753.medi * uni0753.medi * uni0753.init * uni0753.init * uni0754 * uni0754 * uni0754.fina * uni0754.fina * uni0754.medi * uni0754.medi * uni0754.init * uni0754.init * uni0755 * uni0755.fina * uni0755.medi * uni0755.init * uni062C * uniFE9E * uniFEA0 * uniFE9F * uni0686 * uniFB7B * uniFB7D * uniFB7C * uni0687 * uniFB7F * uniFB81 * uniFB80 * uni06BF * uni06BF * uni06BF.fina * uni06BF.fina * uni06BF.medi * uni06BF.medi * uni06BF.init * uni06BF.init * uni0683 * uniFB77 * uniFB79 * uniFB78 * uni0684 * uniFB73 * uniFB75 * uniFB74 * uni0681 * uni0681.fina * uni0681.medi * uni0681.init * uni0682 * uni0682.fina * uni0682.medi * uni0682.inti * uni0757 * uni0757.fina * uni0757.medi * uni0757.init * uni0685 * uni0685.fina * uni0685.medi * uni0685.init * uni0758 * uni0758.fina * uni0758.medi * uni0758.init * uni062E * uniFEA6 * uniFEA8 * uniFEA7 * uni08A2 * uni08A2 * uni08A2.fina * uni08A2.fina * uni08A2.medi * uni08A2.medi * uni08A2.init * uni08A2.init * uni0630 * uniFEAC * uniFC5B * uniFC5B.fina * uni0688 * uniFB89 * uni068C * uniFB85 * uni068D * uniFB83 * uni068A * uni068A.fina * uni068B * uni068B * uni068B.fina * uni068B.fina * uni068E * uniFB87 * uni068F * uni068F.fina * uni0690 * uni0690.fina * uni06EE * uni06EE.fina * uni0759 * uni0759 * uni0759.fina * uni0759.fina * uni075A * uni075A.fina * uni0632 * uniFEB0 * uni0691 * uniFB8D * uni0694 * uni0694.fina * uni0696 * uni0696 * uni0696.fina * uni0696.fina * uni0697 * uni0697.fina * uni0698 * uniFB8B * uni0699 * uni0699.fina * uni06EF * uni06EF.fina * uni076B * uni076B.fina * uni076C * uni076C.fina * uni0771 * uni0771.fina * uni069A * uni069A * uni069A.fina * uni069A.fina * uni069A.medi * uni069A.medi * uni069A.init * uni069A.init * uni069B * uni069B.fina * uni069B.medi * uni069B.init * uni0634 * uniFEB6 * uniFEB8 * uniFEB7 * uni06FA * uni06FA * uni06FA.fina * uni06FA.fina * uni06FA.medi * uni06FA.medi * uni06FA.init * uni06FA.init * uni069C * uni069C * uni069C.fina * uni069C.fina * uni069C.medi * uni069C.medi * uni069C.init * uni069C.init * uni069D * uni069D.fina * uni069D.medi * uni069D.init * uni069E * uni069E.fina * uni069E.medi * uni069E.init * uni0636 * uniFEBE * uniFEC0 * uniFEBF * uni06FB * uni06FB * uni06FB.fina * uni06FB.fina * uni06FB.medi * uni06FB.medi * uni06FB.init * uni06FB.init * uni069F * uni069F.fina * uni069F.medi * uni069F.init * uni0638 * uniFEC6 * uniFEC8 * uniFEC7 * uni08A3 * uni08A3.fina * uni08A3.medi * uni08A3.init * uni06A0 * uni06A0.fina * uni06A0.medi * uni06A0.init * uni063A * uniFECE * uniFED0 * uniFECF * uni06FC * uni06FC * uni06FC.fina * uni06FC.fina * uni06FC.medi * uni06FC.medi * uni06FC.init * uni06FC.init * uni0641 * uniFED2 * uniFED4 * uniFED3 * uni06A4 * uniFB6B * uniFB6D * uniFB6C * uni06A2 * uni06A2.fina * uni06A2.medi * uni06A2.init * uni06A3 * uni06A3 * uni06A3.fina * uni06A3.fina * uni06A3.medi * uni06A3.medi * uni06A3.init * uni06A3.init * uni06A5 * uni06A5.fina * uni06A5.medi * uni06A5.init * uni08A4 * uni08A4 * uni08A4.fina * uni08A4.fina * uni08A4.medi * uni08A4.medi * uni08A4.init * uni08A4.init * uni06A6 * uniFB6F * uniFB71 * uniFB70 * uni0642 * uniFED6 * uniFED8 * uniFED7 * uni06A7 * uni06A7.fina * uni06A8 * uni06A8.fina * uni08A5 * uni08A5 * uni08A5.fina * uni08A5.fina * uni08A5.medi * uni08A5.medi * uni08A5.init * uni08A5.init * uni063C * uni063C.fina * uni063C.medi * uni063C.init * uni0764 * uni0764.fina * uni0764.medi * uni0764.init * uni06AC * uni06AC.fina * uni077F * uni077F.fina * uni06AE * uni06AE.fina * uni06B2 * uni06B2.fina * uni06B2.medi * uni06B2.init * uni06B3 * uniFB97 * uniFB99 * uniFB98 * uni06B6 * uni06B6.isol * uni06B6.fina * uni06B6.medi * uni06B6.init * uni06B6.rlig * uni06B7 * uni06B7.isol * uni06B7.fina * uni06B7.medi * uni06B7.medi.rlig * uni06B7.init * uni06B7.rlig * uni06B8 * uni06B8.fina * uni06B8.medi * uni08A7 * uni0646 * uniFEE6 * uniFEE8 * uniFEE7 * uni06B9 * uni06B9 * uni06B9.fina * uni06B9.fina * uni06B9.medi * uni06B9.medi * uni06B9.init * uni06B9.init * uni06BB * uniFBA1 * uni06BC * uni06BC.fina * uni06BC.medi * uni06BC.init * uni06BD * uni06BD.fina * uni06BD.medi * uni06BD.init * uni06C0 * uniFBA5 * uni06C2 * uni06C2.fina * uni06C2.medi * uni06C2.init * uni06FF * uni06FF.fina * uni06FF.medi * uni06FF.init * uni0629 * uniFE94 * uni06C3 * uni06C3.fina * uni06CA * uni06CA.fina * uni06CF * uni06CF.fina * uni0624 * uniFE86 * uni06C9 * uniFBE3 * uni06CB * uniFBDF * uni064A * uniFEF2 * uniFEF4 * uniFEF3 * uni0626 * uniFE8A * uniFE8C * uniFE8B * uni06CE.medi * uni06CE.init * uni08A8 * uni08A8 * uni08A8.fina * uni08A8.fina * uni08A8.medi * uni08A8.medi * uni08A8.init * uni08A8.init * uni08A9 * uni08A9 * uni063D.medi * uni063D.medi * uni063D.init * uni063D.init * uniFBFF * uniFBFE * uni063E * uni063E.medi * uni063E.medi * uni063E.init * uni063E.init * uni063F * uni063F.medi * uni063F.medi * uni063F.init * uni063F.init * uni0775.medi * uni0775.init * uni0776.medi * uni0776.init * uni06D0 * uniFBE5 * uniFBE7 * uniFBE6 * uni06D1 * uni06D1.fina * uni06D3 * uniFBB1 * uni08AC * uni0676 * uni0676.fina * uni0677 * uni0677.fina * uni0678 * uni0678.fina * uni075C * uni075C.fina * uni075C.medi * uni075C.init * uni075D * uni075D.fina * uni075D.medi * uni075D.init * uni075E * uni075E.fina * uni075E.medi * uni075E.init * uni075F * uni075F.fina * uni075F.medi * uni075F.init * uni0760 * uni0760.fina * uni0760.medi * uni0760.init * uni0761 * uni0761.fina * uni0761.medi * uni0761.init * uni0765 * uni0765.fina * uni0765.medi * uni0765.init * uni0766 * uni0766.fina * uni0766.medi * uni0766.init * uni0767 * uni0767 * uni0767.fina * uni0767.fina * uni0767.medi * uni0767.medi * uni0767.init * uni0767.init * uni0768 * uni0768.fina * uni0768.medi * uni0768.init * uni0769 * uni0769.fina * uni0769.medi * uni0769.init * uni076D * uni076D.fina * uni076D.medi * uni076D.init * uni0770 * uni0770.fina * uni0770.medi * uni0770.init * uni0772 * uni0772.fina * uni0772.medi * uni0772.init * uni077E * uni077E.fina * uni077E.medi * uni077E.init * uniFDF1 * uniFEFC_uni0675 * uniFEFB_uniFBB6 * uniFEFC_uniFBB6 * uniFEF7 * uniFEF8 * uniFC05 * uniFC05 * uniFC9C * uniFC9C * uniFC06 * uniFC9D * uniFDC2 * uniFDC2 * uniFC07 * uniFC07 * uniFC9E * uniFC9E * uniFD9E * uniFD9E * uniFD9E * uniFC6A * uniFC6B * uniFC6B * uniFC08 * uniFC6C * uniFCE1 * uniFC9F * uniFC6D * uniFC6D * uniFCE2 * uniFCA0 * uniFC09 * uniFC6E * uniFC0A * uniFC0A * uniFC6F * uniFC6F * uniFC0B * uniFC0B * uniFCA1 * uniFCA1 * uniFD50 * uniFD50 * uniFDA0 * uniFDA0 * uniFD9F * uniFD9F * uniFD9F * uniFC0C * uniFCA2 * uniFD51 * uniFD51 * uniFD52 * uniFD52 * uniFD53 * uniFC0D * uniFC0D * uniFCA3 * uniFCA3 * uniFD54 * uniFD54 * uniFDA2 * uniFDA2 * uniFDA1 * uniFDA1 * uniFDA1 * uniFC70 * uniFC71 * uniFC71 * uniFC0E * uniFC72 * uniFCE3 * uniFCA4 * uniFD55 * uniFD55 * uniFD56 * uniFD57 * uniFD57 * uniFDA4 * uniFDA3 * uniFDA3 * uniFC73 * uniFC73 * uniFCE4 * uniFCA5 * uniFC0F * uniFC74 * uniFC10 * uniFC10 * uniFC75 * uniFC75 * uniFC11 * uniFC11 * uniFC76 * uniFC77 * uniFC77 * uniFC12 * uniFC78 * uniFCE5 * uniFCA6 * uniFC79 * uniFC79 * uniFCE6 * uniFC13 * uniFC7A * uniFC14 * uniFC14 * uniFC7B * uniFC7B * uniFC15 * uniFCA7 * uniFDA6 * uniFDBE * uniFDBE * uniFC16 * uniFCA8 * uniFD58 * uniFD59 * uniFDA7 * uniFDA5 * uniFDA5 * uniFD01 * uniFD1D * uniFD02 * uniFD02 * uniFD1E * uniFD1E * uniFC17 * uniFCA9 * uniFDBF * uniFDBF * uniFD5A * uniFD00 * uniFD1C * uniFEA4_uniFBBD * uniFEA4_uniFBB4_uniFBB3 * uniFEA4_uniFBB4_uniFBB3 * uniFC19 * uniFC19 * uniFCAB * uniFCAB * uniFC1A * uniFC1B * uniFCAC * uniFD03 * uniFD1F * uniFD04 * uniFD04 * uniFD20 * uniFD20 * uniFC1C * uniFD34 * uniFCAD * uniFD5D * uniFD5E * uniFD5C * uniFC1E * uniFD36 * uniFCAF * uniFDA8 * uniFDC6 * uniFDC6 * uniFD61 * uniFCFC * uniFD18 * uniFEB3_uniFBB6_uniFBB7 * uniFEB3_uniFBB6_uniFBB7 * uniFD09 * uniFD09 * uniFD25 * uniFD25 * uniFD37 * uniFD37 * uniFD2D * uniFD2D * uniFD69 * uniFD69 * uniFD69 * uniFD0A * uniFD26 * uniFD38 * uniFD2E * uniFD67 * uniFD68 * uniFDAA * uniFDAA * uniFD0B * uniFD0B * uniFD27 * uniFD27 * uniFD39 * uniFD39 * uniFD2F * uniFD2F * uniFD0D * uniFD29 * uniFD0C * uniFD28 * uniFCE9 * uniFD30 * uniFD6A * uniFD6A * uniFD6B * uniFD6B * uniFD6C * uniFD6D * uniFCEA * uniFD32 * uniFCFD * uniFD19 * uniFCFE * uniFCFE * uniFD1A * uniFD1A * uniFDA9 * uniFCB2 * uniFD06 * uniFD22 * uniFC22 * uniFC22 * uniFCB4 * uniFCB4 * uniFC23 * uniFCB5 * uniFD6E * uniFDAB * uniFDAB * uniFC24 * uniFC24 * uniFCB6 * uniFCB6 * uniFD6F * uniFD6F * uniFD70 * uniFD70 * uniFD10 * uniFD2C * uniFC25 * uniFCB7 * uniFD07 * uniFD23 * uniFD08 * uniFD08 * uniFD24 * uniFD24 * uniFD74 * uniFCF6 * uniFD12 * uniFEC4_uniFBB4 * uniFC28 * uniFD3B * uniFCB9 * uniFC29 * uniFCBA * uniFD75 * uniFDC4 * uniFDB6 * uniFCF8 * uniFD14 * uniFC2B * uniFC2B * uniFCBC * uniFCBC * uniFC2C * uniFCBD * uniFD79 * uniFD7B * uniFD7A * uniFD7A * uniFCF9 * uniFD15 * uniFCFA * uniFCFA * uniFD16 * uniFD16 * uniFC2D * uniFC2D * uniFCBE * uniFCBE * uniFC2E * uniFCBF * uniFC2F * uniFC2F * uniFCC0 * uniFCC0 * uniFD7C * uniFD7C * uniFD7D * uniFD7D * uniFC30 * uniFCC1 * uniFDC1 * uniFDC1 * uniFC31 * uniFC7C * uniFC32 * uniFC32 * uniFC7D * uniFC7D * uniFC33 * uniFCC2 * uniFC34 * uniFCC3 * uniFD7E * uniFDB4 * uniFD7F * uniFDB2 * uniFDB2 * uniFC35 * uniFC7E * uniFC36 * uniFC36 * uniFC7F * uniFC7F * uniFC38 * uniFCC4 * uniFC3A * uniFCC6 * uniFDB7 * uniFC3E * uniFC84 * uniFC3F * uniFCC9 * uniFD84 * uniFD84 * uniFD83 * uniFD83 * uniFDBC * uniFDBA * uniFDAC * uniFDAC * uniFD81 * uniFC41 * uniFCCB * uniFD85 * uniFD86 * uniFDAD * uniFC44 * uniFC87 * uni06B5_uni0675 * uni06B6_uni0627 * uni06B6_uni0675 * uni06B7_uni0675 * uni06B7_uni0675 * uni06B7_uni0773 * uni06B7_uni0774 * uni06B8_uni0675 * uniFC45 * uniFCCE * uniFD8C * uniFD92 * uniFD92 * uniFD8D * uniFDC0 * uniFDC0 * uniFD89 * uniFD8B * uniFC47 * uniFCD0 * uniFD8E * uniFD8E * uniFD8F * uniFDB9 * uniFDB9 * uniFDB1 * uniFC4A * uniFC4B * uniFC4B * uniFCD2 * uniFCD2 * uniFDBD * uniFDBD * uniFDB8 * uniFDB8 * uniFD97 * uniFD97 * uniFD98 * uniFD98 * uniFD99 * uniFD99 * uniFDC7 * uniFDC7 * uniFDC7 * uniFC4C * uniFCD3 * uniFD95 * uniFD96 * uniFDB3 * uniFDB3 * uniFC4D * uniFC4D * uniFCD4 * uniFCD4 * uniFC8A * uniFC8B * uniFC8B * uniFC4E * uniFC8C * uniFCEE * uniFCD5 * uniFD9B * uniFD9A * uniFD9A * uniFC8D * uniFC8D * uniFCEF * uniFCD6 * uniFC4F * uniFC8E * uniFC50 * uniFC50 * uniFC8F * uniFC8F * uniFC51 * uniFCD7 * uniFD93 * uniFC54 * uniFC55 * uniFC55 * uniFCDA * uniFCDA * uniFDAF * uniFDAF * uniFDAF * uniFC56 * uniFCDB * uniFDAE * uniFDAE * uniFC57 * uniFC57 * uniFCDC * uniFCDC * uniFC91 * uniFC92 * uniFC92 * uniFC58 * uniFC93 * uniFCF0 * uniFCDD * uniFD9C * uniFD9D * uniFDB0 * uniFDB0 * uniFC94 * uniFC94 * uniFCF1 * uniFCDE * uniFC59 * uniFC95 * uniFC5A * uniFC5A * uniFC96 * uniFC96 * uniFBEA * uniFBEB * uniFC00 * uniFC00 * uniFC97 * uniFC97 * uniFC01 * uniFC98 * uniFC99 * uniFC99 * uniFC64 * uniFC65 * uniFC65 * uniFC02 * uniFC66 * uniFCDF * uniFC9A * uniFC67 * uniFC67 * uniFCE0 * uniFC9B * uniFBEE * uniFBEF * uniFBF2 * uniFBF2 * uniFBF3 * uniFBF3 * uniFBF0 * uniFBF0 * uniFBF1 * uniFBF1 * uniFBF4 * uniFBF4 * uniFBF5 * uniFBF5 * uniFC03 * uniFC68 * uniFC04 * uniFC04 * uniFC69 * uniFC69 * uniFBF6 * uniFBF6 * uniFBF7 * uniFBF7 * uniFBF8 * uniFBF8 * uniFBEC * uniFBED * uniFBF9 * uniFBFA * uniFBFB * uniFDF3 * uniFDF3 * uniFDF7 * uniFEFB_uni0654 * uni060B * _1029 and _1030
[code: found-nested-components]
Ensure smart dropout control is enabled in "prep" table instructions.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the
[code: lacks-smart-dropout]gftools fix-nonhinting
script.
Check font contains no unreachable glyphs
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
The following glyphs could not be reached by codepoint or substitution rules:
[code: unreachable-glyphs]- _531.001 - _539 - _540 - _786 - _874 - _986 - _vabove - uni06A1.init - uni06A1.medi - uni06B5.isol - uni06B6.isol - uni06B7.isol - uni06BA.init - uni06BA.medi - uni06BD.init - uni06BD.medi - uniFBBB.001 - uniFC5B.fina - uniFC5C.fina - uniFD3D.rlig - uniFEA4_uniFBB4_uniFBB3 - uniFEA4_uniFBBD - uniFEB3_uniFBB6_uniFBB7 - uniFEC4_uniFBB4
Article Checks
⚠️Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
Article page lacks visual assets.
[code: missing-visual-asset] -
✅ PASS
ok
Metadata Checks
🔥🔥🔥⚠️⏩⏩⏩⏩ℹ️Check samples can be rendered.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
Font can't render "azb_Arab" sample text: "بوتون اينسانلار حيثييت و حاقلار باخيميندان دنك (برابر) و اركين"
[code: sample-text] -
🔥 FAIL
Font can't render "kk_Arab" sample text: "بارلىق ادامدار تۋمىسىنان ازات جانە قادىر-قاسىييەتى مەن كۇقىقتارى"
[code: sample-text] -
⚠️ WARN
Aparently there's no sample strings for 'ms_Arab' in the gflanguages package.
[code: no-sample-string]
METADATA.pb: Check URL on copyright string is the same as in repository_url field.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
Please add a family.source.repository_url entry.
[code: lacks-repo-url]
METADATA.pb should contain at least "menu" and "latin" subsets.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
Subsets "menu" and "latin" are mandatory, but METADATA.pb is missing "latin".
[code: missing]
Check for codepoints not covered by METADATA subsets.
⚠️ NotoNaskhArabicUI[wght].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+200F RIGHT-TO-LEFT MARK: try adding one of: thaana, phags-pa, nko, hebrew, syriac
- U+25CC DOTTED CIRCLE: try adding one of: kannada, oriya, lao, tagalog, syloti-nagri, bassa-vah, mende-kikakui, tamil, math, hanunoo, masaram-gondi, meetei-mayek, new-tai-lue, miao, javanese, buginese, rejang, wancho, bhaiksuki, kaithi, grantha, warang-citi, sogdian, gurmukhi, zanabazar-square, nko, hebrew, khojki, limbu, mongolian, tai-viet, tai-le, gunjala-gondi, armenian, buhid, siddham, brahmi, mandaic, symbols, caucasian-albanian, pahawh-hmong, marchen, kayah-li, balinese, devanagari, saurashtra, duployan, yi, myanmar, tagbanwa, tai-tham, khmer, kharoshthi, manichaean, lepcha, soyombo, gujarati, adlam, tirhuta, tibetan, music, sharada, phags-pa, cham, malayalam, hanifi-rohingya, modi, khudawadi, dogra, batak, mahajani, bengali, elbasan, telugu, chakma, newa, ahom, psalter-pahlavi, thaana, thai, canadian-aboriginal, osage, sundanese, tifinagh, old-permic, sinhala, takri, coptic, syriac
Or you can add the above codepoints to one of the subsets supported by the font:
[code: unreachable-subsetting]arabic
,menu
Glyphset Checks
💥Shapes languages in all GF glyphsets.
💥 NotoNaskhArabicUI[wght].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?
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
The following links are broken in the article file: https://scriptsource.org/scr/Arab (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
🔥⚠️⚠️⚠️Check OFL body text is correct.
⚠️ NotoNaskhArabicUI[wght].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.
🔥 NotoNaskhArabicUI[wght].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.
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13]
[code: http-in-description] -
⚠️ WARN
Please consider updating the url from 'https://scripts.sil.org/OFL' to 'https://openfontlicense.org'.
[code: old-url]
License URL matches License text on name table?
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13]
[code: http-in-description] -
⚠️ WARN
Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13]
[code: http-in-description] -
⚠️ WARN
Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13]
[code: http-in-description] -
⏩ SKIP
Could not infer the font license. Please ensure NameID 13 (LICENSE DESCRIPTION) is properly set.
Font File Checks
🔥🔥🔥🔥🔥🔥⚠️⏩⏩⏩⏩⏩ℹ️ℹ️Check variable font instances
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
fvar instances are incorrect:
- Add missing instances
- Delete additional instances
Name current expected Semi Bold wght=600.0 N/A Regular wght=400.0 wght=400.0 Medium wght=500.0 wght=500.0 SemiBold N/A wght=600.0 Bold wght=700.0 wght=700.0
Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
Font is missing the 'gasp' table. Try exporting the font with autohinting enabled. If you are dealing with an unhinted font, it can be fixed by running the fonts through the command 'gftools fix-nonhinting' GFTools is available at https://pypi.org/project/gftools/
[code: lacks-gasp]
Check Google Fonts glyph coverage.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
Missing required codepoints:
[code: missing-codepoints]- 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) - 0x002D (HYPHEN-MINUS) - 0x002F (SOLIDUS) - 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.
⚠️ NotoNaskhArabicUI[wght].ttf
-
⚠️ WARN
This font file does not have a 'meta' table.
[code: lacks-meta-table]
Version format is correct in 'name' table?
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
The NameID.VERSION_STRING (nameID=5) value must follow the pattern "Version X.Y" with X.Y greater than or equal to 1.000. The "Version " prefix is a recommendation given by the OpenType spec. Current version string is: "2.015"
[code: bad-version-strings]
Ensure font can render its own name.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
.notdef glyphs were found when attempting to render Noto Naskh Arabic UI
[code: render-own-name]
Validate STAT particle names and values match the fallback names in GFAxisRegistry.
🔥 NotoNaskhArabicUI[wght].ttf
-
🔥 FAIL
STAT table is missing Axis Value Records
[code: missing-axis-values]