Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Noto Sans Arabic: Version 2.011 added #6859

Merged
merged 1 commit into from
Nov 28, 2023

Conversation

simoncozens
Copy link
Collaborator

3920071: [gftools-packager] Noto Sans Arabic: Version 2.011 added

@simoncozens simoncozens force-pushed the gftools_packager_ofl_notosansarabic branch from c81407f to 3920071 Compare October 13, 2023 09:28
@github-actions
Copy link

FontBakery report

fontbakery version: 0.10.0

[1] Family checks
INFO: Check axis ordering on the STAT table. (com.google.fonts/check/STAT/axis_order)
  • INFO From a total of 1 font files, 0 of them (0.00%) lack a STAT table.

    And these are the most common STAT axis orderings:
    ('wght-wdth', 1) [code: summary]


[16] NotoSansArabic[wdth,wght].ttf
🔥 FAIL: Checking OS/2 usWinAscent & usWinDescent. (com.google.fonts/check/family/win_ascent_and_descent)
  • 🔥 FAIL OS/2.usWinAscent value should be equal or greater than 1431, but got 1374 instead [code: ascent]
WARN: Check for codepoints not covered by METADATA subsets. (com.google.fonts/check/metadata/unreachable_subsetting)
  • 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, tifinagh, yi

  • U+02C9 MODIFIER LETTER MACRON: not included in any glyphset definition

  • 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+0306 COMBINING BREVE: try adding one of: old-permic, tifinagh

  • U+030A COMBINING RING ABOVE: try adding syriac

  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: cherokee, osage

  • U+030C COMBINING CARON: try adding one of: cherokee, tai-le
    19 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: arabic, latin, latin-ext, math, menu, symbols [code: unreachable-subsetting]

WARN: Glyphs are similiar to Google Fonts version? (com.google.fonts/check/production_glyphs_similarity)
  • WARN Following glyphs differ greatly from Google Fonts version:
    • uni0601
    • uni0608
    • uni0615
    • uni0647
    • uni065D
    • uni0668
    • uni0674
    • uni0675
    • uni0676
    • uni0677 and 22 more.

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

WARN: Is there kerning info for non-ligated sequences? (com.google.fonts/check/kerning_for_non_ligated_sequences)
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • uni0627 + uni0644.init

    • uni0644.init + uni0644.medi

    • uni0644.medi + uni0651

    • uni0651 + uni0670

    • uni0670 + uni0647.fina

    • uni0647.fina + uni0644.init

    • uni0670 + uni06C1.fina [code: lacks-kern-info]

WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table. (com.google.fonts/check/meta/script_lang_tags)
  • WARN This font file does not have a 'meta' table. [code: lacks-meta-table]
WARN: Glyph names are all valid? (com.google.fonts/check/valid_glyphnames)
  • WARN The following glyph names may be too long for some legacy systems which may expect a maximum 31-characters length limit:
    twodotshorizontalabove_tahabovear, twodotshorizontalabovear.diagonal, twodotshorizontalbelow_tahabovear and twodotshorizontalcenter_tahabovear [code: legacy-long-names]
WARN: Check font contains no unreachable glyphs (com.google.fonts/check/unreachable_glyphs)
  • WARN The following glyphs could not be reached by codepoint or substitution rules:

    • uni06BA.init

    • uni06BA.medi

    • uni06F7.mark
      [code: unreachable-glyphs]

WARN: Check math signs have the same width. (com.google.fonts/check/math_signs_width)
  • WARN The most common width is 572 among a set of 6 math glyphs.
    The following math glyphs have a different width, though:

Width = 322:
minus
[code: width-outliers]

WARN: Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. (com.google.fonts/check/soft_dotted)
  • WARN The dot of soft dotted characters used in orthographies must disappear in the following strings: į̀ į́ į̂ į̃ į̄ į̌

The dot of soft dotted characters should disappear in other cases, for example: į̆ į̇ į̈ į̊ į̋ į̒ į̦̀ į̦́ į̦̂ į̦̃ į̦̄ į̦̆ į̦̇ į̦̈ į̦̊ į̦̋ į̦̌ į̦̒ į̧̀ į̧́

Your font fully covers the following languages that require the soft-dotted feature: Lithuanian (Latn, 2,357,094 speakers).

Your font does not cover the following languages that require the soft-dotted feature: Koonzime (Latn, 40,000 speakers), Ma’di (Latn, 584,000 speakers), Basaa (Latn, 332,940 speakers), Nateni (Latn, 100,000 speakers), Lugbara (Latn, 2,200,000 speakers), Aghem (Latn, 38,843 speakers), Kom (Latn, 360,685 speakers), Ukrainian (Cyrl, 29,273,587 speakers), Dutch (Latn, 31,709,104 speakers), Ejagham (Latn, 120,000 speakers), Dan (Latn, 1,099,244 speakers), Avokaya (Latn, 100,000 speakers), Igbo (Latn, 27,823,640 speakers), Belarusian (Cyrl, 10,064,517 speakers), Navajo (Latn, 166,319 speakers), Ebira (Latn, 2,200,000 speakers). [code: soft-dotted]

INFO: Show hinting filesize impact. (com.google.fonts/check/hinting_impact)
  • INFO Hinting filesize impact:
ofl/notosansarabic/NotoSansArabic[wdth,wght].ttf
Dehinted Size 825.4kb
Hinted Size 825.4kb
Increase 24 bytes
Change 0.0 %
[code: size-impact]
INFO: Font has old ttfautohint applied? (com.google.fonts/check/old_ttfautohint)
  • INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: ['Version 2.011'] [code: version-not-detected]
INFO: EPAR table present in font? (com.google.fonts/check/epar)
INFO: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (com.google.fonts/check/gasp)
  • 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: Check for font-v versioning. (com.google.fonts/check/fontv)
  • INFO Version string is: "Version 2.011"
    The version string must ideally include a git commit hash and either a "dev" or a "release" suffix such as in the example below:
    "Version 1.3; git-0d08353-release" [code: bad-format]
INFO: Font contains all required tables? (com.google.fonts/check/required_tables)
  • INFO This font contains the following optional tables:

    • loca

    • prep

    • GPOS

    • GSUB

    • gasp [code: optional-tables]

INFO: List all superfamily filepaths (com.google.fonts/check/superfamily/list)
  • INFO ofl/notosansarabic [code: family-path]

Summary

💔 ERROR 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 1 8 41 8 192 0
0% 0% 3% 16% 3% 77% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • PASS
  • DEBUG

@simoncozens
Copy link
Collaborator Author

This release:

  • Brings codepoint support up to Unicode 14
  • Includes extensive re-engineering to fix bugs (particularly in minority languages), reduce glyphset size, and increase consistency with other Noto Arabic families

@khaledhosny
Copy link
Contributor

Unicode 14

Unicode 15 (there were 3 new Arabic code points added in Unicode 15 that are npw supported as well)
https://www.unicode.org/charts/PDF/Unicode-15.0/

@eliheuer
Copy link
Collaborator

eliheuer commented Oct 31, 2023

@simoncozens There is one FontBakery vertical metrics fail, is there a good reason to ignore this? Or should it be fixed and the PR updated before merging?

🔥 FAIL: Checking OS/2 usWinAscent & usWinDescent. (com.google.fonts/check/family/win_ascent_and_descent)
🔥 FAIL OS/2.usWinAscent value should be equal or greater than 1431, but got 1374 instead [code: ascent]

I looked around in previous PRs, but couldn't find any prior discussion of this.

@eliheuer
Copy link
Collaborator

eliheuer commented Oct 31, 2023

One thing to note for anyone else reviewing this, the change to ARABIC DISPUTED END OF AYAH U+08E2 to a Persian 5 looks legit to me after some research:
https://www.unicode.org/L2/L2014/14095-quranic-marks.pdf
notofonts/arabic#9

@eliheuer
Copy link
Collaborator

eliheuer commented Oct 31, 2023

There is a regression with Arabic Letter Reh with Stroke U+075B in the black weight.

Before:
Screenshot 2023-10-30 at 6 59 14 PM
After:
Screenshot 2023-10-30 at 6 59 20 PM

@eliheuer
Copy link
Collaborator

eliheuer commented Oct 31, 2023

@simoncozens the HehU+0647 ه has been changed to look like an initial Heh ﻫ. I know this is done sometimes for legibility, on my Macbook Arabic keyboard they do this for example, but what is the rationale for this?

I have basic Arabic reading skills, and I would find this strange and would expect the circular form without the continuation into the middle loop when typing U+0647

Before:
Screenshot 2023-10-30 at 8 26 38 PM
After:
Screenshot 2023-10-30 at 8 26 44 PM

I am not an Arabic expert, but I have looked at and used a lot of Arabic fonts and this seems unusual to me:
Screenshot 2023-10-30 at 9 16 33 PM

I feel like this is a big enough change it needs an explanation before merging.

Edit: there is a PR fixing this open : notofonts/arabic#207

@simoncozens
Copy link
Collaborator Author

Edit: there is a PR fixing this open : notofonts/arabic#207

No, that PR fixes something different - FEE9, rather than 0647.

Khaled's explanation for choice to use a double-eyed form for ہ is here:

So heh has a different form for final unconnected (the old isolated form) and really isolated (the new one). The single-eye form should only be used after another Arabic letter, and the double-eye is used otherwise (e.g. when heh is shown alone in alphabet charts, or after numbers for Hijri dates, in abbreviations, etc.). This is because the single-eye form looks very close to Arabic Indic 5.

However: the Unicode Standard and code charts use the single-eyed form as "Xn" (isolated):

Screenshot 2023-10-31 at 07 42 15

Which means we seem to have got ahead of Unicode here. @khaledhosny, I think since Noto is an implementation of Unicode, we may need to back out this change.

@khaledhosny
Copy link
Contributor

The Unicode chart uses this form:
image

and the Arabic chapter has this text (though the text is rather misleading, as it is not the initial form but a form very close to it and the initial form is used as a fallback by users):
image

So there is awareness that isolated heh takes a different form I don’t know why this was not reflected in the table, but this probably would be a 4th column, since heh has 4 forms not 3.

@eliheuer
Copy link
Collaborator

eliheuer commented Oct 31, 2023

I am in favor of using the double-eyed form isolated heh after looking into this more. It is a legibility improvement, it is rendered this way on the Apple keyboards, and I trust Khaled's expertise. This is not a merge blocker from me, and I personally think it is an improvement.

Edit: @simoncozens @khaledhosny Just an idea, but what if the stroke did not extend to the left as a compromise between the two forms? I think maybe I have seen this in manuscripts and could look for examples:
Screenshot 2023-11-01 at 11 04 43 AM

Note that this is already happening with the Nastaliq Heh in Table 9-9 above.

Copy link
Collaborator

@eliheuer eliheuer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Almost all the issues I opened in the upstream git repo have been closed by this PR and the one remaining one does not need to be resolved anytime soon: notofonts/arabic#212

There is a commit to the upstream repository fixing the one remaining FontBakery fail: Update OS/2 usWinAscent for all fonts. @simoncozens can we rebuild the fonts and update this PR with all the new changes? After that this should be ok to merge. Thanks!

@simoncozens
Copy link
Collaborator Author

Updated

Noto Sans Arabic: Version 2.012 added


e5ee313: [gftools-packager] Noto Sans Arabic: Version 2.012 added

@simoncozens simoncozens force-pushed the gftools_packager_ofl_notosansarabic branch from 3920071 to e5ee313 Compare November 7, 2023 09:46
Copy link

github-actions bot commented Nov 7, 2023

FontBakery report

fontbakery version: 0.10.3

[1] Experimental checks
🔥 FAIL: Shapes languages in all GF glyphsets. (com.google.fonts/check/glyphsets/shape_languages)
  • 🔥 FAIL GF_Arabic_Core/ar_Arab (Arabic): [FAIL: Shaper didn't attach uni064E to space, FAIL: Shaper didn't attach uni064B to space, FAIL: Shaper didn't attach uni0652 to space, FAIL: Shaper didn't attach uni064D to space, FAIL: Shaper didn't attach uni0670 to space, FAIL: Shaper didn't attach uni064C to space, FAIL: Shaper didn't attach uni064F to space, FAIL: Shaper didn't attach uni0650 to space, FAIL: Shaper didn't attach uni0651 to space] [code: failed-language-shaping]
  • 🔥 FAIL GF_Arabic_Core/fa_Arab (Persian): [FAIL: Shaper didn't attach uni064B to space, FAIL: Shaper didn't attach uni064D to space, FAIL: Shaper didn't attach uni064C to space, FAIL: Shaper didn't attach uni0651 to space, FAIL: Shaper didn't attach uni0654 to space] [code: failed-language-shaping]
  • 🔥 FAIL GF_Latin_Core/br_Latn (Breton): [FAIL: Some base glyphs were missing: cʼh, FAIL: Shaper produced a .notdef] [code: failed-language-shaping]
  • 🔥 FAIL GF_Latin_Core/haw_Latn (Hawaiian): [FAIL: Some base glyphs were missing: ʻ, FAIL: Shaper produced a .notdef] [code: failed-language-shaping]
  • 🔥 FAIL GF_Latin_Core/mh_Latn (Marshallese): [FAIL: Some base glyphs were missing: Ḷ, ḷ, Ṃ, ṃ, Ṇ, ṇ, Ọ, ọ, FAIL: Some mark glyphs were missing: ◌̣, FAIL: Shaper produced a .notdef] [code: failed-language-shaping]
  • 🔥 FAIL GF_Latin_Core/qu_Latn (Quechua): [FAIL: Some base glyphs were missing: chʼ, kʼ, pʼ, qʼ, tʼ, FAIL: Shaper produced a .notdef] [code: failed-language-shaping]
  • 🔥 FAIL GF_Latin_Core/scn_Latn (Sicilian): [FAIL: Some base glyphs were missing: Ḍ, ḍ, FAIL: Shaper produced a .notdef] [code: failed-language-shaping]
  • 🔥 FAIL GF_Latin_Core/teo_Latn (Teso): [FAIL: Some base glyphs were missing: Ɔ, Ɛ, Ɨ, Ʉ, ɔ, ɛ, ɨ, ʉ, ᵃ, ᵉ, ᵋ, ᵒ, ᵓ, ᵘ, ᶤ, ᶶ, ⁱ, FAIL: Shaper produced a .notdef] [code: failed-language-shaping]
  • 🔥 FAIL GF_Arabic_Plus/ps_Arab (Pashto): [FAIL: Shaper didn't attach uni064E to space, FAIL: Shaper didn't attach uni064B to space, FAIL: Shaper didn't attach uni0652 to space, FAIL: Shaper didn't attach uni064D to space, FAIL: Shaper didn't attach uni0670 to space, FAIL: Shaper didn't attach uni064F to space, FAIL: Shaper didn't attach uni064C to space, FAIL: Shaper didn't attach uni0650 to space, FAIL: Shaper didn't attach uni0651 to space, FAIL: Shaper didn't attach uni0654 to space] [code: failed-language-shaping]
  • WARN GF_Latin_Core/lg_Latn (Ganda): [WARN: No variant glyphs were found for Eng] [code: warning-language-shaping]
  • WARN GF_Latin_Core/dyo_Latn (Jola-Fonyi): [WARN: No variant glyphs were found for Eng] [code: warning-language-shaping]
  • WARN GF_Latin_Core/ny_Latn (Nyanja): [WARN: No variant glyphs were found for Eng] [code: warning-language-shaping]
  • WARN GF_Latin_Core/wo_Latn (Wolof): [WARN: No variant glyphs were found for Eng] [code: warning-language-shaping]
  • WARN GF_Arabic_Plus/ku_Arab (Kurdish (Arabic)): [WARN: No exemplar glyphs were defined for language Kurdish (Arabic)] [code: warning-language-shaping]
  • WARN GF_Arabic_Plus/ms_Arab (Malay (Arabic)): [WARN: No exemplar glyphs were defined for language Malay (Arabic)] [code: warning-language-shaping]

[1] Family checks
INFO: Check axis ordering on the STAT table. (com.google.fonts/check/STAT/axis_order)
  • INFO From a total of 1 font files, 0 of them (0.00%) lack a STAT table.

    And these are the most common STAT axis orderings:
    ('wght-wdth', 1) [code: summary]


[16] NotoSansArabic[wdth,wght].ttf
🔥 FAIL: Check that legacy accents aren't used in composite glyphs. (derived from com.google.fonts/check/legacy_accents) (com.google.fonts/check/legacy_accents)
  • 🔥 FAIL Glyph "Aacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Abreve" has a legacy accent component (breve). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Acircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Adieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Agrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Aogonek" has a legacy accent component (ogonek). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Aring" has a legacy accent component (ring). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Atilde" has a legacy accent component (tilde). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Cacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ccaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ccedilla" has a legacy accent component (cedilla). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Cdotaccent" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Dcaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Eacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ecaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ecircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Edieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Edotaccent" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Egrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Eogonek" has a legacy accent component (ogonek). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Gbreve" has a legacy accent component (breve). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Gdotaccent" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Iacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Icircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Idieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Idotaccent" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Igrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Iogonek" has a legacy accent component (ogonek). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Lacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Nacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ncaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ntilde" has a legacy accent component (tilde). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Oacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ocircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Odieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ograve" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ohungarumlaut" has a legacy accent component (hungarumlaut). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Otilde" has a legacy accent component (tilde). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Racute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Rcaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Sacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Scaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Scedilla" has a legacy accent component (cedilla). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Tcaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Uacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ubreve" has a legacy accent component (breve). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ucircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Udieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ugrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Uhungarumlaut" has a legacy accent component (hungarumlaut). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Uring" has a legacy accent component (ring). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Wacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Wcircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Wdieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Wgrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Yacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ycircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ydieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Ygrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Zacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Zcaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "Zdotaccent" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "aacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "abreve" has a legacy accent component (breve). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "acircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "acutecomb" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "adieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "agrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "aogonek" has a legacy accent component (ogonek). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "aring" has a legacy accent component (ring). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "atilde" has a legacy accent component (tilde). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uni0306" has a legacy accent component (breve). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "cacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uni030C" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ccaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ccedilla" has a legacy accent component (cedilla). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "cdotaccent" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uni0327" has a legacy accent component (cedilla). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uni0302" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uni0308" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uni0307" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "eacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ecaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ecircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "edieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "edotaccent" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "egrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "gbreve" has a legacy accent component (breve). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "gdotaccent" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "gravecomb" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uni030B" has a legacy accent component (hungarumlaut). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "iacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "icircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "idieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "igrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "iogonek" has a legacy accent component (ogonek). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "lacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "nacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ncaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ntilde" has a legacy accent component (tilde). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "oacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ocircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "odieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uni0328" has a legacy accent component (ogonek). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ograve" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ohungarumlaut" has a legacy accent component (hungarumlaut). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "otilde" has a legacy accent component (tilde). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "racute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "rcaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uni030A" has a legacy accent component (ring). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "sacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "scaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "scedilla" has a legacy accent component (cedilla). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "tildecomb" has a legacy accent component (tilde). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ubreve" has a legacy accent component (breve). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ucircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "udieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ugrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uhungarumlaut" has a legacy accent component (hungarumlaut). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uogonek" has a legacy accent component (ogonek). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "uring" has a legacy accent component (ring). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "wacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "wcircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "wdieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "wgrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "yacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ycircumflex" has a legacy accent component (circumflex). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ydieresis" has a legacy accent component (dieresis). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "ygrave" has a legacy accent component (grave). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "zacute" has a legacy accent component (acute). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "zcaron" has a legacy accent component (caron). It needs to be replaced by a combining mark. [code: legacy-accents-component]
  • 🔥 FAIL Glyph "zdotaccent" has a legacy accent component (dotaccent). It needs to be replaced by a combining mark. [code: legacy-accents-component]
WARN: Check for codepoints not covered by METADATA subsets. (com.google.fonts/check/metadata/unreachable_subsetting)
  • 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: yi, canadian-aboriginal, tifinagh

  • U+02C9 MODIFIER LETTER MACRON: not included in any glyphset definition

  • U+02D8 BREVE: try adding one of: yi, canadian-aboriginal

  • U+02D9 DOT ABOVE: try adding one of: yi, canadian-aboriginal

  • U+02DB OGONEK: try adding one of: yi, canadian-aboriginal

  • U+02DD DOUBLE ACUTE ACCENT: not included in any glyphset definition

  • U+0306 COMBINING BREVE: try adding one of: old-permic, tifinagh

  • U+030A COMBINING RING ABOVE: try adding syriac

  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: osage, cherokee

  • U+030C COMBINING CARON: try adding one of: tai-le, cherokee
    19 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: arabic, latin, latin-ext, math, menu, symbols [code: unreachable-subsetting]

WARN: Glyphs are similiar to Google Fonts version? (com.google.fonts/check/production_glyphs_similarity)
  • WARN Following glyphs differ greatly from Google Fonts version:
    • uni0601
    • uni0608
    • uni0615
    • uni0647
    • uni065D
    • uni0668
    • uni0674
    • uni0675
    • uni0676
    • uni0677 and 22 more.

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

WARN: Is there kerning info for non-ligated sequences? (com.google.fonts/check/kerning_for_non_ligated_sequences)
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • uni0627 + uni0644.init

    • uni0644.init + uni0644.medi

    • uni0644.medi + uni0651

    • uni0651 + uni0670

    • uni0670 + uni0647.fina

    • uni0647.fina + uni0644.init

    • uni0670 + uni06C1.fina [code: lacks-kern-info]

WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table. (com.google.fonts/check/meta/script_lang_tags)
  • WARN This font file does not have a 'meta' table. [code: lacks-meta-table]
WARN: Glyph names are all valid? (com.google.fonts/check/valid_glyphnames)
  • WARN The following glyph names may be too long for some legacy systems which may expect a maximum 31-characters length limit:
    twodotshorizontalabove_tahabovear, twodotshorizontalabovear.diagonal, twodotshorizontalbelow_tahabovear and twodotshorizontalcenter_tahabovear [code: legacy-long-names]
WARN: Check font contains no unreachable glyphs (com.google.fonts/check/unreachable_glyphs)
  • WARN The following glyphs could not be reached by codepoint or substitution rules:

    • uni06BA.init

    • uni06BA.medi

    • uni06F7.mark
      [code: unreachable-glyphs]

WARN: Check math signs have the same width. (com.google.fonts/check/math_signs_width)
  • WARN The most common width is 572 among a set of 6 math glyphs.
    The following math glyphs have a different width, though:

Width = 322:
minus
[code: width-outliers]

WARN: Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. (com.google.fonts/check/soft_dotted)
  • WARN The dot of soft dotted characters used in orthographies must disappear in the following strings: į̀ į́ į̂ į̃ į̄ į̌

The dot of soft dotted characters should disappear in other cases, for example: į̆ į̇ į̈ į̊ į̋ į̒ į̦̀ į̦́ į̦̂ į̦̃ į̦̄ į̦̆ į̦̇ į̦̈ į̦̊ į̦̋ į̦̌ į̦̒ į̧̀ į̧́

Your font fully covers the following languages that require the soft-dotted feature: Dutch (Latn, 31,709,104 speakers), Lithuanian (Latn, 2,357,094 speakers).

Your font does not cover the following languages that require the soft-dotted feature: Navajo (Latn, 166,319 speakers), Basaa (Latn, 332,940 speakers), Lugbara (Latn, 2,200,000 speakers), Ebira (Latn, 2,200,000 speakers), Avokaya (Latn, 100,000 speakers), Dan (Latn, 1,099,244 speakers), Belarusian (Cyrl, 10,064,517 speakers), Koonzime (Latn, 40,000 speakers), Ma’di (Latn, 584,000 speakers), Ejagham (Latn, 120,000 speakers), Aghem (Latn, 38,843 speakers), Igbo (Latn, 27,823,640 speakers), Ukrainian (Cyrl, 29,273,587 speakers), Kom (Latn, 360,685 speakers), Nateni (Latn, 100,000 speakers). [code: soft-dotted]

INFO: Show hinting filesize impact. (com.google.fonts/check/hinting_impact)
  • INFO Hinting filesize impact:
ofl/notosansarabic/NotoSansArabic[wdth,wght].ttf
Dehinted Size 824.9kb
Hinted Size 824.9kb
Increase 24 bytes
Change 0.0 %
[code: size-impact]
INFO: Font has old ttfautohint applied? (com.google.fonts/check/old_ttfautohint)
  • INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: ['Version 2.012'] [code: version-not-detected]
INFO: EPAR table present in font? (com.google.fonts/check/epar)
INFO: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (com.google.fonts/check/gasp)
  • 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: Check for font-v versioning. (com.google.fonts/check/fontv)
  • INFO Version string is: "Version 2.012"
    The version string must ideally include a git commit hash and either a "dev" or a "release" suffix such as in the example below:
    "Version 1.3; git-0d08353-release" [code: bad-format]
INFO: Font contains all required tables? (com.google.fonts/check/required_tables)
  • INFO This font contains the following optional tables:

    • loca

    • prep

    • GPOS

    • GSUB

    • gasp [code: optional-tables]

INFO: List all superfamily filepaths (com.google.fonts/check/superfamily/list)
  • INFO ofl/notosansarabic [code: family-path]

Summary

💔 ERROR 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 2 8 42 8 195 0
0% 1% 3% 16% 3% 76% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • PASS
  • DEBUG

@eliheuer eliheuer self-requested a review November 7, 2023 10:10
@eliheuer eliheuer self-requested a review November 7, 2023 10:10
@eliheuer
Copy link
Collaborator

eliheuer commented Nov 7, 2023

@simoncozens There are two new FontBakery fails, should they be ignored or fixed?

@simoncozens
Copy link
Collaborator Author

The experimental fail is just... wrong. The second one we have discussed at length and my position remains that if the designer knows what they are doing, using legacy accent glyphs as components of a precomposed glyph is fine. So yes, please ignore both.

@RosaWagner RosaWagner removed the z_Noto label Nov 7, 2023
@eliheuer
Copy link
Collaborator

I reviewed this with Behdad's fonttools varLib.interpolatable QA tool: https://github.com/behdad/google-fonts-ofl-interpolatable-results/blob/main/reports/NotoSansArabic%5Bwdth%2Cwght%5D.ttf.pdf and all the issues are fixed.

@RosaWagner RosaWagner merged commit a0bc305 into main Nov 28, 2023
9 checks passed
@RosaWagner RosaWagner deleted the gftools_packager_ofl_notosansarabic branch November 28, 2023 13:55
Copy link
Collaborator

@eliheuer eliheuer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I Font Upgrade II Arabic / Hebrew / Semitic / RTL Middle-east and afro-asian RTL scripts
Projects
Status: Live
Development

Successfully merging this pull request may close these issues.

None yet

4 participants