aminabedi68 / Estedad

Sans Serif Arabic-Latin text typeface
https://aminabedi68.github.io/Estedad/
SIL Open Font License 1.1
270 stars 11 forks source link

Issue to fix for Google Fonts #17

Open yanone opened 2 years ago

yanone commented 2 years ago

As mentioned, here is the complete bug report from Google Fonts’ tooling about Estedad.

You may ignore the first two items about file name and glyph coverage, although they are only four missing characters, so I will not be angry if you added them ;)

If you have any questions about any of the items, please do let me know. Thank you.

Fontbakery report

Fontbakery version: 0.8.7.dev11+g266bdf1a

[15] Estedad[wght,kshd].ttf
πŸ”₯ FAIL: Checking file is named canonically. * [com.google.fonts/check/canonical_filename](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/canonical_filename)
--- Rationale ---
A font's filename must be composed in the following manner:
<familyname>-<stylename>.ttf
- Nunito-Regular.ttf,
- Oswald-BoldItalic.ttf
Variable fonts must list the axis tags in alphabetical order in square brackets
and separated by commas:
- Roboto[wdth,wght].ttf
- Familyname-Italic[wght].ttf
* πŸ”₯ **FAIL** The file 'Estedad[wght,kshd].ttf' must be renamed to 'Estedad-VF[kshd,wght].ttf' according to the Google Fonts naming policy for variable fonts. [code: bad-varfont-filename]
πŸ”₯ FAIL: Check `Google Fonts Latin Core` glyph coverage. * [com.google.fonts/check/glyph_coverage](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/glyph_coverage)
--- Rationale ---
Google Fonts expects that fonts in its collection support at least the minimal
set of characters defined in the `GF-latin-core` glyph-set.
* πŸ”₯ **FAIL** Missing required codepoints: - 0x2039 (SINGLE LEFT-POINTING ANGLE QUOTATION MARK) - 0x203A (SINGLE RIGHT-POINTING ANGLE QUOTATION MARK) - 0x2044 (FRACTION SLASH) - And 0x2215 (DIVISION SLASH) [code: missing-codepoints]
πŸ”₯ FAIL: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? * [com.google.fonts/check/gasp](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/gasp)
--- Rationale ---
Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem
had no grid fitting but did have antialiasing. From 9-16 ppem, just grid
fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled
on. The use of accelerated graphics cards and higher resolution screens make
this approach obsolete. Microsoft's DirectWrite pushed this even further with
much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font
sizes.
* πŸ”₯ **FAIL** Font is missing the 'gasp' table. Try exporting the font with autohinting enabled. If you are dealing with an unhinted font, it can be fixed by running the fonts through the command 'gftools fix-nonhinting' GFTools is available at https://pypi.org/project/gftools/ [code: lacks-gasp]
πŸ”₯ FAIL: Copyright notices match canonical pattern in fonts * [com.google.fonts/check/font_copyright](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/font_copyright) * πŸ”₯ **FAIL** Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)" But instead we have got: "Copyright (c) 2020 by Amin Abedi (@aminabedi68)-www.fontamin.com, with Reserved Font Name Estedad. This Font Software is licensed under the SIL Open Font License, Version 1.1." [code: bad-notice-format]
πŸ”₯ FAIL: Check glyphs do not have components which are themselves components. * [com.google.fonts/check/glyf_nested_components](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/glyf_nested_components)
--- Rationale ---
There have been bugs rendering variable fonts with nested components.
Additionally, some static fonts with nested components have been reported to
have rendering and printing issues.
For more info, see:
* https://github.com/googlefonts/fontbakery/issues/2961
* https://github.com/arrowtype/recursive/issues/412
* πŸ”₯ **FAIL** The following glyphs have components which themselves are component glyphs: * Dcroat * Ohungarumlaut * Oslashacute * Uhungarumlaut * divide.tnum * equal.tnum * ij * ij * ohungarumlaut * oslashacute and 486 more. Use -F or --full-lists to disable shortening of long lists. [code: found-nested-components]
πŸ”₯ FAIL: Font enables smart dropout control in "prep" table instructions? * [com.google.fonts/check/smart_dropout](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/smart_dropout)
--- Rationale ---
This setup is meant to ensure consistent rendering quality for fonts across all
devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF    PUSHW 0x01FF
85          SCANCTRL (unconditinally turn on
                      dropout control mode)
B0 04       PUSHB 0x04
8D          SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
        that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
        that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
        (either vertical or horizontal) is intersected
        by both an on-Transition contour and an off-Transition
        contour and neither of the pixels was already turned on
        by rules 1 and 2, turn on the pixel which is closer to
        the midpoint between the on-Transition contour and
        off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet), please
refer to the TrueType Instruction Set documentation.
* πŸ”₯ **FAIL** The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the `gftools fix-nonhinting` script. [code: lacks-smart-dropout]
πŸ”₯ FAIL: Name table entries should not contain line-breaks. * [com.google.fonts/check/name/line_breaks](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/line_breaks)
--- Rationale ---
There are some entries on the name table that may include more than one line of
text. The Google Fonts team, though, prefers to keep the name table entries
short and simple without line breaks.
For instance, some designers like to include the full text of a font license in
the "copyright notice" entry, but for the GFonts collection this entry should
only mention year, author and other basic info in a manner enforced by
com.google.fonts/check/font_copyright
* πŸ”₯ **FAIL** Name entry COPYRIGHT_NOTICE on platform WINDOWS contains a line-break. [code: line-break] * πŸ”₯ **FAIL** Name entry LICENSE_DESCRIPTION on platform WINDOWS contains a line-break. [code: line-break]
πŸ”₯ FAIL: Name table strings must not contain the string 'Reserved Font Name'. * [com.google.fonts/check/name/rfn](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/name/rfn)
--- Rationale ---
Some designers adopt the "Reserved Font Name" clause of the OFL license. This
means that the original author reserves the rights to the family name and other
people can only distribute modified versions using a different family name.
Google Fonts published updates to the fonts in the collection in order to fix
issues and/or implement further improvements to the fonts. It is important to
keep the family name so that users of the webfonts can benefit from the updates.
Since it would forbid such usage scenario, all families in the GFonts collection
are required to not adopt the RFN clause.
This check ensures "Reserved Font Name" is not mentioned in the name table.
* πŸ”₯ **FAIL** Name table entry ("Copyright (c) 2020 by Amin Abedi (@aminabedi68)-www.fontamin.com, with Reserved Font Name Estedad. This Font Software is licensed under the SIL Open Font License, Version 1.1.") contains "Reserved Font Name". This is an error except in a few specific rare cases. [code: rfn]
πŸ”₯ FAIL: Validate STAT particle names and values match the fallback names in GFAxisRegistry. * [com.google.fonts/check/STAT/gf-axisregistry](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/STAT/gf-axisregistry)
--- Rationale ---
Check that particle names and values on STAT table match the fallback names in
each axis entry at the Google Fonts Axis Registry, available at
https://github.com/google/fonts/tree/main/axisregistry
* πŸ”₯ **FAIL** STAT table is missing Axis Value Records [code: missing-axis-values]
πŸ”₯ FAIL: Ensure variable fonts include an avar table. * [com.google.fonts/check/mandatory_avar_table](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/mandatory_avar_table)
--- Rationale ---
Most variable fonts should include an avar table to correctly define axes
progression rates.
For example, a weight axis from 0% to 100% doesn't map directly to 100 to 1000,
because a 10% progression from 0% may be too much to define the 200, while 90%
may be too little to define the 900.
If the progression rates of axes is linear, this check can be ignored. Fontmake
will also skip adding an avar table if the progression rates are linear.
However, we still recommend designers visually proof each instance is at the
desired weight, width etc.
* πŸ”₯ **FAIL** This variable font does not have an avar table. [code: missing-avar]
πŸ”₯ FAIL: OS/2.fsSelection bit 7 (USE_TYPO_METRICS) is set in all fonts. * [com.google.fonts/check/os2/use_typo_metrics](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/googlefonts.html#com.google.fonts/check/os2/use_typo_metrics)
--- Rationale ---
All fonts on the Google Fonts collection should have OS/2.fsSelection bit 7
(USE_TYPO_METRICS) set. This requirement is part of the vertical metrics scheme
established as a Google Fonts policy aiming at a common ground supported by all
major font rendering environments.
For more details, read:
https://github.com/googlefonts/gf-docs/blob/main/VerticalMetrics/README.md
Below is the portion of that document that is most relevant to this check:
Use_Typo_Metrics must be enabled. This will force MS Applications to use the
OS/2 Typo values instead of the Win values. By doing this, we can freely set the
Win values to avoid clipping and control the line height with the typo values.
It has the added benefit of future line height compatibility. When a new script
is added, we simply change the Win values to the new yMin and yMax, without
needing to worry if the line height have changed.
* πŸ”₯ **FAIL** OS/2.fsSelection bit 7 (USE_TYPO_METRICS) wasNOT set in the following fonts: ['dist/Variable/ttf/Estedad[wght,kshd].ttf']. [code: missing-os2-fsselection-bit7]
πŸ”₯ FAIL: Checking OS/2 usWinAscent & usWinDescent. * [com.google.fonts/check/family/win_ascent_and_descent](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/family/win_ascent_and_descent)
--- Rationale ---
A font's winAscent and winDescent values should be greater than the head table's
yMax, abs(yMin) values. If they are less than these values, clipping can occur
on Windows platforms (https://github.com/RedHatBrand/Overpass/issues/33).
If the font includes tall/deep writing systems such as Arabic or Devanagari, the
winAscent and winDescent can be greater than the yMax and abs(yMin) to
accommodate vowel marks.
When the win Metrics are significantly greater than the upm, the linespacing can
appear too loose. To counteract this, enabling the OS/2 fsSelection bit 7
(Use_Typo_Metrics), will force Windows to use the OS/2 typo values instead. This
means the font developer can control the linespacing with the typo values,
whilst avoiding clipping by setting the win values to values greater than the
yMax and abs(yMin).
* πŸ”₯ **FAIL** OS/2.usWinAscent value should be equal or greater than 2616, but got 2400 instead [code: ascent] * πŸ”₯ **FAIL** OS/2.usWinDescent value should be equal or greater than 1309, but got 1200 instead. [code: descent]
πŸ”₯ FAIL: Ensure component transforms do not perform scaling or rotation. * [com.google.fonts/check/transformed_components](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/transformed_components)
--- Rationale ---
Some families have glyphs which have been constructed by using transformed
components e.g the 'u' being constructed from a flipped 'n'.
From a designers point of view, this sounds like a win (less work). However,
such approaches can lead to rasterization issues, such as having the 'u' not
sitting on the baseline at certain sizes after running the font through
ttfautohint.
As of July 2019, Marc Foley observed that ttfautohint assigns cvt values to
transformed glyphs as if they are not transformed and the result is they render
very badly, and that vttLib does not support flipped components.
When building the font with fontmake, the problem can be fixed by adding this to
the command line:
--filter DecomposeTransformedComponentsFilter
* πŸ”₯ **FAIL** The following glyphs had components with scaling or rotation: * exclamdown (component exclam) * hookabovecomb (component ogonek) * questiondown (component question) * uni018E (component E) * uni01DD (component e) * uni020A (component breve) * uni020B (component breve) * uni020E (component breve) * uni020F (component breve) * uni0212 (component breve) * uni0213 (component breve) * uni0216 (component breve) * uni0217 (component breve) * uni0238 (component uniE00F) * uni0245 (component V) * uni0250 (component a) * uni029E (component k) * uni063D (component uniE037) * uni063D.fina (component uniE037) * uni063D.init (component uniE037) * uni063D.init.Extended_1 (component uniE037) * uni063D.init.Extended_2 (component uniE037) * uni063D.medi (component uniE037) * uni063D.medi.Extended_1 (component uniE037) * uni063D.medi.Extended_2 (component uniE037) * uni0657 (component uniE032) * uni065B (component uniE037) * uni065E (component Arabic_Single_Dot) * uni065E (component Arabic_Single_Dot) * uni066A (component uni0660) * uni066A (component uni0660) * uni06BD (component uniE019) * uni06BD.fina (component uniE019) * uni06C9 (component uniE037) * uni06EE (component uniE037) * uni06EE.fina (component uniE037) * uni06EF (component uniE037) * uni06EF.fina (component uniE037) * uni06FF (component uniE037) * uni06FF.fina (component uniE037) * uni06FF.init (component uniE037) * uni06FF.medi (component uniE037) * uni0755 (component uniE037) * uni0755.fina (component uniE037) * uni0755.init (component uniE037) * uni0755.init.Extended_1 (component uniE037) * uni0755.init.Extended_3 (component uniE037) * uni0755.medi (component uniE037) * uni0755.medi.Extended_1 (component uniE037) * uni0755.medi.Extended_3 (component uniE037) * uni0758 (component uniE019) * uni0758.fina (component uniE019) * uni075A (component uniE037) * uni075A.fina (component uniE037) * uni077E (component uniE037) * uni077E.fina (component uniE037) * uni077E.init (component uniE037) * uni077E.medi (component uniE037) * uni08B2 (component uniE037) * uni08B2.fina (component uniE037) * uni1D6B (component uniE00D) * uniFBE2 (component uniE037) * uniFBE3 (component uniE037) [code: transformed-components]
πŸ”₯ FAIL: Ensure dotted circle glyph is present and can attach marks. * [com.google.fonts/check/dotted_circle](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/universal.html#com.google.fonts/check/dotted_circle)
--- Rationale ---
The dotted circle character (U+25CC) is inserted by shaping engines before mark
glyphs which do not have an associated base, especially in the context of broken
syllabic clusters.
For fonts containing combining marks, it is recommended that the dotted circle
character be included so that these isolated marks can be displayed properly;
for fonts supporting complex scripts, this should be considered mandatory.
Additionally, when a dotted circle glyph is present, it should be able to
display all marks correctly, meaning that it should contain anchors for all
attaching marks.
* πŸ”₯ **FAIL** The following glyphs could not be attached to the dotted circle glyph: - uni06EB - uni0615 - uni0654 - uni064F - uni0652 - uni065A - uni064C - uni0656 - uni0655 - uni065B - And 13 more. Use -F or --full-lists to disable shortening of long lists. [code: unattached-dotted-circle-marks]
πŸ”₯ FAIL: Space and non-breaking space have the same width? * [com.google.fonts/check/whitespace_widths](https://font-bakery.readthedocs.io/en/latest/fontbakery/profiles/hmtx.html#com.google.fonts/check/whitespace_widths) * πŸ”₯ **FAIL** Space and non-breaking space have differing width: The space glyph named space is 400 font units wide, non-breaking space named (uni00A0) is 900 font units wide, and both should be positive and the same. GlyphsApp has "Sidebearing arithmetic" (https://glyphsapp.com/tutorials/spacing) which allows you to set the non-breaking space width to always equal the space width. [code: different-widths]

Summary

πŸ’” ERROR πŸ”₯ FAIL ⚠ WARN πŸ’€ SKIP β„Ή INFO 🍞 PASS πŸ”Ž DEBUG
0 15 6 106 8 88 0
0% 7% 3% 48% 4% 39% 0%

Note: The following loglevels were omitted in this report:

yanone commented 2 years ago

FYI, we’re only interested in the VF TTF in the end. While obviously it makes sense for you to keep all your files updated, I just wanted to let you know that any fallback static instances and web fonts will be generated by Google’s engineering team on their servers.

yanone commented 2 years ago

Actually, the glyph coverage issue should be observed. Since they are only four glyphs here, please consider to add them.

aminabedi68 commented 2 years ago

please check new release.this file

yanone commented 2 months ago

Here's a recent report for Estedad.

Please completely ignore the FAIL about ZIP files.

FontBakery report

fontbakery version: 0.12.2

Check results

[6] Estedad[KSHD,wght].ttf
πŸ”₯ FAIL Validates that when an instance record is included for the default instance, its subfamilyNameID value is set to a name ID whose string is equal to the string of either name ID 2 or 17, and its postScriptNameID value is set to a name ID whose string is equal to the string of name ID 6.
> > According to the 'fvar' documentation in OpenType spec v1.9.1 > https://docs.microsoft.com/en-us/typography/opentype/spec/fvar > > The default instance of a font is that instance for which the coordinate > value of each axis is the defaultValue specified in the corresponding > variation axis record. An instance record is not required for the default > instance, though an instance record can be provided. When enumerating named > instances, the default instance should be enumerated even if there is no > corresponding instance record. If an instance record is included for the > default instance (that is, an instance record has coordinates set to default > values), then the nameID value should be set to either 2 or 17 or to a > name ID with the same value as name ID 2 or 17. Also, if a postScriptNameID is > included in instance records, and the postScriptNameID value should be set > to 6 or to a name ID with the same value as name ID 6. > > Original proposal: https://github.com/fonttools/fontbakery/issues/3708 * πŸ”₯ **FAIL**

'Thin' instance has the same coordinates as the default instance; its postscript name should be 'Estedad-VF', instead of 'Estedad-Thin'.

[code: invalid-default-instance-postscript-name]
πŸ”₯ FAIL Check accent of Lcaron, dcaron, lcaron, tcaron
> > Lcaron, dcaron, lcaron, tcaron should NOT be composed with quoteright > or quotesingle or comma or caron(comb). It should be composed with a > distinctive glyph which doesn't look like an apostrophe. > > Source: > https://ilovetypography.com/2009/01/24/on-diacritics/ > http://diacritics.typo.cz/index.php?id=5 > https://www.typotheque.com/articles/lcaron > > Original proposal: https://github.com/fonttools/fontbakery/issues/3308 * πŸ”₯ **FAIL**

Lcaron uses component quoteright.

Overridden: This check was originally a WARN but was overridden by the ufo profile: For Google Fonts, one of the comma-lookalikes is a FAIL

[code: bad-mark] * πŸ”₯ **FAIL**

lcaron uses component quoteright.

Overridden: This check was originally a WARN but was overridden by the ufo profile: For Google Fonts, one of the comma-lookalikes is a FAIL

[code: bad-mark] * πŸ”₯ **FAIL**

tcaron uses component quoteright.

Overridden: This check was originally a WARN but was overridden by the ufo profile: For Google Fonts, one of the comma-lookalikes is a FAIL

[code: bad-mark]
πŸ”₯ FAIL Check that glyph for U+0675 ARABIC LETTER HIGH HAMZA is not a mark.
> > Many fonts incorrectly treat ARABIC LETTER HIGH HAMZA (U+0675) as a variant of > ARABIC HAMZA ABOVE (U+0654) and make it a combining mark of the same size. > > But U+0675 is a base letter and should be a variant of ARABIC LETTER HAMZA > (U+0621) but raised slightly above baseline. > > Not doing so effectively makes the font useless for Jawi and > possibly Kazakh as well. > > Original proposal: https://github.com/googlefonts/fontbakery/issues/4290 * πŸ”₯ **FAIL**

The arabic letter high hamza (U+0675) should have roughly the same size the arabic letter hamza (U+0621), but a different glyph outline area was detected.

[code: glyph-area]
πŸ”₯ FAIL Ensure the font supports case swapping for all its glyphs.
> > Ensure that no glyph lacks its corresponding upper or lower counterpart > (but only when unicode supports case-mapping). > > Original proposal: https://github.com/googlefonts/fontbakery/issues/3230 * πŸ”₯ **FAIL**

The following glyphs lack their case-swapping counterparts:

Glyph present in the font Missing case-swapping counterpart
U+0189: LATIN CAPITAL LETTER AFRICAN D U+0256: LATIN SMALL LETTER D WITH TAIL
U+0245: LATIN CAPITAL LETTER TURNED V U+028C: LATIN SMALL LETTER TURNED V
U+026A: LATIN LETTER SMALL CAPITAL I U+A7AE: LATIN CAPITAL LETTER SMALL CAPITAL I
U+0280: LATIN LETTER SMALL CAPITAL R U+01A6: LATIN LETTER YR
U+0283: LATIN SMALL LETTER ESH U+01A9: LATIN CAPITAL LETTER ESH
[code: missing-case-counterparts]
πŸ”₯ FAIL A font repository should not include ZIP files
> > Sometimes people check in ZIPs into their font project repositories. While we > accept the practice of checking in binaries, we believe that a ZIP is a step > too far ;) > > Note: a source purist position is that only source files and build scripts > should be checked in. > > Original proposal: https://github.com/fonttools/fontbakery/issues/2903 * πŸ”₯ **FAIL**

Please do not host ZIP files on the project repository. These files were detected: * /Users/yanone/Downloads/fontbakery-report.zip * /Users/yanone/Downloads/Noto_Sans.zip * /Users/yanone/Downloads/PPS charset revision by TypeTogether.zip * /Users/yanone/Downloads/glyphsets-bd19af05c6c35ac7a873dcdcb54b895fe65c2d50.zip and /Users/yanone/Downloads/Bubbler_One,Yanone_Kaffeesatz.zip

[code: zip-files]
πŸ”₯ FAIL Check font names are correct
> > Google Fonts has several rules which need to be adhered to when > setting a font's name table. Please read: > https://googlefonts.github.io/gf-guide/statics.html#supported-styles > https://googlefonts.github.io/gf-guide/statics.html#style-linking > https://googlefonts.github.io/gf-guide/statics.html#unsupported-styles > https://googlefonts.github.io/gf-guide/statics.html#single-weight-families > > Original proposal: https://github.com/fonttools/fontbakery/pull/3800 * πŸ”₯ **FAIL**

Font names are incorrect:

nameID current expected
Family Name Estedad VF Estedad Thin
Subfamily Name Regular Regular
Full Name Estedad VF Estedad Thin
Postscript Name Estedad-VF Estedad-Thin
Typographic Family Name Estedad Estedad
Typographic Subfamily Name Thin Thin
[code: bad-names]

Summary

πŸ’₯ ERROR ☠ FATAL πŸ”₯ FAIL ⚠️ WARN ⏩ SKIP ℹ️ INFO βœ… PASS πŸ”Ž DEBUG
0 0 6 8 98 8 129 0
0% 0% 2% 3% 39% 3% 52% 0%

Note: The following loglevels were omitted in this report: