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.

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:

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.

Check ID: <FontBakeryCheck:opentype/gdef_non_mark_chars>
⚠️ 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.

Check ID: <FontBakeryCheck:arabic_high_hamza>
🔥 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.

Check ID: <FontBakeryCheck:base_has_width>
💥 NotoNaskhArabicUI[wght].ttf
  • 💥 ERROR

    Failed with AttributeError: 'CheckRunContext' object has no attribute 'get'

      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"):
           ^^^^^^^^^^
    
    
    [code: failed-check]

Checking OS/2 usWinAscent & usWinDescent.

Check ID: <FontBakeryCheck:family/win_ascent_and_descent>
🔥 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

Check ID: <FontBakeryCheck:gpos_kerning_info>
⚠️ NotoNaskhArabicUI[wght].ttf
  • ⚠️ WARN

    GPOS table lacks kerning information.

    [code: lacks-kern-info]

Detect any interpolation issues in the font.

Check ID: <FontBakeryCheck:interpolation_issues>
⚠️ NotoNaskhArabicUI[wght].ttf
  • ⚠️ WARN

    Interpolation issues were found in the font:

    - 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
    
    [code: interpolation-issues]

Are there caret positions declared for every ligature?

Check ID: <FontBakeryCheck:ligature_carets>
⚠️ 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.

Check ID: <FontBakeryCheck:mandatory_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.

Check ID: <FontBakeryCheck:nested_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.

Check ID: <FontBakeryCheck:smart_dropout>
🔥 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 gftools fix-nonhinting script.

    [code: lacks-smart-dropout]

Check font contains no unreachable glyphs

Check ID: <FontBakeryCheck:unreachable_glyphs>
⚠️ NotoNaskhArabicUI[wght].ttf
  • ⚠️ WARN

    The following glyphs could not be reached by codepoint or substitution rules:

    - _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
    
    [code: unreachable-glyphs]

Article Checks

⚠️

Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.

Check ID: <FontBakeryCheck:googlefonts/article/images>
⚠️ NotoNaskhArabicUI[wght].ttf
  • ⚠️ WARN

    Article page lacks visual assets.

    [code: missing-visual-asset]
  • ✅ PASS

    ok

Metadata Checks

🔥🔥🔥⚠️⏩⏩⏩⏩ℹ️

Check samples can be rendered.

Check ID: <FontBakeryCheck:googlefonts/metadata/can_render_samples>
🔥 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.

Check ID: <FontBakeryCheck:googlefonts/metadata/consistent_repo_urls>
🔥 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.

Check ID: <FontBakeryCheck:googlefonts/metadata/menu_and_latin>
🔥 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.

Check ID: <FontBakeryCheck:googlefonts/metadata/unreachable_subsetting>
⚠️ 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: arabic, menu

    [code: unreachable-subsetting]

Glyphset Checks

💥

Shapes languages in all GF glyphsets.

Check ID: <FontBakeryCheck:googlefonts/glyphsets/shape_languages>
💥 NotoNaskhArabicUI[wght].ttf
  • 💥 ERROR

    Failed with ModuleNotFoundError: No module named 'shaperglot.checker'

      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
    
    
    [code: failed-check]

Description Checks

🔥🔥⚠️⏩

Does DESCRIPTION file contain broken links?

Check ID: <FontBakeryCheck:googlefonts/description/broken_links>
🔥 NotoNaskhArabicUI[wght].ttf

DESCRIPTION.en_us.html should end in a linebreak.

Check ID: <FontBakeryCheck:googlefonts/description/eof_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.

Check ID: <FontBakeryCheck:googlefonts/description/min_length>
🔥 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.

Check ID: <FontBakeryCheck:googlefonts/license/OFL_body_text>
⚠️ 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.

Check ID: <FontBakeryCheck:googlefonts/license/OFL_copyright>
🔥 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.

Check ID: <FontBakeryCheck:googlefonts/name/license>
⚠️ NotoNaskhArabicUI[wght].ttf

License URL matches License text on name table?

Check ID: <FontBakeryCheck:googlefonts/name/license_url>
⚠️ 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

Check ID: <FontBakeryCheck:googlefonts/fvar_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
    [code: bad-fvar-instances]

Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?

Check ID: <FontBakeryCheck:googlefonts/gasp>
🔥 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.

Check ID: <FontBakeryCheck:googlefonts/glyph_coverage>
🔥 NotoNaskhArabicUI[wght].ttf
  • 🔥 FAIL

    Missing required 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)
    
    [code: missing-codepoints]

Ensure fonts have ScriptLangTags declared on the 'meta' table.

Check ID: <FontBakeryCheck:googlefonts/meta/script_lang_tags>
⚠️ NotoNaskhArabicUI[wght].ttf
  • ⚠️ WARN

    This font file does not have a 'meta' table.

    [code: lacks-meta-table]

Version format is correct in 'name' table?

Check ID: <FontBakeryCheck:googlefonts/name/version_format>
🔥 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.

Check ID: <FontBakeryCheck:googlefonts/render_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.

Check ID: <FontBakeryCheck:googlefonts/STAT/axisregistry>
🔥 NotoNaskhArabicUI[wght].ttf
  • 🔥 FAIL

    STAT table is missing Axis Value Records

    [code: missing-axis-values]