google / fonts

Font files available from Google Fonts, and a public issue tracker for all things Google Fonts
https://fonts.google.com
18.06k stars 2.6k forks source link

Update Zain #7984

Open emmamarichal opened 1 month ago

emmamarichal commented 1 month ago

Font Project Git Repo URL:

https://github.com/googlefonts/zain

Current version:

1.2

New available version:

1.3

Super short description of the upgrade:

emmamarichal commented 1 month ago

Hi @JuergenWillrodt! cc @simoncozens @davelab6 @chrissimpkins

I started to inspect the Zain update. Italics seem to work well (menu, style linking, etc.).

However, we still have some fails (you will find the complete Fontbakery report below).


What we need to solve:

Screenshot 2024-08-01 at 10 08 36

FontBakery report

fontbakery version: 0.12.9

Experimental checks

These won't break the CI job for now, but will become effective after some time if nobody raises any concern.

[1] Zain-Black.ttf
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
* ⚠️ **WARN**

Family metadata at . does not have an article.

[code: lacks-article]
[1] Zain-Bold.ttf
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
* ⚠️ **WARN**

Family metadata at . does not have an article.

[code: lacks-article]
[1] Zain-ExtraBold.ttf
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
* ⚠️ **WARN**

Family metadata at . does not have an article.

[code: lacks-article]
[1] Zain-ExtraLight.ttf
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
* ⚠️ **WARN**

Family metadata at . does not have an article.

[code: lacks-article]
[1] Zain-Italic.ttf
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
* ⚠️ **WARN**

Family metadata at . does not have an article.

[code: lacks-article]
[1] Zain-Light.ttf
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
* ⚠️ **WARN**

Family metadata at . does not have an article.

[code: lacks-article]
[1] Zain-LightItalic.ttf
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
* ⚠️ **WARN**

Family metadata at . does not have an article.

[code: lacks-article]
[1] Zain-Regular.ttf
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.
* ⚠️ **WARN**

Family metadata at . does not have an article.

[code: lacks-article]

All other checks

[24] Zain-Black.ttf
🔥 FAIL Shapes languages in all GF glyphsets.
* 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
ar_Arab (Arabic) Shaper didn't attach uni0670 to None
^ Shaper didn't attach uni0653 to None
^ Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0655 to None
^ Shaper didn't attach uni0670 to space
^ Shaper didn't attach uni0653 to space
^ Shaper didn't attach uni0654 to space
^ Shaper didn't attach uni0655 to space
^ Shaper didn't attach uni064B to space
^ Shaper didn't attach uni064C to space
^ Shaper didn't attach uni064D to space
^ Shaper didn't attach uni064E to space
^ Shaper didn't attach uni064F to space
^ Shaper didn't attach uni0650 to space
^ Shaper didn't attach uni0651 to space
^ Shaper didn't attach uni0652 to space
^ Shaper didn't attach uni0670 to uni0640
^ Shaper didn't attach uni0653 to uni0640
^ Shaper didn't attach uni0654 to uni0640
^ Shaper didn't attach uni0655 to uni0640
^ Shaper didn't attach uni064B to uni0640
^ Shaper didn't attach uni064C to uni0640
^ Shaper didn't attach uni064D to uni0640
^ Shaper didn't attach uni064E to uni0640
^ Shaper didn't attach uni064F to uni0640
^ Shaper didn't attach uni0650 to uni0640
^ Shaper didn't attach uni0651 to uni0640
^ Shaper didn't attach uni0652 to uni0640
[code: failed-language-shaping] * 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
fa_Arab (Persian) Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0654 to space
[code: failed-language-shaping]
🔥 FAIL Check Google Fonts glyph coverage.
* 🔥 **FAIL**

Missing required codepoints:

- 0x0100 (LATIN CAPITAL LETTER A WITH MACRON)

- 0x0101 (LATIN SMALL LETTER A WITH MACRON)

- 0x0102 (LATIN CAPITAL LETTER A WITH BREVE)

- 0x0103 (LATIN SMALL LETTER A WITH BREVE)

- 0x0104 (LATIN CAPITAL LETTER A WITH OGONEK)

- 0x0105 (LATIN SMALL LETTER A WITH OGONEK)

- 0x0106 (LATIN CAPITAL LETTER C WITH ACUTE)

- 0x0107 (LATIN SMALL LETTER C WITH ACUTE)

- 0x010A (LATIN CAPITAL LETTER C WITH DOT ABOVE)

- 0x010B (LATIN SMALL LETTER C WITH DOT ABOVE)

- 97 more.

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

[code: missing-codepoints]
⚠️ WARN Check if OS/2 xAvgCharWidth is correct.
* ⚠️ **WARN**

OS/2 xAvgCharWidth is 651 but it should be 521 which corresponds to the average of the widths of all glyphs in the font.

[code: xAvgCharWidth-wrong]
⚠️ WARN Check glyphs in mark glyph class are non-spacing.
* ⚠️ **WARN**

The following spacing glyphs may be in the GDEF mark glyph class by mistake: uni06510652 (U+E121)

[code: spacing-mark-glyphs]
⚠️ WARN Check mark characters are in GDEF mark glyph class.
* ⚠️ **WARN**

The following mark characters could be in the GDEF mark glyph class: smallv (U+065A), uni0653 (U+0653), uni0654 (U+0654), uni0655 (U+0655), uni0670 (U+0670) and uni06DB (U+06DB)

[code: mark-chars]
⚠️ WARN Check GDEF mark glyph class doesn't have characters that are not marks.
* ⚠️ **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]
⚠️ WARN Check if each glyph has the recommended amount of contours.
* ⚠️ **WARN**

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

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

- Glyph name: uni00AD    Contours detected: 1    Expected: 0

- Glyph name: uni00AD   Contours detected: 1    Expected: 0
[code: contour-count]
⚠️ WARN Check math signs have the same width.
* ⚠️ **WARN**

The most common width is 432 among a set of 7 math glyphs. The following math glyphs have a different width, though:

Width = 462: lessequal, greater, less

Width = 467: greaterequal

[code: width-outliers]
⚠️ WARN Does the font contain a soft hyphen?
* ⚠️ **WARN**

This font has a 'Soft Hyphen' character.

[code: softhyphen]
⚠️ WARN Are there any misaligned on-curve points?
* ⚠️ **WARN**

The following glyphs have on-curve points which have potentially incorrect y coordinates:

* parenleft (U+0028): X=293.0,Y=697.0 (should be at cap-height 699?)

* parenleft (U+0028): X=291.0,Y=697.0 (should be at cap-height 699?)

* parenright (U+0029): X=68.0,Y=697.0 (should be at cap-height 699?)

* parenright (U+0029): X=64.0,Y=698.0 (should be at cap-height 699?)

* section (U+00A7): X=217.0,Y=1.0 (should be at baseline 0?)

* Atilde (U+00C3): X=333.0,Y=697.0 (should be at cap-height 699?)

* Ntilde (U+00D1): X=345.0,Y=697.0 (should be at cap-height 699?)

* Otilde (U+00D5): X=375.0,Y=697.0 (should be at cap-height 699?)

* ogonek (U+02DB): X=149.0,Y=2.0 (should be at baseline 0?)

* uni03BC (U+03BC): X=168.0,Y=2.0 (should be at baseline 0?)

* 39 more.

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

[code: found-misalignments]
⚠️ WARN Do any segments have colinear vectors?
* ⚠️ **WARN**

The following glyphs have colinear vectors:

* uni06C3.fina (U+E132): L<<280.0,252.0>--<280.0,196.0>> -> L<<280.0,196.0>--<280.0,184.0>>

* uni06D5.fina (U+E161): L<<280.0,252.0>--<280.0,196.0>> -> L<<280.0,196.0>--<280.0,184.0>>

* uniE15F (U+E15F): L<<280.0,252.0>--<280.0,196.0>> -> L<<280.0,196.0>--<280.0,184.0>>

* uniFBA5 (U+FBA5): L<<280.0,252.0>--<280.0,196.0>> -> L<<280.0,196.0>--<280.0,184.0>>

* uniFBA7 (U+FBA7): L<<280.0,252.0>--<280.0,196.0>> -> L<<280.0,196.0>--<280.0,184.0>>

* uniFBA8 (U+FBA8): L<<3.0,0.0>--<37.0,0.0>> -> L<<37.0,0.0>--<38.0,0.0>>

* uniFDF2 (U+FDF2): L<<280.0,252.0>--<280.0,196.0>> -> L<<280.0,196.0>--<280.0,184.0>>

* uniFE94 (U+FE94): L<<280.0,252.0>--<280.0,196.0>> -> L<<280.0,196.0>--<280.0,184.0>>

* uniFEEA (U+FEEA): L<<280.0,252.0>--<280.0,196.0>> -> L<<280.0,196.0>--<280.0,184.0>>
[code: found-colinear-vectors]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines?
* ⚠️ **WARN**

The following glyphs have semi-vertical/semi-horizontal lines:

* uni0663.tab (U+E125): L<<44.0,451.0>--<45.0,14.0>>

* uni0663: L<<44.0,451.0>--<45.0,14.0>>

* uni0664.tab (U+E126): L<<366.0,222.0>--<501.0,221.0>>

* uni0664: L<<227.0,222.0>--<362.0,221.0>>

* uni06F3.tab (U+E136): L<<44.0,451.0>--<45.0,14.0>>

* uni06F3: L<<44.0,451.0>--<45.0,14.0>>

* uniFB7D (U+FB7D): L<<0.0,133.0>--<1.0,0.0>>

* uniFBFD (U+FBFD): L<<661.0,8.0>--<662.0,133.0>>

* uniFE8A (U+FE8A): L<<661.0,8.0>--<662.0,133.0>>

* uniFEA0 (U+FEA0): L<<0.0,133.0>--<1.0,0.0>>

* 5 more.

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

[code: found-semi-vertical]
⚠️ WARN Check the direction of the outermost contour in each glyph
* ⚠️ **WARN**

The following glyphs have a counter-clockwise outer contour:

* A (U+0041) has a counter-clockwise outer contour

* AE (U+00C6) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Agrave (U+00C0) has a counter-clockwise outer contour

* 1014 more.

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

[code: ccw-outer-contour]
⚠️ WARN Check for codepoints not covered by METADATA subsets.
* ⚠️ **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+02C7 CARON: try adding one of: canadian-aboriginal, yi, tifinagh
  • 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+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition
  • U+03BC GREEK SMALL LETTER MU: try adding one of: greek, math
  • U+060C ARABIC COMMA: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061B ARABIC SEMICOLON: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061F ARABIC QUESTION MARK: try adding one of: hanifi-rohingya, syriac, adlam, yezidi, nko, arabic, thaana
  • U+0621 ARABIC LETTER HAMZA: try adding one of: syriac, arabic 359 more.

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

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Is there kerning info for non-ligated sequences?
* ⚠️ **WARN**

GPOS table lacks kerning info for the following non-ligated sequences:

- f + i

- f + l
[code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature?
* ⚠️ **WARN**

This font lacks caret position values for ligature glyphs on its GDEF table.

[code: lacks-caret-pos]
⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.
* ⚠️ **WARN**

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

[code: lacks-meta-table]
⚠️ WARN Ensure Stylistic Sets have description.
* ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description]
ℹ️ INFO List all superfamily filepaths
* ℹ️ **INFO**

.

[code: family-path]
ℹ️ INFO Font contains all required tables?
* ℹ️ **INFO**

This font contains the following optional tables:

- cvt 

- fpgm

- loca

- prep

- GPOS

- GSUB

- gasp
[code: optional-tables]
ℹ️ INFO Check for presence of an ARTICLE.en_us.html file
* ℹ️ **INFO**

This font doesn't have an ARTICLE.en_us.html file.

[code: missing-article]
ℹ️ INFO EPAR table present in font?
* ℹ️ **INFO**

EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818

[code: lacks-EPAR]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
* ℹ️ **INFO**

These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
ℹ️ INFO Show hinting filesize impact.
* ℹ️ **INFO**

Hinting filesize impact:

Zain-Black.ttf
Dehinted Size 121.9kb
Hinted Size 186.4kb
Increase 64.5kb
Change 52.9 %
[code: size-impact]
[25] Zain-Bold.ttf
🔥 FAIL Shapes languages in all GF glyphsets.
* 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
ar_Arab (Arabic) Shaper didn't attach uni0670 to None
^ Shaper didn't attach uni0653 to None
^ Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0655 to None
^ Shaper didn't attach uni0670 to space
^ Shaper didn't attach uni0653 to space
^ Shaper didn't attach uni0654 to space
^ Shaper didn't attach uni0655 to space
^ Shaper didn't attach uni064B to space
^ Shaper didn't attach uni064C to space
^ Shaper didn't attach uni064D to space
^ Shaper didn't attach uni064E to space
^ Shaper didn't attach uni064F to space
^ Shaper didn't attach uni0650 to space
^ Shaper didn't attach uni0651 to space
^ Shaper didn't attach uni0652 to space
^ Shaper didn't attach uni0670 to uni0640
^ Shaper didn't attach uni0653 to uni0640
^ Shaper didn't attach uni0654 to uni0640
^ Shaper didn't attach uni0655 to uni0640
^ Shaper didn't attach uni064B to uni0640
^ Shaper didn't attach uni064C to uni0640
^ Shaper didn't attach uni064D to uni0640
^ Shaper didn't attach uni064E to uni0640
^ Shaper didn't attach uni064F to uni0640
^ Shaper didn't attach uni0650 to uni0640
^ Shaper didn't attach uni0651 to uni0640
^ Shaper didn't attach uni0652 to uni0640
[code: failed-language-shaping] * 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
fa_Arab (Persian) Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0654 to space
[code: failed-language-shaping]
🔥 FAIL Check font names are correct
* 🔥 **FAIL**

Font names are incorrect:

nameID current expected
Family Name Zain Zain
Subfamily Name Bold Bold
Full Name Zain Bold Zain Bold
Postscript Name Zain-Bold Zain-Bold
Typographic Family Name Zain N/A
Typographic Subfamily Name Bold N/A
[code: bad-names]
🔥 FAIL Check Google Fonts glyph coverage.
* 🔥 **FAIL**

Missing required codepoints:

- 0x0100 (LATIN CAPITAL LETTER A WITH MACRON)

- 0x0101 (LATIN SMALL LETTER A WITH MACRON)

- 0x0102 (LATIN CAPITAL LETTER A WITH BREVE)

- 0x0103 (LATIN SMALL LETTER A WITH BREVE)

- 0x0104 (LATIN CAPITAL LETTER A WITH OGONEK)

- 0x0105 (LATIN SMALL LETTER A WITH OGONEK)

- 0x0106 (LATIN CAPITAL LETTER C WITH ACUTE)

- 0x0107 (LATIN SMALL LETTER C WITH ACUTE)

- 0x010A (LATIN CAPITAL LETTER C WITH DOT ABOVE)

- 0x010B (LATIN SMALL LETTER C WITH DOT ABOVE)

- 97 more.

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

[code: missing-codepoints]
⚠️ WARN Check if OS/2 xAvgCharWidth is correct.
* ⚠️ **WARN**

OS/2 xAvgCharWidth is 651 but it should be 510 which corresponds to the average of the widths of all glyphs in the font.

[code: xAvgCharWidth-wrong]
⚠️ WARN Check glyphs in mark glyph class are non-spacing.
* ⚠️ **WARN**

The following spacing glyphs may be in the GDEF mark glyph class by mistake: uni06510652 (U+E121)

[code: spacing-mark-glyphs]
⚠️ WARN Check mark characters are in GDEF mark glyph class.
* ⚠️ **WARN**

The following mark characters could be in the GDEF mark glyph class: smallv (U+065A), uni0653 (U+0653), uni0654 (U+0654), uni0655 (U+0655), uni0670 (U+0670) and uni06DB (U+06DB)

[code: mark-chars]
⚠️ WARN Check GDEF mark glyph class doesn't have characters that are not marks.
* ⚠️ **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]
⚠️ WARN Check if each glyph has the recommended amount of contours.
* ⚠️ **WARN**

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

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

- Glyph name: uni00AD    Contours detected: 1    Expected: 0

- Glyph name: uni00AD   Contours detected: 1    Expected: 0
[code: contour-count]
⚠️ WARN Check math signs have the same width.
* ⚠️ **WARN**

The most common width is 418 among a set of 7 math glyphs. The following math glyphs have a different width, though:

Width = 452: greaterequal, lessequal, greater, less

[code: width-outliers]
⚠️ WARN Does the font contain a soft hyphen?
* ⚠️ **WARN**

This font has a 'Soft Hyphen' character.

[code: softhyphen]
⚠️ WARN Are there any misaligned on-curve points?
* ⚠️ **WARN**

The following glyphs have on-curve points which have potentially incorrect y coordinates:

* parenleft (U+0028): X=275.0,Y=697.0 (should be at cap-height 699?)

* parenright (U+0029): X=55.0,Y=697.0 (should be at cap-height 699?)

* nine (U+0039): X=254.0,Y=2.0 (should be at baseline 0?)

* at (U+0040): X=620.0,Y=1.0 (should be at baseline 0?)

* f (U+0066): X=219.0,Y=479.0 (should be at x-height 480?)

* y (U+0079): X=247.0,Y=-1.0 (should be at baseline 0?)

* Adieresis (U+00C4): X=178.0,Y=697.0 (should be at cap-height 699?)

* Adieresis (U+00C4): X=336.0,Y=697.0 (should be at cap-height 699?)

* Edieresis (U+00CB): X=140.0,Y=697.0 (should be at cap-height 699?)

* Edieresis (U+00CB): X=297.0,Y=697.0 (should be at cap-height 699?)

* 46 more.

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

[code: found-misalignments]
⚠️ WARN Do any segments have colinear vectors?
* ⚠️ **WARN**

The following glyphs have colinear vectors:

* onehalf (U+00BD): L<<139.0,0.0>--<189.0,0.0>> -> L<<189.0,0.0>--<208.0,0.0>>

* uni064B (U+064B): L<<146.0,747.0>--<109.0,747.0>> -> L<<109.0,747.0>--<57.0,747.0>>

* uni064D (U+064D): L<<145.0,-66.0>--<109.0,-66.0>> -> L<<109.0,-66.0>--<57.0,-66.0>>

* uni0650 (U+0650): L<<145.0,-66.0>--<109.0,-66.0>> -> L<<109.0,-66.0>--<57.0,-66.0>>

* uniFB93 (U+FB93): L<<710.0,175.0>--<710.0,176.0>> -> L<<710.0,176.0>--<710.0,179.0>>

* uniFB95 (U+FB95): L<<512.0,175.0>--<512.0,176.0>> -> L<<512.0,176.0>--<512.0,179.0>>

* uniFBA8 (U+FBA8): L<<0.0,0.0>--<29.0,0.0>> -> L<<29.0,0.0>--<40.0,0.0>>

* uniFBA8FE8A (U+E142): L<<627.0,0.0>--<712.0,0.0>> -> L<<712.0,0.0>--<723.0,0.0>>

* uniFBA8FEF0 (U+E143): L<<627.0,0.0>--<712.0,0.0>> -> L<<712.0,0.0>--<723.0,0.0>>

* uniFBA8FEF2 (U+E144): L<<627.0,0.0>--<712.0,0.0>> -> L<<712.0,0.0>--<723.0,0.0>>

* 8 more.

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

[code: found-colinear-vectors]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines?
* ⚠️ **WARN**

The following glyphs have semi-vertical/semi-horizontal lines:

* uni0664.tab (U+E126): L<<360.0,237.0>--<488.0,236.0>>

* uni0664: L<<227.0,237.0>--<355.0,236.0>>
[code: found-semi-vertical]
⚠️ WARN Check the direction of the outermost contour in each glyph
* ⚠️ **WARN**

The following glyphs have a counter-clockwise outer contour:

* A (U+0041) has a counter-clockwise outer contour

* AE (U+00C6) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Agrave (U+00C0) has a counter-clockwise outer contour

* 1022 more.

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

[code: ccw-outer-contour]
⚠️ WARN Check for codepoints not covered by METADATA subsets.
* ⚠️ **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+02C7 CARON: try adding one of: canadian-aboriginal, yi, tifinagh
  • 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+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition
  • U+03BC GREEK SMALL LETTER MU: try adding one of: greek, math
  • U+060C ARABIC COMMA: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061B ARABIC SEMICOLON: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061F ARABIC QUESTION MARK: try adding one of: hanifi-rohingya, syriac, adlam, yezidi, nko, arabic, thaana
  • U+0621 ARABIC LETTER HAMZA: try adding one of: syriac, arabic 359 more.

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

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Is there kerning info for non-ligated sequences?
* ⚠️ **WARN**

GPOS table lacks kerning info for the following non-ligated sequences:

- f + i

- f + l
[code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature?
* ⚠️ **WARN**

This font lacks caret position values for ligature glyphs on its GDEF table.

[code: lacks-caret-pos]
⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.
* ⚠️ **WARN**

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

[code: lacks-meta-table]
⚠️ WARN Ensure Stylistic Sets have description.
* ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description]
ℹ️ INFO List all superfamily filepaths
* ℹ️ **INFO**

.

[code: family-path]
ℹ️ INFO Font contains all required tables?
* ℹ️ **INFO**

This font contains the following optional tables:

- cvt 

- fpgm

- loca

- prep

- GPOS

- GSUB

- gasp
[code: optional-tables]
ℹ️ INFO Check for presence of an ARTICLE.en_us.html file
* ℹ️ **INFO**

This font doesn't have an ARTICLE.en_us.html file.

[code: missing-article]
ℹ️ INFO EPAR table present in font?
* ℹ️ **INFO**

EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818

[code: lacks-EPAR]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
* ℹ️ **INFO**

These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
ℹ️ INFO Show hinting filesize impact.
* ℹ️ **INFO**

Hinting filesize impact:

Zain-Bold.ttf
Dehinted Size 124.2kb
Hinted Size 184.0kb
Increase 59.8kb
Change 48.1 %
[code: size-impact]
[23] Zain-ExtraBold.ttf
🔥 FAIL Shapes languages in all GF glyphsets.
* 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
ar_Arab (Arabic) Shaper didn't attach uni0670 to None
^ Shaper didn't attach uni0653 to None
^ Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0655 to None
^ Shaper didn't attach uni0670 to space
^ Shaper didn't attach uni0653 to space
^ Shaper didn't attach uni0654 to space
^ Shaper didn't attach uni0655 to space
^ Shaper didn't attach uni064B to space
^ Shaper didn't attach uni064C to space
^ Shaper didn't attach uni064D to space
^ Shaper didn't attach uni064E to space
^ Shaper didn't attach uni064F to space
^ Shaper didn't attach uni0650 to space
^ Shaper didn't attach uni0651 to space
^ Shaper didn't attach uni0652 to space
^ Shaper didn't attach uni0670 to uni0640
^ Shaper didn't attach uni0653 to uni0640
^ Shaper didn't attach uni0654 to uni0640
^ Shaper didn't attach uni0655 to uni0640
^ Shaper didn't attach uni064B to uni0640
^ Shaper didn't attach uni064C to uni0640
^ Shaper didn't attach uni064D to uni0640
^ Shaper didn't attach uni064E to uni0640
^ Shaper didn't attach uni064F to uni0640
^ Shaper didn't attach uni0650 to uni0640
^ Shaper didn't attach uni0651 to uni0640
^ Shaper didn't attach uni0652 to uni0640
[code: failed-language-shaping] * 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
fa_Arab (Persian) Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0654 to space
[code: failed-language-shaping]
🔥 FAIL Check Google Fonts glyph coverage.
* 🔥 **FAIL**

Missing required codepoints:

- 0x0100 (LATIN CAPITAL LETTER A WITH MACRON)

- 0x0101 (LATIN SMALL LETTER A WITH MACRON)

- 0x0102 (LATIN CAPITAL LETTER A WITH BREVE)

- 0x0103 (LATIN SMALL LETTER A WITH BREVE)

- 0x0104 (LATIN CAPITAL LETTER A WITH OGONEK)

- 0x0105 (LATIN SMALL LETTER A WITH OGONEK)

- 0x0106 (LATIN CAPITAL LETTER C WITH ACUTE)

- 0x0107 (LATIN SMALL LETTER C WITH ACUTE)

- 0x010A (LATIN CAPITAL LETTER C WITH DOT ABOVE)

- 0x010B (LATIN SMALL LETTER C WITH DOT ABOVE)

- 97 more.

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

[code: missing-codepoints]
⚠️ WARN Check if OS/2 xAvgCharWidth is correct.
* ⚠️ **WARN**

OS/2 xAvgCharWidth is 651 but it should be 517 which corresponds to the average of the widths of all glyphs in the font.

[code: xAvgCharWidth-wrong]
⚠️ WARN Check mark characters are in GDEF mark glyph class.
* ⚠️ **WARN**

The following mark characters could be in the GDEF mark glyph class: smallv (U+065A), uni0653 (U+0653), uni0654 (U+0654), uni0655 (U+0655), uni0670 (U+0670) and uni06DB (U+06DB)

[code: mark-chars]
⚠️ WARN Check GDEF mark glyph class doesn't have characters that are not marks.
* ⚠️ **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]
⚠️ WARN Check if each glyph has the recommended amount of contours.
* ⚠️ **WARN**

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

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

- Glyph name: uni00AD    Contours detected: 1    Expected: 0

- Glyph name: uni00AD   Contours detected: 1    Expected: 0
[code: contour-count]
⚠️ WARN Check math signs have the same width.
* ⚠️ **WARN**

The most common width is 431 among a set of 7 math glyphs. The following math glyphs have a different width, though:

Width = 452: greaterequal, lessequal, greater, less

[code: width-outliers]
⚠️ WARN Does the font contain a soft hyphen?
* ⚠️ **WARN**

This font has a 'Soft Hyphen' character.

[code: softhyphen]
⚠️ WARN Are there any misaligned on-curve points?
* ⚠️ **WARN**

The following glyphs have on-curve points which have potentially incorrect y coordinates:

* Q (U+0051): X=547.0,Y=2.0 (should be at baseline 0?)

* Q (U+0051): X=538.0,Y=-1.0 (should be at baseline 0?)

* i (U+0069): X=35.0,Y=481.0 (should be at x-height 480?)

* i (U+0069): X=160.0,Y=481.0 (should be at x-height 480?)

* i (U+0069): X=35.0,Y=481.0 (should be at x-height 480?)

* j (U+006A): X=34.0,Y=481.0 (should be at x-height 480?)

* j (U+006A): X=160.0,Y=481.0 (should be at x-height 480?)

* j (U+006A): X=34.0,Y=481.0 (should be at x-height 480?)

* Atilde (U+00C3): X=183.0,Y=701.0 (should be at cap-height 699?)

* Ntilde (U+00D1): X=199.0,Y=701.0 (should be at cap-height 699?)

* 24 more.

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

[code: found-misalignments]
⚠️ WARN Do any segments have colinear vectors?
* ⚠️ **WARN**

The following glyphs have colinear vectors:

* uni064B (U+064B): L<<150.0,667.0>--<116.0,667.0>> -> L<<116.0,667.0>--<60.0,667.0>>

* uni064B (U+064B): L<<150.0,756.0>--<116.0,756.0>> -> L<<116.0,756.0>--<60.0,756.0>>

* uni064D (U+064D): L<<149.0,-151.0>--<115.0,-151.0>> -> L<<115.0,-151.0>--<59.0,-151.0>>

* uni064D (U+064D): L<<149.0,-62.0>--<115.0,-62.0>> -> L<<115.0,-62.0>--<59.0,-62.0>>

* uni064E (U+064E): L<<150.0,667.0>--<116.0,667.0>> -> L<<116.0,667.0>--<60.0,667.0>>

* uni0650 (U+0650): L<<149.0,-62.0>--<115.0,-62.0>> -> L<<115.0,-62.0>--<59.0,-62.0>>

* uni06C3.fina (U+E132): L<<289.0,265.0>--<289.0,187.0>> -> L<<289.0,187.0>--<289.0,179.0>>

* uni06D5.fina (U+E161): L<<289.0,265.0>--<289.0,187.0>> -> L<<289.0,187.0>--<289.0,179.0>>

* uniE15F (U+E15F): L<<289.0,265.0>--<289.0,187.0>> -> L<<289.0,187.0>--<289.0,179.0>>

* uniFBA5 (U+FBA5): L<<289.0,265.0>--<289.0,187.0>> -> L<<289.0,187.0>--<289.0,179.0>>

* 10 more.

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

[code: found-colinear-vectors]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines?
* ⚠️ **WARN**

The following glyphs have semi-vertical/semi-horizontal lines:

* uni0662.tab (U+E124): L<<317.0,13.0>--<316.0,372.0>>

* uni0662: L<<161.0,13.0>--<160.0,372.0>>

* uni0663.tab (U+E125): L<<49.0,463.0>--<50.0,13.0>>

* uni0663: L<<46.0,463.0>--<47.0,13.0>>

* uni0666.tab (U+E128): L<<364.0,372.0>--<363.0,13.0>>

* uni0666: L<<209.0,372.0>--<208.0,13.0>>

* uni06F2.tab (U+E135): L<<317.0,13.0>--<316.0,372.0>>

* uni06F2: L<<161.0,13.0>--<160.0,372.0>>

* uni06F3.tab (U+E136): L<<49.0,463.0>--<50.0,13.0>>

* uni06F3: L<<46.0,463.0>--<47.0,13.0>>

* 4 more.

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

[code: found-semi-vertical]
⚠️ WARN Check the direction of the outermost contour in each glyph
* ⚠️ **WARN**

The following glyphs have a counter-clockwise outer contour:

* A (U+0041) has a counter-clockwise outer contour

* AE (U+00C6) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Agrave (U+00C0) has a counter-clockwise outer contour

* 1026 more.

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

[code: ccw-outer-contour]
⚠️ WARN Check for codepoints not covered by METADATA subsets.
* ⚠️ **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+02C7 CARON: try adding one of: canadian-aboriginal, yi, tifinagh
  • 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+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition
  • U+03BC GREEK SMALL LETTER MU: try adding one of: greek, math
  • U+060C ARABIC COMMA: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061B ARABIC SEMICOLON: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061F ARABIC QUESTION MARK: try adding one of: hanifi-rohingya, syriac, adlam, yezidi, nko, arabic, thaana
  • U+0621 ARABIC LETTER HAMZA: try adding one of: syriac, arabic 359 more.

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

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Is there kerning info for non-ligated sequences?
* ⚠️ **WARN**

GPOS table lacks kerning info for the following non-ligated sequences:

- f + i

- f + l
[code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature?
* ⚠️ **WARN**

This font lacks caret position values for ligature glyphs on its GDEF table.

[code: lacks-caret-pos]
⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.
* ⚠️ **WARN**

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

[code: lacks-meta-table]
⚠️ WARN Ensure Stylistic Sets have description.
* ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description]
ℹ️ INFO List all superfamily filepaths
* ℹ️ **INFO**

.

[code: family-path]
ℹ️ INFO Font contains all required tables?
* ℹ️ **INFO**

This font contains the following optional tables:

- cvt 

- fpgm

- loca

- prep

- GPOS

- GSUB

- gasp
[code: optional-tables]
ℹ️ INFO Check for presence of an ARTICLE.en_us.html file
* ℹ️ **INFO**

This font doesn't have an ARTICLE.en_us.html file.

[code: missing-article]
ℹ️ INFO EPAR table present in font?
* ℹ️ **INFO**

EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818

[code: lacks-EPAR]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
* ℹ️ **INFO**

These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
ℹ️ INFO Show hinting filesize impact.
* ℹ️ **INFO**

Hinting filesize impact:

Zain-ExtraBold.ttf
Dehinted Size 121.4kb
Hinted Size 183.0kb
Increase 61.6kb
Change 50.7 %
[code: size-impact]
[23] Zain-ExtraLight.ttf
🔥 FAIL Shapes languages in all GF glyphsets.
* 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
ar_Arab (Arabic) Shaper didn't attach uni0670 to None
^ Shaper didn't attach uni0653 to None
^ Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0655 to None
^ Shaper didn't attach uni0670 to space
^ Shaper didn't attach uni0653 to space
^ Shaper didn't attach uni0654 to space
^ Shaper didn't attach uni0655 to space
^ Shaper didn't attach uni064B to space
^ Shaper didn't attach uni064C to space
^ Shaper didn't attach uni064D to space
^ Shaper didn't attach uni064E to space
^ Shaper didn't attach uni064F to space
^ Shaper didn't attach uni0650 to space
^ Shaper didn't attach uni0651 to space
^ Shaper didn't attach uni0652 to space
^ Shaper didn't attach uni0670 to uni0640
^ Shaper didn't attach uni0653 to uni0640
^ Shaper didn't attach uni0654 to uni0640
^ Shaper didn't attach uni0655 to uni0640
^ Shaper didn't attach uni064B to uni0640
^ Shaper didn't attach uni064C to uni0640
^ Shaper didn't attach uni064D to uni0640
^ Shaper didn't attach uni064E to uni0640
^ Shaper didn't attach uni064F to uni0640
^ Shaper didn't attach uni0650 to uni0640
^ Shaper didn't attach uni0651 to uni0640
^ Shaper didn't attach uni0652 to uni0640
[code: failed-language-shaping] * 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
fa_Arab (Persian) Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0654 to space
[code: failed-language-shaping]
🔥 FAIL Check Google Fonts glyph coverage.
* 🔥 **FAIL**

Missing required codepoints:

- 0x0100 (LATIN CAPITAL LETTER A WITH MACRON)

- 0x0101 (LATIN SMALL LETTER A WITH MACRON)

- 0x0102 (LATIN CAPITAL LETTER A WITH BREVE)

- 0x0103 (LATIN SMALL LETTER A WITH BREVE)

- 0x0104 (LATIN CAPITAL LETTER A WITH OGONEK)

- 0x0105 (LATIN SMALL LETTER A WITH OGONEK)

- 0x0106 (LATIN CAPITAL LETTER C WITH ACUTE)

- 0x0107 (LATIN SMALL LETTER C WITH ACUTE)

- 0x010A (LATIN CAPITAL LETTER C WITH DOT ABOVE)

- 0x010B (LATIN SMALL LETTER C WITH DOT ABOVE)

- 97 more.

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

[code: missing-codepoints]
⚠️ WARN Check if OS/2 xAvgCharWidth is correct.
* ⚠️ **WARN**

OS/2 xAvgCharWidth is 651 but it should be 482 which corresponds to the average of the widths of all glyphs in the font.

[code: xAvgCharWidth-wrong]
⚠️ WARN Check glyphs in mark glyph class are non-spacing.
* ⚠️ **WARN**

The following spacing glyphs may be in the GDEF mark glyph class by mistake: uni06510652 (U+E121)

[code: spacing-mark-glyphs]
⚠️ WARN Check mark characters are in GDEF mark glyph class.
* ⚠️ **WARN**

The following mark characters could be in the GDEF mark glyph class: smallv (U+065A), uni0653 (U+0653), uni0654 (U+0654), uni0655 (U+0655), uni0670 (U+0670) and uni06DB (U+06DB)

[code: mark-chars]
⚠️ WARN Check GDEF mark glyph class doesn't have characters that are not marks.
* ⚠️ **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]
⚠️ WARN Check if each glyph has the recommended amount of contours.
* ⚠️ **WARN**

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

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

- Glyph name: uni00AD    Contours detected: 1    Expected: 0

- Glyph name: uni00AD   Contours detected: 1    Expected: 0
[code: contour-count]
⚠️ WARN Check math signs have the same width.
* ⚠️ **WARN**

The most common width is 388 among a set of 7 math glyphs. The following math glyphs have a different width, though:

Width = 450: greaterequal, lessequal, greater, less

[code: width-outliers]
⚠️ WARN Does the font contain a soft hyphen?
* ⚠️ **WARN**

This font has a 'Soft Hyphen' character.

[code: softhyphen]
⚠️ WARN Do any segments have colinear vectors?
* ⚠️ **WARN**

The following glyphs have colinear vectors:

* Decoratedbracketleft (U+E100): L<<163.0,393.0>--<164.0,391.0>> -> L<<164.0,391.0>--<187.0,351.0>>

* Decoratedbracketright (U+E101): L<<107.0,234.0>--<109.0,235.0>> -> L<<109.0,235.0>--<149.0,258.0>>

* Decoratedbracketright (U+E101): L<<243.0,351.0>--<266.0,391.0>> -> L<<266.0,391.0>--<267.0,393.0>>

* uni06A1.fina (U+E12F): L<<589.0,23.0>--<571.0,23.0>> -> L<<571.0,23.0>--<251.0,23.0>>

* uniFB6B (U+FB6B): L<<589.0,23.0>--<571.0,23.0>> -> L<<571.0,23.0>--<251.0,23.0>>

* uniFED2 (U+FED2): L<<589.0,23.0>--<571.0,23.0>> -> L<<571.0,23.0>--<251.0,23.0>>
[code: found-colinear-vectors]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines?
* ⚠️ **WARN**

The following glyphs have semi-vertical/semi-horizontal lines:

* exclam (U+0021): L<<59.0,553.0>--<60.0,124.0>>

* exclam (U+0021): L<<83.0,124.0>--<85.0,528.0>>

* exclam.ar (U+E103): L<<98.0,122.0>--<99.0,553.0>>

* exclamdown (U+00A1): L<<49.0,224.0>--<47.0,-204.0>>

* exclamdown (U+00A1): L<<74.0,-204.0>--<73.0,200.0>>

* uni06F4.tab (U+E137): L<<224.0,7.0>--<225.0,319.0>>

* uni06F4: L<<104.0,7.0>--<105.0,319.0>>
[code: found-semi-vertical]
⚠️ WARN Check the direction of the outermost contour in each glyph
* ⚠️ **WARN**

The following glyphs have a counter-clockwise outer contour:

* A (U+0041) has a counter-clockwise outer contour

* AE (U+00C6) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Agrave (U+00C0) has a counter-clockwise outer contour

* 1018 more.

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

[code: ccw-outer-contour]
⚠️ WARN Check for codepoints not covered by METADATA subsets.
* ⚠️ **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+02C7 CARON: try adding one of: canadian-aboriginal, yi, tifinagh
  • 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+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition
  • U+03BC GREEK SMALL LETTER MU: try adding one of: greek, math
  • U+060C ARABIC COMMA: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061B ARABIC SEMICOLON: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061F ARABIC QUESTION MARK: try adding one of: hanifi-rohingya, syriac, adlam, yezidi, nko, arabic, thaana
  • U+0621 ARABIC LETTER HAMZA: try adding one of: syriac, arabic 359 more.

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

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Is there kerning info for non-ligated sequences?
* ⚠️ **WARN**

GPOS table lacks kerning info for the following non-ligated sequences:

- f + i

- f + l
[code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature?
* ⚠️ **WARN**

This font lacks caret position values for ligature glyphs on its GDEF table.

[code: lacks-caret-pos]
⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.
* ⚠️ **WARN**

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

[code: lacks-meta-table]
⚠️ WARN Ensure Stylistic Sets have description.
* ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description]
ℹ️ INFO List all superfamily filepaths
* ℹ️ **INFO**

.

[code: family-path]
ℹ️ INFO Font contains all required tables?
* ℹ️ **INFO**

This font contains the following optional tables:

- cvt 

- fpgm

- loca

- prep

- GPOS

- GSUB

- gasp
[code: optional-tables]
ℹ️ INFO Check for presence of an ARTICLE.en_us.html file
* ℹ️ **INFO**

This font doesn't have an ARTICLE.en_us.html file.

[code: missing-article]
ℹ️ INFO EPAR table present in font?
* ℹ️ **INFO**

EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818

[code: lacks-EPAR]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
* ℹ️ **INFO**

These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
ℹ️ INFO Show hinting filesize impact.
* ℹ️ **INFO**

Hinting filesize impact:

Zain-ExtraLight.ttf
Dehinted Size 125.5kb
Hinted Size 170.4kb
Increase 44.9kb
Change 35.8 %
[code: size-impact]
[25] Zain-Italic.ttf
🔥 FAIL Shapes languages in all GF glyphsets.
* 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
ar_Arab (Arabic) Shaper didn't attach uni0670 to None
^ Shaper didn't attach uni0653 to None
^ Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0655 to None
^ Shaper didn't attach uni0670 to space
^ Shaper didn't attach uni0653 to space
^ Shaper didn't attach uni0654 to space
^ Shaper didn't attach uni0655 to space
^ Shaper didn't attach uni064B to space
^ Shaper didn't attach uni064C to space
^ Shaper didn't attach uni064D to space
^ Shaper didn't attach uni064E to space
^ Shaper didn't attach uni064F to space
^ Shaper didn't attach uni0650 to space
^ Shaper didn't attach uni0651 to space
^ Shaper didn't attach uni0652 to space
^ Shaper didn't attach uni0670 to uni0640
^ Shaper didn't attach uni0653 to uni0640
^ Shaper didn't attach uni0654 to uni0640
^ Shaper didn't attach uni0655 to uni0640
^ Shaper didn't attach uni064B to uni0640
^ Shaper didn't attach uni064C to uni0640
^ Shaper didn't attach uni064D to uni0640
^ Shaper didn't attach uni064E to uni0640
^ Shaper didn't attach uni064F to uni0640
^ Shaper didn't attach uni0650 to uni0640
^ Shaper didn't attach uni0651 to uni0640
^ Shaper didn't attach uni0652 to uni0640
[code: failed-language-shaping] * 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
fa_Arab (Persian) Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0654 to space
[code: failed-language-shaping]
🔥 FAIL Check font names are correct
* 🔥 **FAIL**

Font names are incorrect:

nameID current expected
Family Name Zain Zain
Subfamily Name Italic Italic
Full Name Zain Italic Zain Italic
Postscript Name Zain-Italic Zain-Italic
Typographic Family Name Zain N/A
Typographic Subfamily Name Italic N/A
[code: bad-names]
🔥 FAIL Check Google Fonts glyph coverage.
* 🔥 **FAIL**

Missing required codepoints:

- 0x0100 (LATIN CAPITAL LETTER A WITH MACRON)

- 0x0101 (LATIN SMALL LETTER A WITH MACRON)

- 0x0102 (LATIN CAPITAL LETTER A WITH BREVE)

- 0x0103 (LATIN SMALL LETTER A WITH BREVE)

- 0x0104 (LATIN CAPITAL LETTER A WITH OGONEK)

- 0x0105 (LATIN SMALL LETTER A WITH OGONEK)

- 0x0106 (LATIN CAPITAL LETTER C WITH ACUTE)

- 0x0107 (LATIN SMALL LETTER C WITH ACUTE)

- 0x010A (LATIN CAPITAL LETTER C WITH DOT ABOVE)

- 0x010B (LATIN SMALL LETTER C WITH DOT ABOVE)

- 97 more.

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

[code: missing-codepoints]
⚠️ WARN Check if OS/2 xAvgCharWidth is correct.
* ⚠️ **WARN**

OS/2 xAvgCharWidth is 651 but it should be 496 which corresponds to the average of the widths of all glyphs in the font.

[code: xAvgCharWidth-wrong]
⚠️ WARN Check mark characters are in GDEF mark glyph class.
* ⚠️ **WARN**

The following mark characters could be in the GDEF mark glyph class: smallv (U+065A), uni0653 (U+0653), uni0654 (U+0654), uni0655 (U+0655), uni0670 (U+0670) and uni06DB (U+06DB)

[code: mark-chars]
⚠️ WARN Check GDEF mark glyph class doesn't have characters that are not marks.
* ⚠️ **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]
⚠️ WARN Check hhea.caretSlopeRise and hhea.caretSlopeRun
* ⚠️ **WARN**

hhea.caretSlopeRise and hhea.caretSlopeRun do not match with post.italicAngle. Got: caretSlopeRise 1 and caretSlopeRun 0 Expected: caretSlopeRise 1000 and caretSlopeRun 176

[code: caretslope-mismatch]
⚠️ WARN Check if each glyph has the recommended amount of contours.
* ⚠️ **WARN**

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

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

- Glyph name: uni00AD    Contours detected: 1    Expected: 0

- Glyph name: uni00AD   Contours detected: 1    Expected: 0
[code: contour-count]
⚠️ WARN Check math signs have the same width.
* ⚠️ **WARN**

The most common width is 403 among a set of 7 math glyphs. The following math glyphs have a different width, though:

Width = 450: greaterequal, lessequal, less

Width = 451: greater

[code: width-outliers]
⚠️ WARN Does the font contain a soft hyphen?
* ⚠️ **WARN**

This font has a 'Soft Hyphen' character.

[code: softhyphen]
⚠️ WARN Are there any misaligned on-curve points?
* ⚠️ **WARN**

The following glyphs have on-curve points which have potentially incorrect y coordinates:

* .notdef: X=281.0,Y=2.0 (should be at baseline 0?)

* exclam (U+0021): X=8.5,Y=2.0 (should be at baseline 0?)

* parenleft (U+0028): X=220.0,Y=697.0 (should be at cap-height 699?)

* parenright (U+0029): X=5.0,Y=697.0 (should be at cap-height 699?)

* nine (U+0039): X=272.0,Y=1.0 (should be at baseline 0?)

* question (U+003F): X=104.5,Y=2.0 (should be at baseline 0?)

* at (U+0040): X=669.0,Y=2.0 (should be at baseline 0?)

* Q (U+0051): X=473.0,Y=-2.0 (should be at baseline 0?)

* section (U+00A7): X=61.0,Y=-1.0 (should be at baseline 0?)

* ogonek (U+02DB): X=124.0,Y=1.0 (should be at baseline 0?)

* 68 more.

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

[code: found-misalignments]
⚠️ WARN Do any segments have colinear vectors?
* ⚠️ **WARN**

The following glyphs have colinear vectors:

* fl (U+FB02): L<<386.0,547.0>--<311.0,117.0>> -> L<<311.0,117.0>--<309.0,107.0>>

* guillemotleft.latn (U+E22B): L<<173.0,175.0>--<174.0,173.0>> -> L<<174.0,173.0>--<246.0,49.0>>

* h (U+0068): L<<343.0,9.0>--<379.0,216.0>> -> L<<379.0,216.0>--<380.0,221.0>>

* l (U+006C): L<<109.0,547.0>--<34.0,117.0>> -> L<<34.0,117.0>--<32.0,107.0>>

* n (U+006E): L<<342.0,9.0>--<378.0,216.0>> -> L<<378.0,216.0>--<379.0,224.0>>

* ntilde (U+00F1): L<<342.0,9.0>--<378.0,216.0>> -> L<<378.0,216.0>--<379.0,224.0>>

* smalltahar (U+E119): L<<126.0,448.0>--<120.0,486.0>> -> L<<120.0,486.0>--<113.0,523.0>>

* uni03BC (U+03BC): L<<75.0,360.0>--<44.0,182.0>> -> L<<44.0,182.0>--<-16.0,-151.0>>

* uni0679 (U+0679): L<<368.0,431.0>--<362.0,468.0>> -> L<<362.0,468.0>--<355.0,506.0>>

* uni0688 (U+0688): L<<170.0,504.0>--<164.0,541.0>> -> L<<164.0,541.0>--<157.0,579.0>>

* 17 more.

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

[code: found-colinear-vectors]
⚠️ WARN Do outlines contain any jaggy segments?
* ⚠️ **WARN**

The following glyphs have jaggy segments:

* uniFB9F (U+FB9F): B<<616.0,99.0>-<590.0,124.0>-<582.0,167.0>>/L<<582.0,167.0>--<582.0,166.0>> = 10.539183728628242

* uniFB9F (U+FB9F): L<<582.0,167.0>--<582.0,166.0>>/L<<582.0,166.0>--<549.0,350.0>> = 10.167775487411356

* uniFEE6 (U+FEE6): B<<616.0,99.0>-<590.0,124.0>-<582.0,167.0>>/L<<582.0,167.0>--<582.0,166.0>> = 10.539183728628242

* uniFEE6 (U+FEE6): L<<582.0,167.0>--<582.0,166.0>>/L<<582.0,166.0>--<549.0,350.0>> = 10.167775487411356
[code: found-jaggy-segments]
⚠️ WARN Check the direction of the outermost contour in each glyph
* ⚠️ **WARN**

The following glyphs have a counter-clockwise outer contour:

* A (U+0041) has a counter-clockwise outer contour

* AE (U+00C6) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Agrave (U+00C0) has a counter-clockwise outer contour

* 1150 more.

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

[code: ccw-outer-contour]
⚠️ WARN Check for codepoints not covered by METADATA subsets.
* ⚠️ **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+02C7 CARON: try adding one of: canadian-aboriginal, yi, tifinagh
  • 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+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition
  • U+03BC GREEK SMALL LETTER MU: try adding one of: greek, math
  • U+060C ARABIC COMMA: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061B ARABIC SEMICOLON: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061F ARABIC QUESTION MARK: try adding one of: hanifi-rohingya, syriac, adlam, yezidi, nko, arabic, thaana
  • U+0621 ARABIC LETTER HAMZA: try adding one of: syriac, arabic 449 more.

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

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Is there kerning info for non-ligated sequences?
* ⚠️ **WARN**

GPOS table lacks kerning info for the following non-ligated sequences:

- f + i

- f + l
[code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature?
* ⚠️ **WARN**

This font lacks caret position values for ligature glyphs on its GDEF table.

[code: lacks-caret-pos]
⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.
* ⚠️ **WARN**

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

[code: lacks-meta-table]
⚠️ WARN Ensure Stylistic Sets have description.
* ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description]
ℹ️ INFO List all superfamily filepaths
* ℹ️ **INFO**

.

[code: family-path]
ℹ️ INFO Font contains all required tables?
* ℹ️ **INFO**

This font contains the following optional tables:

- cvt 

- fpgm

- loca

- prep

- GPOS

- GSUB

- gasp
[code: optional-tables]
ℹ️ INFO Check for presence of an ARTICLE.en_us.html file
* ℹ️ **INFO**

This font doesn't have an ARTICLE.en_us.html file.

[code: missing-article]
ℹ️ INFO EPAR table present in font?
* ℹ️ **INFO**

EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818

[code: lacks-EPAR]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
* ℹ️ **INFO**

These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
ℹ️ INFO Show hinting filesize impact.
* ℹ️ **INFO**

Hinting filesize impact:

Zain-Italic.ttf
Dehinted Size 140.4kb
Hinted Size 200.4kb
Increase 60.1kb
Change 42.8 %
[code: size-impact]
[24] Zain-Light.ttf
🔥 FAIL Shapes languages in all GF glyphsets.
* 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
ar_Arab (Arabic) Shaper didn't attach uni0670 to None
^ Shaper didn't attach uni0653 to None
^ Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0655 to None
^ Shaper didn't attach uni0670 to space
^ Shaper didn't attach uni0653 to space
^ Shaper didn't attach uni0654 to space
^ Shaper didn't attach uni0655 to space
^ Shaper didn't attach uni064B to space
^ Shaper didn't attach uni064C to space
^ Shaper didn't attach uni064D to space
^ Shaper didn't attach uni064E to space
^ Shaper didn't attach uni064F to space
^ Shaper didn't attach uni0650 to space
^ Shaper didn't attach uni0651 to space
^ Shaper didn't attach uni0652 to space
^ Shaper didn't attach uni0670 to uni0640
^ Shaper didn't attach uni0653 to uni0640
^ Shaper didn't attach uni0654 to uni0640
^ Shaper didn't attach uni0655 to uni0640
^ Shaper didn't attach uni064B to uni0640
^ Shaper didn't attach uni064C to uni0640
^ Shaper didn't attach uni064D to uni0640
^ Shaper didn't attach uni064E to uni0640
^ Shaper didn't attach uni064F to uni0640
^ Shaper didn't attach uni0650 to uni0640
^ Shaper didn't attach uni0651 to uni0640
^ Shaper didn't attach uni0652 to uni0640
[code: failed-language-shaping] * 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
fa_Arab (Persian) Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0654 to space
[code: failed-language-shaping]
🔥 FAIL Check Google Fonts glyph coverage.
* 🔥 **FAIL**

Missing required codepoints:

- 0x0100 (LATIN CAPITAL LETTER A WITH MACRON)

- 0x0101 (LATIN SMALL LETTER A WITH MACRON)

- 0x0102 (LATIN CAPITAL LETTER A WITH BREVE)

- 0x0103 (LATIN SMALL LETTER A WITH BREVE)

- 0x0104 (LATIN CAPITAL LETTER A WITH OGONEK)

- 0x0105 (LATIN SMALL LETTER A WITH OGONEK)

- 0x0106 (LATIN CAPITAL LETTER C WITH ACUTE)

- 0x0107 (LATIN SMALL LETTER C WITH ACUTE)

- 0x010A (LATIN CAPITAL LETTER C WITH DOT ABOVE)

- 0x010B (LATIN SMALL LETTER C WITH DOT ABOVE)

- 97 more.

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

[code: missing-codepoints]
⚠️ WARN Check if OS/2 xAvgCharWidth is correct.
* ⚠️ **WARN**

OS/2 xAvgCharWidth is 651 but it should be 492 which corresponds to the average of the widths of all glyphs in the font.

[code: xAvgCharWidth-wrong]
⚠️ WARN Check glyphs in mark glyph class are non-spacing.
* ⚠️ **WARN**

The following spacing glyphs may be in the GDEF mark glyph class by mistake: uni06510652 (U+E121)

[code: spacing-mark-glyphs]
⚠️ WARN Check mark characters are in GDEF mark glyph class.
* ⚠️ **WARN**

The following mark characters could be in the GDEF mark glyph class: uni0653 (U+0653), uni0654 (U+0654), uni0655 (U+0655), uni065A (U+065A), uni0670 (U+0670) and uni06DB (U+06DB)

[code: mark-chars]
⚠️ WARN Check GDEF mark glyph class doesn't have characters that are not marks.
* ⚠️ **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]
⚠️ WARN Check if each glyph has the recommended amount of contours.
* ⚠️ **WARN**

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

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

- Glyph name: uni00AD    Contours detected: 1    Expected: 0

- Glyph name: uni00AD   Contours detected: 1    Expected: 0
[code: contour-count]
⚠️ WARN Check math signs have the same width.
* ⚠️ **WARN**

The most common width is 384 among a set of 7 math glyphs. The following math glyphs have a different width, though:

Width = 449: greaterequal, lessequal, greater, less

[code: width-outliers]
⚠️ WARN Does the font contain a soft hyphen?
* ⚠️ **WARN**

This font has a 'Soft Hyphen' character.

[code: softhyphen]
⚠️ WARN Are there any misaligned on-curve points?
* ⚠️ **WARN**

The following glyphs have on-curve points which have potentially incorrect y coordinates:

* parenleft (U+0028): X=255.0,Y=697.0 (should be at cap-height 699?)

* parenright (U+0029): X=61.0,Y=697.0 (should be at cap-height 699?)

* comma (U+002C): X=43.5,Y=-1.0 (should be at baseline 0?)

* nine (U+0039): X=209.0,Y=-1.0 (should be at baseline 0?)

* semicolon (U+003B): X=53.5,Y=-1.0 (should be at baseline 0?)

* i (U+0069): X=110.0,Y=482.0 (should be at x-height 480?)

* i (U+0069): X=62.5,Y=482.0 (should be at x-height 480?)

* j (U+006A): X=109.0,Y=482.0 (should be at x-height 480?)

* j (U+006A): X=62.5,Y=482.0 (should be at x-height 480?)

* cedilla (U+00B8): X=100.0,Y=-1.0 (should be at baseline 0?)

* 85 more.

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

[code: found-misalignments]
⚠️ WARN Do any segments have colinear vectors?
* ⚠️ **WARN**

The following glyphs have colinear vectors:

* uniE15F (U+E15F): L<<813.0,49.0>--<789.0,49.0>> -> L<<789.0,49.0>--<763.0,49.0>>

* uniFDF2 (U+FDF2): L<<813.0,49.0>--<789.0,49.0>> -> L<<789.0,49.0>--<763.0,49.0>>

* uniFEB3 (U+FEB3): L<<163.0,151.0>--<163.0,155.0>> -> L<<163.0,155.0>--<163.0,303.0>>

* uniFEB4 (U+FEB4): L<<163.0,151.0>--<163.0,155.0>> -> L<<163.0,155.0>--<163.0,303.0>>

* uniFEB7 (U+FEB7): L<<163.0,151.0>--<163.0,155.0>> -> L<<163.0,155.0>--<163.0,303.0>>

* uniFEB8 (U+FEB8): L<<163.0,151.0>--<163.0,155.0>> -> L<<163.0,155.0>--<163.0,303.0>>

* uniFEBA (U+FEBA): L<<1187.0,154.0>--<1186.0,175.0>> -> L<<1186.0,175.0>--<1186.0,177.0>>

* uniFEBC (U+FEBC): L<<795.0,154.0>--<794.0,175.0>> -> L<<794.0,175.0>--<794.0,177.0>>

* uniFEBE (U+FEBE): L<<1187.0,154.0>--<1186.0,175.0>> -> L<<1186.0,175.0>--<1186.0,177.0>>

* uniFEC0 (U+FEC0): L<<795.0,154.0>--<794.0,175.0>> -> L<<794.0,175.0>--<794.0,177.0>>

* 4 more.

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

[code: found-colinear-vectors]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines?
* ⚠️ **WARN**

The following glyphs have semi-vertical/semi-horizontal lines:

* exclam (U+0021): L<<45.0,549.0>--<47.0,141.0>>

* exclam.ar (U+E103): L<<108.0,141.0>--<111.0,551.0>>

* exclam.ar (U+E103): L<<59.0,504.0>--<62.0,141.0>>

* exclamdown (U+00A1): L<<49.0,216.0>--<47.0,-193.0>>

* uni0663.tab (U+E125): L<<66.0,504.0>--<67.0,8.0>>

* uni0663: L<<70.0,504.0>--<71.0,8.0>>

* uni06F3.tab (U+E136): L<<66.0,504.0>--<67.0,8.0>>

* uni06F3: L<<70.0,504.0>--<71.0,8.0>>

* uni06F4.tab (U+E137): L<<243.0,10.0>--<244.0,291.0>>

* uni06F4: L<<121.0,10.0>--<122.0,291.0>>
[code: found-semi-vertical]
⚠️ WARN Check the direction of the outermost contour in each glyph
* ⚠️ **WARN**

The following glyphs have a counter-clockwise outer contour:

* A (U+0041) has a counter-clockwise outer contour

* AE (U+00C6) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Agrave (U+00C0) has a counter-clockwise outer contour

* 1003 more.

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

[code: ccw-outer-contour]
⚠️ WARN Check for codepoints not covered by METADATA subsets.
* ⚠️ **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+02C7 CARON: try adding one of: canadian-aboriginal, yi, tifinagh
  • 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+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition
  • U+03BC GREEK SMALL LETTER MU: try adding one of: greek, math
  • U+060C ARABIC COMMA: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061B ARABIC SEMICOLON: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061F ARABIC QUESTION MARK: try adding one of: hanifi-rohingya, syriac, adlam, yezidi, nko, arabic, thaana
  • U+0621 ARABIC LETTER HAMZA: try adding one of: syriac, arabic 359 more.

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

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Is there kerning info for non-ligated sequences?
* ⚠️ **WARN**

GPOS table lacks kerning info for the following non-ligated sequences:

- f + i

- f + l
[code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature?
* ⚠️ **WARN**

This font lacks caret position values for ligature glyphs on its GDEF table.

[code: lacks-caret-pos]
⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.
* ⚠️ **WARN**

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

[code: lacks-meta-table]
⚠️ WARN Ensure Stylistic Sets have description.
* ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description]
ℹ️ INFO List all superfamily filepaths
* ℹ️ **INFO**

.

[code: family-path]
ℹ️ INFO Font contains all required tables?
* ℹ️ **INFO**

This font contains the following optional tables:

- cvt 

- fpgm

- loca

- prep

- GPOS

- GSUB

- gasp
[code: optional-tables]
ℹ️ INFO Check for presence of an ARTICLE.en_us.html file
* ℹ️ **INFO**

This font doesn't have an ARTICLE.en_us.html file.

[code: missing-article]
ℹ️ INFO EPAR table present in font?
* ℹ️ **INFO**

EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818

[code: lacks-EPAR]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
* ℹ️ **INFO**

These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
ℹ️ INFO Show hinting filesize impact.
* ℹ️ **INFO**

Hinting filesize impact:

Zain-Light.ttf
Dehinted Size 126.3kb
Hinted Size 183.2kb
Increase 56.9kb
Change 45.1 %
[code: size-impact]
[24] Zain-LightItalic.ttf
🔥 FAIL Check name table IDs 1, 2, 16, 17 to conform to Italic style.
* 🔥 **FAIL**

Name ID 2 (Subfamily Name) does not conform to specs. Only R/I/B/BI are allowed. Got: 'Light Italic'.

[code: bad-subfamilyname]
🔥 FAIL Shapes languages in all GF glyphsets.
* 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
ar_Arab (Arabic) Shaper didn't attach uni0670 to None
^ Shaper didn't attach uni0653 to None
^ Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0655 to None
^ Shaper didn't attach uni0670 to space
^ Shaper didn't attach uni0653 to space
^ Shaper didn't attach uni0654 to space
^ Shaper didn't attach uni0655 to space
^ Shaper didn't attach uni064B to space
^ Shaper didn't attach uni064C to space
^ Shaper didn't attach uni064D to space
^ Shaper didn't attach uni064E to space
^ Shaper didn't attach uni064F to space
^ Shaper didn't attach uni0650 to space
^ Shaper didn't attach uni0651 to space
^ Shaper didn't attach uni0652 to space
^ Shaper didn't attach uni0670 to uni0640
^ Shaper didn't attach uni0653 to uni0640
^ Shaper didn't attach uni0654 to uni0640
^ Shaper didn't attach uni0655 to uni0640
^ Shaper didn't attach uni064B to uni0640
^ Shaper didn't attach uni064C to uni0640
^ Shaper didn't attach uni064D to uni0640
^ Shaper didn't attach uni064E to uni0640
^ Shaper didn't attach uni064F to uni0640
^ Shaper didn't attach uni0650 to uni0640
^ Shaper didn't attach uni0651 to uni0640
^ Shaper didn't attach uni0652 to uni0640
[code: failed-language-shaping] * 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
fa_Arab (Persian) Shaper didn't attach uni0654 to None
^ Shaper didn't attach uni0654 to space
[code: failed-language-shaping]
🔥 FAIL Check Google Fonts glyph coverage.
* 🔥 **FAIL**

Missing required codepoints:

- 0x0100 (LATIN CAPITAL LETTER A WITH MACRON)

- 0x0101 (LATIN SMALL LETTER A WITH MACRON)

- 0x0102 (LATIN CAPITAL LETTER A WITH BREVE)

- 0x0103 (LATIN SMALL LETTER A WITH BREVE)

- 0x0104 (LATIN CAPITAL LETTER A WITH OGONEK)

- 0x0105 (LATIN SMALL LETTER A WITH OGONEK)

- 0x0106 (LATIN CAPITAL LETTER C WITH ACUTE)

- 0x0107 (LATIN SMALL LETTER C WITH ACUTE)

- 0x010A (LATIN CAPITAL LETTER C WITH DOT ABOVE)

- 0x010B (LATIN SMALL LETTER C WITH DOT ABOVE)

- 97 more.

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

[code: missing-codepoints]
⚠️ WARN Check if OS/2 xAvgCharWidth is correct.
* ⚠️ **WARN**

OS/2 xAvgCharWidth is 651 but it should be 481 which corresponds to the average of the widths of all glyphs in the font.

[code: xAvgCharWidth-wrong]
⚠️ WARN Check mark characters are in GDEF mark glyph class.
* ⚠️ **WARN**

The following mark characters could be in the GDEF mark glyph class: smallv (U+065A), uni0653 (U+0653), uni0654 (U+0654), uni0655 (U+0655), uni0670 (U+0670) and uni06DB (U+06DB)

[code: mark-chars]
⚠️ WARN Check GDEF mark glyph class doesn't have characters that are not marks.
* ⚠️ **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]
⚠️ WARN Check hhea.caretSlopeRise and hhea.caretSlopeRun
* ⚠️ **WARN**

hhea.caretSlopeRise and hhea.caretSlopeRun do not match with post.italicAngle. Got: caretSlopeRise 1 and caretSlopeRun 0 Expected: caretSlopeRise 1000 and caretSlopeRun 176

[code: caretslope-mismatch]
⚠️ WARN Check if each glyph has the recommended amount of contours.
* ⚠️ **WARN**

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

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

- Glyph name: uni00AD    Contours detected: 1    Expected: 0

- Glyph name: uni00AD   Contours detected: 1    Expected: 0
[code: contour-count]
⚠️ WARN Check math signs have the same width.
* ⚠️ **WARN**

The most common width is 384 among a set of 7 math glyphs. The following math glyphs have a different width, though:

Width = 449: greaterequal, lessequal, greater, less

[code: width-outliers]
⚠️ WARN Does the font contain a soft hyphen?
* ⚠️ **WARN**

This font has a 'Soft Hyphen' character.

[code: softhyphen]
⚠️ WARN Do any segments have colinear vectors?
* ⚠️ **WARN**

The following glyphs have colinear vectors:

* Thorn (U+00DE): L<<96.0,110.0>--<85.0,52.0>> -> L<<85.0,52.0>--<77.0,6.0>>

* W (U+0057): L<<131.0,6.0>--<80.0,548.0>> -> L<<80.0,548.0>--<80.0,549.0>>

* acircumflex (U+00E2): L<<297.0,493.0>--<349.0,436.0>> -> L<<349.0,436.0>--<350.0,435.0>>

* agrave (U+00E0): L<<252.0,493.0>--<305.0,436.0>> -> L<<305.0,436.0>--<306.0,435.0>>

* circumflex (U+02C6): L<<177.0,493.0>--<230.0,436.0>> -> L<<230.0,436.0>--<231.0,435.0>>

* ecircumflex (U+00EA): L<<285.0,493.0>--<338.0,436.0>> -> L<<338.0,436.0>--<339.0,435.0>>

* egrave (U+00E8): L<<245.0,493.0>--<298.0,436.0>> -> L<<298.0,436.0>--<299.0,435.0>>

* grave (U+0060): L<<109.0,493.0>--<162.0,436.0>> -> L<<162.0,436.0>--<163.0,435.0>>

* igrave (U+00EC): L<<129.0,493.0>--<182.0,436.0>> -> L<<182.0,436.0>--<183.0,435.0>>

* numbersign (U+0023): L<<207.0,159.0>--<248.0,6.0>> -> L<<248.0,6.0>--<249.0,3.0>>

* 25 more.

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

[code: found-colinear-vectors]
⚠️ WARN Do outlines contain any jaggy segments?
* ⚠️ **WARN**

The following glyphs have jaggy segments:

* Ccedilla (U+00C7): B<<419.0,44.0>-<359.0,-6.0>-<272.0,-11.0>>/L<<272.0,-11.0>--<272.0,-11.0>> = 3.2892426784917586

* uni0633 (U+0633): B<<599.5,69.0>-<570.0,99.0>-<560.0,151.0>>/L<<560.0,151.0>--<560.0,150.0>> = 10.885527054658743

* uni0633 (U+0633): L<<560.0,151.0>--<560.0,150.0>>/L<<560.0,150.0>--<534.0,303.0>> = 9.644405640108051

* uni0634 (U+0634): B<<599.5,69.0>-<570.0,99.0>-<560.0,151.0>>/L<<560.0,151.0>--<560.0,150.0>> = 10.885527054658743

* uni0634 (U+0634): L<<560.0,151.0>--<560.0,150.0>>/L<<560.0,150.0>--<534.0,303.0>> = 9.644405640108051

* uniFEB2 (U+FEB2): B<<599.5,69.0>-<570.0,99.0>-<560.0,151.0>>/L<<560.0,151.0>--<560.0,150.0>> = 10.885527054658743

* uniFEB2 (U+FEB2): L<<560.0,151.0>--<560.0,150.0>>/L<<560.0,150.0>--<534.0,303.0>> = 9.644405640108051

* uniFEB6 (U+FEB6): B<<599.5,69.0>-<570.0,99.0>-<560.0,151.0>>/L<<560.0,151.0>--<560.0,150.0>> = 10.885527054658743

* uniFEB6 (U+FEB6): L<<560.0,151.0>--<560.0,150.0>>/L<<560.0,150.0>--<534.0,303.0>> = 9.644405640108051
[code: found-jaggy-segments]
⚠️ WARN Check the direction of the outermost contour in each glyph
* ⚠️ **WARN**

The following glyphs have a counter-clockwise outer contour:

* .notdef has a counter-clockwise outer contour

* Decoratedbracketleft (U+E100) has a counter-clockwise outer contour

* Decoratedbracketleft (U+E100) has a counter-clockwise outer contour

* Decoratedbracketleft (U+E100) has a counter-clockwise outer contour

* Decoratedbracketleft (U+E100) has a counter-clockwise outer contour

* Decoratedbracketleft (U+E100) has a counter-clockwise outer contour

* Decoratedbracketright (U+E101) has a counter-clockwise outer contour

* Decoratedbracketright (U+E101) has a counter-clockwise outer contour

* Decoratedbracketright (U+E101) has a counter-clockwise outer contour

* Decoratedbracketright (U+E101) has a counter-clockwise outer contour

* 695 more.

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

[code: ccw-outer-contour]
⚠️ WARN Check for codepoints not covered by METADATA subsets.
* ⚠️ **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+02C7 CARON: try adding one of: canadian-aboriginal, yi, tifinagh
  • 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+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition
  • U+03BC GREEK SMALL LETTER MU: try adding one of: greek, math
  • U+060C ARABIC COMMA: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061B ARABIC SEMICOLON: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061F ARABIC QUESTION MARK: try adding one of: hanifi-rohingya, syriac, adlam, yezidi, nko, arabic, thaana
  • U+0621 ARABIC LETTER HAMZA: try adding one of: syriac, arabic 449 more.

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

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Is there kerning info for non-ligated sequences?
* ⚠️ **WARN**

GPOS table lacks kerning info for the following non-ligated sequences:

- f + i

- f + l
[code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature?
* ⚠️ **WARN**

This font lacks caret position values for ligature glyphs on its GDEF table.

[code: lacks-caret-pos]
⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.
* ⚠️ **WARN**

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

[code: lacks-meta-table]
⚠️ WARN Ensure Stylistic Sets have description.
* ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description]
ℹ️ INFO List all superfamily filepaths
* ℹ️ **INFO**

.

[code: family-path]
ℹ️ INFO Font contains all required tables?
* ℹ️ **INFO**

This font contains the following optional tables:

- cvt 

- fpgm

- loca

- prep

- GPOS

- GSUB

- gasp
[code: optional-tables]
ℹ️ INFO Check for presence of an ARTICLE.en_us.html file
* ℹ️ **INFO**

This font doesn't have an ARTICLE.en_us.html file.

[code: missing-article]
ℹ️ INFO EPAR table present in font?
* ℹ️ **INFO**

EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818

[code: lacks-EPAR]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
* ℹ️ **INFO**

These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
ℹ️ INFO Show hinting filesize impact.
* ℹ️ **INFO**

Hinting filesize impact:

Zain-LightItalic.ttf
Dehinted Size 146.8kb
Hinted Size 207.5kb
Increase 60.7kb
Change 41.4 %
[code: size-impact]
[24] Zain-Regular.ttf
🔥 FAIL Shapes languages in all GF glyphsets.
* 🔥 **FAIL**

GF_Arabic_Core glyphset:

Language FAIL messages
ar_Arab (Arabic) Shaper didn't attach uni0670 to None
^ Shaper didn't attach uni0670 to space
^ Shaper didn't attach uni0653 to space
^ Shaper didn't attach uni0654 to space
^ Shaper didn't attach uni0655 to space
^ Shaper didn't attach uni064B to space
^ Shaper didn't attach uni064C to space
^ Shaper didn't attach uni064D to space
^ Shaper didn't attach uni064E to space
^ Shaper didn't attach uni064F to space
^ Shaper didn't attach uni0650 to space
^ Shaper didn't attach uni0651 to space
^ Shaper didn't attach uni0652 to space
^ Shaper didn't attach uni0670 to uni0640
^ Shaper didn't attach uni0653 to uni0640
^ Shaper didn't attach uni0654 to uni0640
^ Shaper didn't attach uni0655 to uni0640
^ Shaper didn't attach uni064B to uni0640
^ Shaper didn't attach uni064C to uni0640
^ Shaper didn't attach uni064D to uni0640
^ Shaper didn't attach uni064E to uni0640
^ Shaper didn't attach uni064F to uni0640
^ Shaper didn't attach uni0650 to uni0640
^ Shaper didn't attach uni0651 to uni0640
^ Shaper didn't attach uni0652 to uni0640
[code: failed-language-shaping]
🔥 FAIL Check font names are correct
* 🔥 **FAIL**

Font names are incorrect:

nameID current expected
Family Name Zain Zain
Subfamily Name Regular Regular
Full Name Zain Regular Zain Regular
Postscript Name Zain-Regular Zain-Regular
Typographic Family Name Zain N/A
Typographic Subfamily Name Regular N/A
[code: bad-names]
🔥 FAIL Check Google Fonts glyph coverage.
* 🔥 **FAIL**

Missing required codepoints:

- 0x0100 (LATIN CAPITAL LETTER A WITH MACRON)

- 0x0101 (LATIN SMALL LETTER A WITH MACRON)

- 0x0102 (LATIN CAPITAL LETTER A WITH BREVE)

- 0x0103 (LATIN SMALL LETTER A WITH BREVE)

- 0x0104 (LATIN CAPITAL LETTER A WITH OGONEK)

- 0x0105 (LATIN SMALL LETTER A WITH OGONEK)

- 0x0106 (LATIN CAPITAL LETTER C WITH ACUTE)

- 0x0107 (LATIN SMALL LETTER C WITH ACUTE)

- 0x010A (LATIN CAPITAL LETTER C WITH DOT ABOVE)

- 0x010B (LATIN SMALL LETTER C WITH DOT ABOVE)

- 97 more.

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

[code: missing-codepoints]
⚠️ WARN Check if OS/2 xAvgCharWidth is correct.
* ⚠️ **WARN**

OS/2 xAvgCharWidth is 651 but it should be 510 which corresponds to the average of the widths of all glyphs in the font.

[code: xAvgCharWidth-wrong]
⚠️ WARN Check glyphs in mark glyph class are non-spacing.
* ⚠️ **WARN**

The following spacing glyphs may be in the GDEF mark glyph class by mistake: uni065A (U+065A)

[code: spacing-mark-glyphs]
⚠️ WARN Check mark characters are in GDEF mark glyph class.
* ⚠️ **WARN**

The following mark characters could be in the GDEF mark glyph class: uni0670 (U+0670) and uni06DB (U+06DB)

[code: mark-chars]
⚠️ WARN Check GDEF mark glyph class doesn't have characters that are not marks.
* ⚠️ **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]
⚠️ WARN Check if each glyph has the recommended amount of contours.
* ⚠️ **WARN**

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

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

- Glyph name: uni00AD    Contours detected: 1    Expected: 0

- Glyph name: uni00AD   Contours detected: 1    Expected: 0
[code: contour-count]
⚠️ WARN Check math signs have the same width.
* ⚠️ **WARN**

The most common width is 403 among a set of 7 math glyphs. The following math glyphs have a different width, though:

Width = 450: greaterequal, lessequal, greater, less

[code: width-outliers]
⚠️ WARN Does the font contain a soft hyphen?
* ⚠️ **WARN**

This font has a 'Soft Hyphen' character.

[code: softhyphen]
⚠️ WARN Do any segments have colinear vectors?
* ⚠️ **WARN**

The following glyphs have colinear vectors:

* uniFB59FE8A (U+E160): L<<699.0,74.0>--<642.0,74.0>> -> L<<642.0,74.0>--<485.0,74.0>>

* uniFB59FEF0 (U+E140): L<<699.0,74.0>--<642.0,74.0>> -> L<<642.0,74.0>--<485.0,74.0>>

* uniFB59FEF2 (U+E141): L<<699.0,74.0>--<642.0,74.0>> -> L<<642.0,74.0>--<485.0,74.0>>

* uniFBAB (U+FBAB): L<<669.0,166.0>--<669.0,180.0>> -> L<<669.0,180.0>--<669.0,182.0>>

* uniFBAD (U+FBAD): L<<631.0,166.0>--<631.0,180.0>> -> L<<631.0,180.0>--<631.0,182.0>>

* uniFBFFFBFD (U+E146): L<<699.0,74.0>--<642.0,74.0>> -> L<<642.0,74.0>--<485.0,74.0>>

* uniFC95 (U+FC95): L<<699.0,74.0>--<642.0,74.0>> -> L<<642.0,74.0>--<485.0,74.0>>

* uniFC96 (U+FC96): L<<699.0,74.0>--<642.0,74.0>> -> L<<642.0,74.0>--<485.0,74.0>>

* uniFEB3 (U+FEB3): L<<181.0,159.0>--<181.0,168.0>> -> L<<181.0,168.0>--<181.0,305.0>>

* uniFEB4 (U+FEB4): L<<181.0,159.0>--<181.0,168.0>> -> L<<181.0,168.0>--<181.0,305.0>>

* 17 more.

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

[code: found-colinear-vectors]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines?
* ⚠️ **WARN**

The following glyphs have semi-vertical/semi-horizontal lines:

* uni0666.tab (U+E128): L<<395.0,376.0>--<394.0,10.0>>

* uni0666: L<<239.0,376.0>--<238.0,10.0>>
[code: found-semi-vertical]
⚠️ WARN Check the direction of the outermost contour in each glyph
* ⚠️ **WARN**

The following glyphs have a counter-clockwise outer contour:

* A (U+0041) has a counter-clockwise outer contour

* AE (U+00C6) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Aacute (U+00C1) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Acircumflex (U+00C2) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Adieresis (U+00C4) has a counter-clockwise outer contour

* Agrave (U+00C0) has a counter-clockwise outer contour

* 1034 more.

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

[code: ccw-outer-contour]
⚠️ WARN Check for codepoints not covered by METADATA subsets.
* ⚠️ **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+02C7 CARON: try adding one of: canadian-aboriginal, yi, tifinagh
  • 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+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition
  • U+03BC GREEK SMALL LETTER MU: try adding one of: greek, math
  • U+060C ARABIC COMMA: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061B ARABIC SEMICOLON: try adding one of: syriac, hanifi-rohingya, yezidi, nko, arabic, thaana
  • U+061F ARABIC QUESTION MARK: try adding one of: hanifi-rohingya, syriac, adlam, yezidi, nko, arabic, thaana
  • U+0621 ARABIC LETTER HAMZA: try adding one of: syriac, arabic 359 more.

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

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Is there kerning info for non-ligated sequences?
* ⚠️ **WARN**

GPOS table lacks kerning info for the following non-ligated sequences:

- f + i

- f + l
[code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature?
* ⚠️ **WARN**

This font lacks caret position values for ligature glyphs on its GDEF table.

[code: lacks-caret-pos]
⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.
* ⚠️ **WARN**

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

[code: lacks-meta-table]
⚠️ WARN Ensure Stylistic Sets have description.
* ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss01 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss02 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description] * ⚠️ **WARN**

The stylistic set ss03 lacks a description string on the 'name' table.

[code: missing-description]
ℹ️ INFO List all superfamily filepaths
* ℹ️ **INFO**

.

[code: family-path]
ℹ️ INFO Font contains all required tables?
* ℹ️ **INFO**

This font contains the following optional tables:

- cvt 

- fpgm

- loca

- prep

- GPOS

- GSUB

- gasp
[code: optional-tables]
ℹ️ INFO Check for presence of an ARTICLE.en_us.html file
* ℹ️ **INFO**

This font doesn't have an ARTICLE.en_us.html file.

[code: missing-article]
ℹ️ INFO EPAR table present in font?
* ℹ️ **INFO**

EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818

[code: lacks-EPAR]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
* ℹ️ **INFO**

These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
ℹ️ INFO Show hinting filesize impact.
* ℹ️ **INFO**

Hinting filesize impact:

Zain-Regular.ttf
Dehinted Size 124.6kb
Hinted Size 183.0kb
Increase 58.3kb
Change 46.8 %
[code: size-impact]
[2] Family checks
🔥 FAIL Fonts have equal codepoint coverage
* 🔥 **FAIL**
  • Italic contains encoded codepoints not found in other related fonts: - U+e200

    • U+e201

    • U+e202

    • U+e203

    • U+e204

    • U+e205

    • U+e206

    • U+e207

    • U+e208

    • U+e209

    • 80 more.

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

  • LightItalic contains encoded codepoints not found in other related fonts: - U+e200

    • U+e201

    • U+e202

    • U+e203

    • U+e204

    • U+e205

    • U+e206

    • U+e207

    • U+e208

    • U+e209

    • 80 more.

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

[code: glyphset-diverges]
ℹ️ INFO Check axis ordering on the STAT table.
* ℹ️ **INFO**

All of the fonts lack a STAT table.

[code: summary]

Summary

💥 ERROR ☠ FATAL 🔥 FAIL ⚠️ WARN ⏩ SKIP ℹ️ INFO ✅ PASS 🔎 DEBUG
0 0 21 132 947 49 741 0
0% 0% 1% 7% 50% 3% 39% 0%

Note: The following loglevels were omitted in this report: