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

Solve Variable font fails in Fontbakery #7

Closed
dancoull opened this issue Mar 12, 2024 · 9 comments
Closed

Solve Variable font fails in Fontbakery #7

dancoull opened this issue Mar 12, 2024 · 9 comments

Comments

@dancoull
Copy link
Owner

Fontbakery has five fails for the Variable Font in the latest Release v1.005. Three of these issues also appeared in the previous version currently on GF fonts.

Would appreciate any help on how to fix these?

FontBakery report

fontbakery version: 0.11.2

[19] ClimateCrisis[YEAR].ttf
🔥 FAIL: Check a font's STAT table contains compulsory Axis Values. (com.google.fonts/check/STAT)

Check a font's STAT table contains compulsory Axis Values which exist in the Google Fonts Axis Registry.

We cannot determine what Axis Values the user will set for axes such as opsz, GRAD since these axes are unique for each font so we'll skip them.

  • 🔥 FAIL Compulsory STAT Axis Values are incorrect:
Name Axis Current Value Current Flags Current LinkedValue Expected Value Expected Flags Expected LinkedValue
Regular wght N/A N/A N/A 400.0 0 700.0
[code: bad-axis-values]
🔥 FAIL: Check variable font instances don't have duplicate names (com.google.fonts/check/varfont_duplicate_instance_names)

This check's purpose is to detect duplicate named instances names in a given variable font. Repeating instance names may be the result of instances for several VF axes defined in fvar, but since currently only weight+italic tokens are allowed in instance names as per GF specs, they ended up repeating. Instead, only a base set of fonts for the most default representation of the family can be defined through instances in the fvar table, all other instances will have to be left to access through the STAT table.

  • 🔥 FAIL Following instances names are duplicate:

  • Regular
    [code: duplicate-instance-names]

🔥 FAIL: Validate defaults on fvar table match registered fallback names in GFAxisRegistry. (com.google.fonts/check/gf_axisregistry/fvar_axis_defaults)

Check that axis defaults have a corresponding fallback name registered at the Google Fonts Axis Registry, available at https://github.com/google/fonts/tree/main/axisregistry

This is necessary for the following reasons:

To get ZIP files downloads on Google Fonts to be accurate — otherwise the chosen default font is not generated. The Newsreader family, for instance, has a default value on the 'opsz' axis of 16pt. If 16pt was not a registered fallback position, then the ZIP file would instead include another position as default (such as 14pt).

For the Variable fonts to display the correct location on the specimen page.

For VF with no weight axis to be displayed at all. For instance, Ballet, which has no weight axis, was not appearing in sandbox because default position on 'opsz' axis was 16pt, and it was not yet a registered fallback positon.

  • 🔥 FAIL The defaul value YEAR:1979.0 is not registered as an axis fallback name on the Google Axis Registry.
    You should consider suggesting the addition of this value to the registry or adopted one of the existing fallback names for this axis:
    [name: "Default"
    value: 2000.0
    ] [code: not-registered]
🔥 FAIL: Validate STAT particle names and values match the fallback names in GFAxisRegistry. (com.google.fonts/check/STAT/gf_axisregistry)

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 On the font variation axis 'YEAR', the name '1979' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '1990' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2000' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2010' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2019' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2030' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2040' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2050' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
🔥 FAIL: STAT table has Axis Value tables? (com.adobe.fonts/check/stat_has_axis_value_tables)

According to the OpenType spec, in a variable font, it is strongly recommended that axis value tables be included for every element of typographic subfamily names for all of the named instances defined in the 'fvar' table.

Axis value tables are particularly important for variable fonts, but can also be used in non-variable fonts. When used in non-variable fonts, axis value tables for particular values should be implemented consistently across fonts in the family.

If present, Format 4 Axis Value tables are checked to ensure they have more than one AxisValueRecord (a strong recommendation from the OpenType spec).

https://docs.microsoft.com/en-us/typography/opentype/spec/stat#axis-value-tables

  • 🔥 FAIL STAT table is missing Axis Value for 'YEAR' value '1990.0' [code: missing-axis-value-table]
  • 🔥 FAIL STAT table is missing Axis Value for 'YEAR' value '2000.0' [code: missing-axis-value-table]
  • 🔥 FAIL STAT table is missing Axis Value for 'YEAR' value '2010.0' [code: missing-axis-value-table]
  • 🔥 FAIL STAT table is missing Axis Value for 'YEAR' value '2030.0' [code: missing-axis-value-table]
WARN: Check for codepoints not covered by METADATA subsets. (com.google.fonts/check/metadata/unreachable_subsetting)

This check ensures that all encoded glyphs in the font are covered by a subset declared in the METADATA.pb. Google Fonts splits the font into a set of subset fonts based on the contents of the subsets field and the subset definitions in the glyphsets repository.

Any encoded glyphs which are not by any of these subset definitions will not be served in the subsetted fonts, and so will be unreachable to the end user.

  • 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+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+0302 COMBINING CIRCUMFLEX ACCENT: try adding one of: cherokee, math, coptic, tifinagh

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

  • U+0307 COMBINING DOT ABOVE: try adding one of: old-permic, tifinagh, coptic, tai-le, math, syriac, canadian-aboriginal, malayalam

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

  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: cherokee, osage
    2901 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: cyrillic, cyrillic-ext, greek-ext, latin, latin-ext [code: unreachable-subsetting]

WARN: Check OFL body text is correct. (com.google.fonts/check/license/OFL_body_text)

Check OFL body text is correct. Often users will accidently delete parts of the body text.

Lines changed:

+ \n

[code: incorrect-ofl-body-text]

WARN: Check copyright namerecords match license file. (com.google.fonts/check/name/license)

A known licensing description must be provided in the NameID 14 (LICENSE DESCRIPTION) entries of the name table.

The source of truth for this check (to determine which license is in use) is a file placed side-by-side to your font project including the licensing terms.

Depending on the chosen license, one of the following string snippets is expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name table:

  • "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: openfontlicense.org"

  • "Licensed under the Apache License, Version 2.0"

  • "Licensed under the Ubuntu Font Licence 1.0."

Currently accepted licenses are Apache or Open Font License. For a small set of legacy families the Ubuntu Font License may be acceptable as well.

When in doubt, please choose OFL for new font projects.

WARN: Ensure files are not too large. (com.google.fonts/check/file_size)

Serving extremely large font files on Google Fonts causes usability issues. This check ensures that file sizes are reasonable.

  • WARN Font file is 3.4Mb; ideally it should be less than 1.0Mb [code: large-font]
WARN: Glyphs are similiar to Google Fonts version? (com.google.fonts/check/production_glyphs_similarity)
  • WARN Following glyphs differ greatly from Google Fonts version:
    • O
    • Oacute
    • Obreve
    • Ocircumflex
    • Odieresis
    • Ograve
    • Ohungarumlaut
    • Omacron
    • Oslash
    • Oslashacute and 9 more.

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

WARN: Check variable font instances (com.google.fonts/check/fvar_instances)

Check a font's fvar instance coordinates comply with our guidelines: https://googlefonts.github.io/gf-guide/variable.html#fvar-instances

  • WARN fvar instance coordinates for non-wght axes are not the same as the fvar defaults. This may be intentional so please check with the font author:
Name current expected
Regular YEAR=2050.0 YEAR=1979.0
WARN: Is there kerning info for non-ligated sequences? (com.google.fonts/check/kerning_for_non_ligated_sequences)

Fonts with ligatures should have kerning on the corresponding non-ligated sequences for text where ligatures aren't used (eg impallari/Raleway#14).

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

    • f + i

    • i + l [code: lacks-kern-info]

WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table. (com.google.fonts/check/meta/script_lang_tags)

The OpenType 'meta' table originated at Apple. Microsoft added it to OT with just two DataMap records:

  • dlng: comma-separated ScriptLangTags that indicate which scripts, or languages and scripts, with possible variants, the font is designed for.

  • slng: comma-separated ScriptLangTags that indicate which scripts, or languages and scripts, with possible variants, the font supports.

The slng structure is intended to describe which languages and scripts the font overall supports. For example, a Traditional Chinese font that also contains Latin characters, can indicate Hant,Latn, showing that it supports Hant, the Traditional Chinese variant of the Hani script, and it also supports the Latn script.

The dlng structure is far more interesting. A font may contain various glyphs, but only a particular subset of the glyphs may be truly "leading" in the design, while other glyphs may have been included for technical reasons. Such a Traditional Chinese font could only list Hant there, showing that it’s designed for Traditional Chinese, but the font would omit Latn, because the developers don’t think the font is really recommended for purely Latin-script use.

The tags used in the structures can comprise just script, or also language and script. For example, if a font has Bulgarian Cyrillic alternates in the locl feature for the cyrl BGR OT languagesystem, it could also indicate in dlng explicitly that it supports bul-Cyrl. (Note that the scripts and languages in meta use the ISO language and script codes, not the OpenType ones).

This check ensures that the font has the meta table containing the slng and dlng structures.

All families in the Google Fonts collection should contain the 'meta' table. Windows 10 already uses it when deciding on which fonts to fall back to. The Google Fonts API and also other environments could use the data for smarter filtering. Most importantly, those entries should be added to the Noto fonts.

In the font making process, some environments store this data in external files already. But the meta table provides a convenient way to store this inside the font file, so some tools may add the data, and unrelated tools may read this data. This makes the solution much more portable and universal.

  • WARN This font file does not have a 'meta' table. [code: lacks-meta-table]
WARN: Check font contains no unreachable glyphs (com.google.fonts/check/unreachable_glyphs)

Glyphs are either accessible directly through Unicode codepoints or through substitution rules.

In Color Fonts, glyphs are also referenced by the COLR table.

Any glyphs not accessible by either of these means are redundant and serve only to increase the font's file size.

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

    • bar.kr

    • uni3008.2.001

    • uni300A.001

    • uni300B.001

    • uni300E.001

    • uni300F.001
      [code: unreachable-glyphs]

WARN: Does the font contain a soft hyphen? (com.google.fonts/check/soft_hyphen)

The 'Soft Hyphen' character (codepoint 0x00AD) is used to mark a hyphenation possibility within a word in the absence of or overriding dictionary hyphenation.

It is sometimes designed empty with no width (such as a control character), sometimes the same as the traditional hyphen, sometimes double encoded with the hyphen.

That being said, it is recommended to not include it in the font at all, because discretionary hyphenation should be handled at the level of the shaping engine, not the font. Also, even if present, the software would not display that character.

More discussion at: https://typedrawers.com/discussion/2046/special-dash-things-softhyphen-horizontalbar

  • WARN This font has a 'Soft Hyphen' character. [code: softhyphen]
WARN: Does the font contain chws and vchw features? (com.google.fonts/check/cjk_chws_feature)

The W3C recommends the addition of chws and vchw features to CJK fonts to enhance the spacing of glyphs in environments which do not fully support JLREQ layout rules.

The chws_tool utility (https://github.com/googlefonts/chws_tool) can be used to add these features automatically.

WARN: Validates that all of the instance records in a given font have distinct data. (com.adobe.fonts/check/varfont/distinct_instance_records)

According to the 'fvar' documentation in OpenType spec v1.9 https://docs.microsoft.com/en-us/typography/opentype/spec/fvar

All of the instance records in a font should have distinct coordinates and distinct subfamilyNameID and postScriptName ID values. If two or more records share the same coordinates, the same nameID values or the same postScriptNameID values, then all but the first can be ignored.

  • WARN 'Regular' is a repeated instance record. [code: repeated-instance-record:Regular]
WARN: Ensure dotted circle glyph is present and can attach marks. (com.google.fonts/check/dotted_circle)

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.

  • WARN No dotted circle glyph present [code: missing-dotted-circle]
WARN: Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. (com.google.fonts/check/soft_dotted)

An accent placed on characters with a "soft dot", like i or j, causes the dot to disappear. An explicit dot above can be added where required. See "Diacritics on i and j" in Section 7.1, "Latin" in The Unicode Standard.

Characters with the Soft_Dotted property are listed in https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt

See also: https://googlefonts.github.io/gf-guide/diacritics.html#soft-dotted-glyphs

  • 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: i̦̒ j̦̒ į̆ į̇ į̈ į̊ į̋ į̒ į̣̒ į̦̒ į̧̒ į̨̒ į̭̒ і̀ і̂ і̃ і̄ і̆ і̇ і̊

Your font fully covers the following languages that require the soft-dotted feature: Ukrainian (Cyrl, 29,273,587 speakers), Dutch (Latn, 31,709,104 speakers), Lithuanian (Latn, 2,357,094 speakers), Belarusian (Cyrl, 10,064,517 speakers), Cicipu (Latn, 44,000 speakers).

Your font does not cover the following languages that require the soft-dotted feature: Nzakara (Latn, 50,000 speakers), Yala (Latn, 200,000 speakers), Fur (Latn, 1,230,163 speakers), Lugbara (Latn, 2,200,000 speakers), Kpelle, Guinea (Latn, 622,000 speakers), South Central Banda (Latn, 244,000 speakers), Ebira (Latn, 2,200,000 speakers), Makaa (Latn, 221,000 speakers), Dii (Latn, 71,000 speakers), Navajo (Latn, 166,319 speakers), Avokaya (Latn, 100,000 speakers), Kom (Latn, 360,685 speakers), Ngbaka (Latn, 1,020,000 speakers), Bete-Bendi (Latn, 100,000 speakers), Sar (Latn, 500,000 speakers), Ekpeye (Latn, 226,000 speakers), Mundani (Latn, 34,000 speakers), Aghem (Latn, 38,843 speakers), Bafut (Latn, 158,146 speakers), Koonzime (Latn, 40,000 speakers), Southern Kisi (Latn, 360,000 speakers), Igbo (Latn, 27,823,640 speakers), Zapotec (Latn, 490,000 speakers), Gulay (Latn, 250,478 speakers), Mfumte (Latn, 79,000 speakers), Mango (Latn, 77,000 speakers), Nateni (Latn, 100,000 speakers), Ma’di (Latn, 584,000 speakers), Ejagham (Latn, 120,000 speakers), Dan (Latn, 1,099,244 speakers), Ijo, Southeast (Latn, 2,471,000 speakers), Basaa (Latn, 332,940 speakers). [code: soft-dotted]


Summary

💔 ERROR ☠ FATAL 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 0 5 14 108 8 125 0
0% 0% 2% 5% 42% 3% 48% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG
@emmamarichal
Copy link

Hi @dancoull! Thank you for this update :)

This is the fontbakery report I have locally (version 0.11.2).
Take a look at the explanation below, and don't hesitate if you have any questions!

FontBakery report

fontbakery version: 0.11.2

Check results

[1] Family checks
INFO: Check axis ordering on the STAT table. (com.google.fonts/check/STAT/axis_order)
  • INFO None of the fonts lack a STAT table.

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


[24] ClimateCrisis[YEAR].ttf
🔥 FAIL: Check a font's STAT table contains compulsory Axis Values. (com.google.fonts/check/STAT)
  • 🔥 FAIL Compulsory STAT Axis Values are incorrect:
Name Axis Current Value Current Flags Current LinkedValue Expected Value Expected Flags Expected LinkedValue
Regular wght N/A N/A N/A 400.0 0 700.0
[code: bad-axis-values]
🔥 FAIL: Check variable font instances don't have duplicate names (com.google.fonts/check/varfont_duplicate_instance_names)
  • 🔥 FAIL Following instances names are duplicate:

  • Regular
    [code: duplicate-instance-names]

🔥 FAIL: Validate defaults on fvar table match registered fallback names in GFAxisRegistry. (com.google.fonts/check/gf_axisregistry/fvar_axis_defaults)
  • 🔥 FAIL The defaul value YEAR:1979.0 is not registered as an axis fallback name on the Google Axis Registry.
    You should consider suggesting the addition of this value to the registry or adopted one of the existing fallback names for this axis:
    [name: "Default"
    value: 2000.0
    ] [code: not-registered]
🔥 FAIL: Validate STAT particle names and values match the fallback names in GFAxisRegistry. (com.google.fonts/check/STAT/gf_axisregistry)
  • 🔥 FAIL On the font variation axis 'YEAR', the name '1979' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '1990' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2000' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2010' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2019' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2030' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2040' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
  • 🔥 FAIL On the font variation axis 'YEAR', the name '2050' is not among the expected ones (Default) according to the Google Fonts Axis Registry. [code: invalid-name]
🔥 FAIL: STAT table has Axis Value tables? (com.adobe.fonts/check/stat_has_axis_value_tables)
  • 🔥 FAIL STAT table is missing Axis Value for 'YEAR' value '1990.0' [code: missing-axis-value-table]
  • 🔥 FAIL STAT table is missing Axis Value for 'YEAR' value '2000.0' [code: missing-axis-value-table]
  • 🔥 FAIL STAT table is missing Axis Value for 'YEAR' value '2010.0' [code: missing-axis-value-table]
  • 🔥 FAIL STAT table is missing Axis Value for 'YEAR' value '2030.0' [code: missing-axis-value-table]
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: tifinagh, canadian-aboriginal, yi

  • 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+0302 COMBINING CIRCUMFLEX ACCENT: try adding one of: tifinagh, math, coptic, cherokee

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

  • U+0307 COMBINING DOT ABOVE: try adding one of: tai-le, coptic, math, syriac, canadian-aboriginal, tifinagh, old-permic, malayalam

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

  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: osage, cherokee
    2901 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: cyrillic, cyrillic-ext, greek-ext, latin, latin-ext [code: unreachable-subsetting]

WARN: Ensure files are not too large. (com.google.fonts/check/file_size)
  • WARN Font file is 3.4Mb; ideally it should be less than 1.0Mb [code: large-font]
WARN: Glyphs are similiar to Google Fonts version? (com.google.fonts/check/production_glyphs_similarity)
  • WARN Following glyphs differ greatly from Google Fonts version:
    • O
    • Oacute
    • Obreve
    • Ocircumflex
    • Odieresis
    • Ograve
    • Ohungarumlaut
    • Omacron
    • Oslash
    • Oslashacute and 9 more.

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

WARN: Check variable font instances (com.google.fonts/check/fvar_instances)
  • WARN fvar instance coordinates for non-wght axes are not the same as the fvar defaults. This may be intentional so please check with the font author:
Name current expected
Regular YEAR=2050.0 YEAR=1979.0
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:

    • f + i

    • i + l [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: 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:

    • bar.kr

    • uni3008.2.001

    • uni300A.001

    • uni300B.001

    • uni300E.001

    • uni300F.001
      [code: unreachable-glyphs]

WARN: Does the font contain a soft hyphen? (com.google.fonts/check/soft_hyphen)
  • WARN This font has a 'Soft Hyphen' character. [code: softhyphen]
WARN: Does the font contain chws and vchw features? (com.google.fonts/check/cjk_chws_feature)
WARN: Validates that all of the instance records in a given font have distinct data. (com.adobe.fonts/check/varfont/distinct_instance_records)
  • WARN 'Regular' is a repeated instance record. [code: repeated-instance-record:Regular]
WARN: Ensure dotted circle glyph is present and can attach marks. (com.google.fonts/check/dotted_circle)
  • WARN No dotted circle glyph present [code: missing-dotted-circle]
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: i̦̒ j̦̒ į̆ į̇ į̈ į̊ į̋ į̒ į̣̒ į̦̒ į̧̒ į̨̒ į̭̒ і̀ і̂ і̃ і̄ і̆ і̇ і̊

Your font fully covers the following languages that require the soft-dotted feature: Belarusian (Cyrl, 10,064,517 speakers), Dutch (Latn, 31,709,104 speakers), Ukrainian (Cyrl, 29,273,587 speakers), Cicipu (Latn, 44,000 speakers), Lithuanian (Latn, 2,357,094 speakers).

Your font does not cover the following languages that require the soft-dotted feature: Kom (Latn, 360,685 speakers), Lugbara (Latn, 2,200,000 speakers), Southern Kisi (Latn, 360,000 speakers), Ijo, Southeast (Latn, 2,471,000 speakers), Nateni (Latn, 100,000 speakers), Ebira (Latn, 2,200,000 speakers), Ngbaka (Latn, 1,020,000 speakers), Bete-Bendi (Latn, 100,000 speakers), Basaa (Latn, 332,940 speakers), Sar (Latn, 500,000 speakers), Koonzime (Latn, 40,000 speakers), Igbo (Latn, 27,823,640 speakers), Fur (Latn, 1,230,163 speakers), Gulay (Latn, 250,478 speakers), Mundani (Latn, 34,000 speakers), Makaa (Latn, 221,000 speakers), Aghem (Latn, 38,843 speakers), Dii (Latn, 71,000 speakers), Dan (Latn, 1,099,244 speakers), Ejagham (Latn, 120,000 speakers), Yala (Latn, 200,000 speakers), Ma’di (Latn, 584,000 speakers), Zapotec (Latn, 490,000 speakers), South Central Banda (Latn, 244,000 speakers), Mfumte (Latn, 79,000 speakers), Mango (Latn, 77,000 speakers), Bafut (Latn, 158,146 speakers), Avokaya (Latn, 100,000 speakers), Kpelle, Guinea (Latn, 622,000 speakers), Navajo (Latn, 166,319 speakers), Ekpeye (Latn, 226,000 speakers), Nzakara (Latn, 50,000 speakers). [code: soft-dotted]

INFO: Show hinting filesize impact. (com.google.fonts/check/hinting_impact)
  • INFO Hinting filesize impact:
ClimateCrisis[YEAR].ttf
Dehinted Size 3.4Mb
Hinted Size 3.4Mb
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 1.005'] [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 1.005"
    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 . [code: family-path]

Summary

💔 ERROR ☠ FATAL 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 0 5 12 112 8 123 0
0% 0% 2% 5% 43% 3% 47% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • PASS
  • DEBUG

How to improve it? + explanations

🔥 FAIL: Check a font's STAT table contains compulsory Axis Values.
🔥 FAIL: Validate defaults on fvar table match registered fallback names in GFAxisRegistry.
🔥 FAIL: Validate STAT particle names and values match the fallback names in GFAxisRegistry.

-> We already had these fails during the previous release. It's a non-usual axis, so it create some fails, especially with the stat table. We can ignore them.

⚠ WARN: Does the font contain a soft hyphen?
-> you can remove the soft hyphen

🔥 FAIL: Check variable font instances don't have duplicate names
🔥 FAIL: STAT table has Axis Value tables?

-> This is because you have now a fvar table with all the instances according the year. I would advice to remove them, so the year can be accessible only by the slider. Let me know if you really want to keep them in the menu, I'll see what I can do (should be possible by rename them).

Screenshot 2024-03-20 at 10 12 29 Screenshot 2024-03-20 at 10 12 19

@emmamarichal
Copy link

Also, you can have a look to that .pdf, there are some interpolation issues in Hangul!

ClimateCrisis[YEAR].pdf

@dancoull
Copy link
Owner Author

Hey @emmamarichal :)

Thanks so much for the help!

If I remove the year instances, what happens with generating the static TTF and WOFF2 files needed for GF?

I'm a bit confused with the naming setup since the previous engineer revised it to the following. As you pointed out all of instances now read as Regular. We had originally used the year as the style name. Should I revert back to this?

Screenshot 2024-04-30 at 3 52 03 PM

Also, when trying to generate new fonts using gftools builder config.yaml it fails with the following error. Which I can't make sense of, any idea what this might be?

INFO:fontTools.varLib:Building variable font
INFO:fontTools.varLib:Loading master fonts
INFO:fontTools.varLib:Generating fvar
INFO:fontTools.varLib:Building variations tables
INFO:fontTools.varLib:Generating avar
INFO:fontTools.varLib:Generating MVAR
INFO:fontTools.varLib:Generating HVAR
INFO:fontTools.varLib:Generating gvar
INFO:fontTools.varLib:Merging TT hinting
INFO:ufo2ft:Compiling variable features for ClimateCrisis-VF
INFO:ufo2ft.featureWriters.kernFeatureWriter:Merging kerning lookups from the following scripts: Cyrl, Grek, Latn
fontmake: Error: In 'ClimateCrisis.glyphs' -> 'master_ufo/ClimateCrisis.designspace': Generating fonts from Designspace failed: 'int' object has no attribute 'values'

@emmamarichal
Copy link

emmamarichal commented May 1, 2024

@dancoull, Yes sorry, we will not touch to the instances.
Let me check the error and export the fonts on my side, I'll let you know once I solve it!

Edit: I tried to export the old version, and I have the same issue. So it comes from the tools I think.

@emmamarichal
Copy link

I managed to export the font: please make sure your tools are updated (fontmake, gftools, glyphsLib)

Here you can find the fontbakery.
If you could try to solve:

  • ⚠️ WARN Does the font contain chws and vchw features?
  • ⚠️ WARN Detect any interpolation issues in the font.
  • ⚠️ WARN Checking with ots-sanitize.
  • ⚠️ WARN Does the font contain a soft hyphen? (you can remove it from the glyphset)
  • ⚠️ WARN Check font contains no unreachable glyphs (maybe you can remove some useless glyphs and avoid the WARN?)

Before, we had:

🔥 FAIL Validate STAT particle names and values match the fallback names in GFAxisRegistry.
  • 🔥 FAIL

    On the font variation axis 'YEAR', the name '1979' is not among the expected ones (Default) according to the Google Fonts Axis Registry.


    [code: invalid-name]

  • 🔥 FAIL

    On the font variation axis 'YEAR', the name '1990' is not among the expected ones (Default) according to the Google Fonts Axis Registry.


    [code: invalid-name]

  • 🔥 FAIL

    On the font variation axis 'YEAR', the name '2000' is not among the expected ones (Default) according to the Google Fonts Axis Registry.


    [code: invalid-name]

  • 🔥 FAIL

    On the font variation axis 'YEAR', the name '2010' is not among the expected ones (Default) according to the Google Fonts Axis Registry.


    [code: invalid-name]

  • 🔥 FAIL

    On the font variation axis 'YEAR', the name '2019' is not among the expected ones (Default) according to the Google Fonts Axis Registry.


    [code: invalid-name]

  • 🔥 FAIL

    On the font variation axis 'YEAR', the name '2030' is not among the expected ones (Default) according to the Google Fonts Axis Registry.


    [code: invalid-name]

  • 🔥 FAIL

    On the font variation axis 'YEAR', the name '2040' is not among the expected ones (Default) according to the Google Fonts Axis Registry.


    [code: invalid-name]

  • 🔥 FAIL

    On the font variation axis 'YEAR', the name '2050' is not among the expected ones (Default) according to the Google Fonts Axis Registry.


    [code: invalid-name]

Now we have the same, but as an error. I'll investigate about it, but let me know if you also have it.

💥 ERROR Validate STAT particle names and values match the fallback names in GFAxisRegistry.
* 💥 **ERROR**

Failed with AttributeError: 'NoneType' object has no attribute 'toUnicode'

  File "/Users/marichalemma/Google/env/lib/python3.9/site-packages/fontbakery/checkrunner.py", line 213, in _run_check
    subresults = list(subresults)
  File "/Users/marichalemma/Google/env/lib/python3.9/site-packages/fontbakery/checks/googlefonts/axisregistry.py", line 191, in com_google_fonts_check_STAT_gf_axisregistry_names
    name = normalize_name(name_entry.toUnicode())
[code: failed-check]

FontBakery report

fontbakery version: 0.12.4

Experimental checks

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

[1] ClimateCrisis[YEAR].ttf
⚠️ WARN Validate location, size and resolution of article images.
  • ⚠️ WARN

    Family metadata at . does not have an article.


    [code: lacks-article]

All other checks

[20] ClimateCrisis[YEAR].ttf
⚠️ WARN Does the font contain chws and vchw features?
⚠️ WARN Detect any interpolation issues in the font.
  • ⚠️ WARN

    Interpolation issues were found in the font:

- Contour 6 point 68 in glyph 'uniCC66' has a kink between location YEAR=2000 and location YEAR=2050

- Contour 4 point 64 in glyph 'uniBC23' has a kink between location YEAR=2000 and location YEAR=2050

- Contour 5 point 68 in glyph 'uniCC2E' has a kink between location YEAR=2000 and location YEAR=2050

- Contour 4 point 10 in glyph 'uniD145' has a kink between location YEAR=2000 and location YEAR=2050

- Contour 1 point 70 in glyph 'uniB04A' has a kink between location YEAR=2000 and location YEAR=2050

- Contour 4 point 70 in glyph 'uniD072' has a kink between location YEAR=2000 and location YEAR=2050

- Contour 3 point 10 in glyph 'uniB801' has a kink between location YEAR=2000 and location YEAR=2050

- Contour 3 point 10 in glyph 'uniB839' has a kink between location YEAR=2000 and location YEAR=2050

- Contour 0 point 10 in glyph 'uniAF41' has a kink between location YEAR=2000 and location YEAR=2050

- Contour 3 point 64 in glyph 'uniACB7' has a kink between location YEAR=2000 and location YEAR=2050

- 28 more.

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

[code: interpolation-issues]
⚠️ WARN Checking with ots-sanitize.
  • ⚠️ WARN

    ots-sanitize passed this file, however warnings were printed:

ERROR: STAT: Invalid nameID: 1979 ERROR: Table discarded

[code: ots-sanitize-warn]
⚠️ WARN Does the font contain a soft hyphen?
  • ⚠️ WARN

    This font has a 'Soft Hyphen' character.


    [code: softhyphen]
⚠️ WARN Check font contains no unreachable glyphs
  • ⚠️ WARN

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

- bar.kr

- uni3008.2.001

- uni300A.001

- uni300B.001

- uni300E.001

- uni300F.001

[code: unreachable-glyphs]

⚠️ WARN Ensure dotted circle glyph is present and can attach marks.
  • ⚠️ WARN

    No dotted circle glyph present


    [code: missing-dotted-circle]
⚠️ WARN Ensure soft_dotted characters lose their dot when combined with marks that replace the dot.
  • ⚠️ 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: i̦̒ j̦̒ į̆ į̇ į̈ į̊ į̋ į̒ į̣̒ į̦̒ į̧̒ į̨̒ į̭̒ і̀ і̂ і̃ і̄ і̆ і̇ і̊

Your font fully covers the following languages that require the soft-dotted feature: Belarusian (Cyrl, 10,064,517 speakers), Lithuanian (Latn, 2,357,094 speakers), Ukrainian (Cyrl, 29,273,587 speakers), Cicipu (Latn, 44,000 speakers), Dutch (Latn, 31,709,104 speakers).

Your font does not cover the following languages that require the soft-dotted feature: Gulay (Latn, 250,478 speakers), Bete-Bendi (Latn, 100,000 speakers), Navajo (Latn, 166,319 speakers), Aghem (Latn, 38,843 speakers), Kpelle, Guinea (Latn, 622,000 speakers), Dan (Latn, 1,099,244 speakers), Mango (Latn, 77,000 speakers), Ma’di (Latn, 584,000 speakers), Ekpeye (Latn, 226,000 speakers), Igbo (Latn, 27,823,640 speakers), Lugbara (Latn, 2,200,000 speakers), Ngbaka (Latn, 1,020,000 speakers), Avokaya (Latn, 100,000 speakers), Bafut (Latn, 158,146 speakers), Ejagham (Latn, 120,000 speakers), Makaa (Latn, 221,000 speakers), Dii (Latn, 71,000 speakers), Vute (Latn, 21,000 speakers), Mundani (Latn, 34,000 speakers), Ijo, Southeast (Latn, 2,471,000 speakers), Fur (Latn, 1,230,163 speakers), Mfumte (Latn, 79,000 speakers), Ebira (Latn, 2,200,000 speakers), Nzakara (Latn, 50,000 speakers), Zapotec (Latn, 490,000 speakers), Koonzime (Latn, 40,000 speakers), Sar (Latn, 500,000 speakers), Kom (Latn, 360,685 speakers), Nateni (Latn, 100,000 speakers), Basaa (Latn, 332,940 speakers), Yala (Latn, 200,000 speakers), Southern Kisi (Latn, 360,000 speakers), South Central Banda (Latn, 244,000 speakers).

[code: soft-dotted]
⚠️ 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, tifinagh, yi
  • 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+0302 COMBINING CIRCUMFLEX ACCENT: try adding one of: math, cherokee, tifinagh, coptic
  • U+0306 COMBINING BREVE: try adding one of: old-permic, tifinagh
  • U+0307 COMBINING DOT ABOVE: try adding one of: old-permic, canadian-aboriginal, coptic, math, tifinagh, tai-le, malayalam, syriac
  • U+030A COMBINING RING ABOVE: try adding syriac
  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: osage, cherokee 2901 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: cyrillic, cyrillic-ext, greek-ext, latin, latin-ext

[code: unreachable-subsetting]
⚠️ WARN Ensure files are not too large.
  • ⚠️ WARN

    Font file is 3.4Mb; ideally it should be less than 1.0Mb


    [code: large-font]
⚠️ 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 Ensure fonts have ScriptLangTags declared on the 'meta' table.
  • ⚠️ WARN

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


    [code: lacks-meta-table]
ℹ️ INFO List all superfamily filepaths
  • ℹ️ INFO

    .


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

    This font contains the following optional tables:

- loca

- prep

- GPOS

- GSUB

- gasp

[code: optional-tables]

ℹ️ INFO EPAR table present in font?
ℹ️ 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:

ClimateCrisis[YEAR].ttf
Dehinted Size 3.4Mb
Hinted Size 3.4Mb
Increase 24 bytes
Change 0.0 %
[code: size-impact]
ℹ️ INFO Font has old ttfautohint applied?
  • ℹ️ 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 1.005']


    [code: version-not-detected]
🔥 FAIL Checking with fontTools.ttx
  • 🔥 FAIL

    WARNING: name id 1979 missing from name table

  • 🔥 FAIL

    WARNING: name id 1990 missing from name table

  • 🔥 FAIL

    WARNING: name id 2000 missing from name table

  • 🔥 FAIL

    WARNING: name id 2010 missing from name table

  • 🔥 FAIL

    WARNING: name id 2019 missing from name table

  • 🔥 FAIL

    WARNING: name id 2030 missing from name table

  • 🔥 FAIL

    WARNING: name id 2040 missing from name table

  • 🔥 FAIL

    WARNING: name id 2050 missing from name table

  • ℹ️ INFO

    While converting TTF into an XML file, ttx emited the messages listed below.

🔥 FAIL Validate defaults on fvar table match registered fallback names in GFAxisRegistry.
  • 🔥 FAIL

    The defaul value YEAR:1979.0 is not registered as an axis fallback name on the Google Axis Registry.
    You should consider suggesting the addition of this value to the registry or adopted one of the existing fallback names for this axis:
    [name: "Default"
    value: 2000.0
    ]


    [code: not-registered]
💥 ERROR Validate STAT particle names and values match the fallback names in GFAxisRegistry.
  • 💥 ERROR

    Failed with AttributeError: 'NoneType' object has no attribute 'toUnicode'

  File "/Users/marichalemma/Google/env/lib/python3.9/site-packages/fontbakery/checkrunner.py", line 213, in _run_check
    subresults = list(subresults)
  File "/Users/marichalemma/Google/env/lib/python3.9/site-packages/fontbakery/checks/googlefonts/axisregistry.py", line 191, in com_google_fonts_check_STAT_gf_axisregistry_names
    name = normalize_name(name_entry.toUnicode())

[code: failed-check]

[1] Family checks
ℹ️ INFO Check axis ordering on the STAT table.
  • ℹ️ INFO

    None of the fonts lack a STAT table.

And these are the most common STAT axis orderings:
('YEAR', 1)

[code: summary]

Summary

💥 ERROR ☠ FATAL 🔥 FAIL ⚠️ WARN ⏩ SKIP ℹ️ INFO ✅ PASS 🔎 DEBUG
1 0 2 12 103 7 124 0
0% 0% 1% 5% 41% 3% 50% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • PASS
  • DEBUG

@dancoull
Copy link
Owner Author

dancoull commented May 2, 2024

Hey @emmamarichal! Thanks for checking. I'll update the tools and let you know if it works on my side. I had tried the old version too with the same result, but a different typeface worked so I thought it maybe it was the font.

I'll check out the other warns too. I've got another update ready that fixes the interpolation issues and removes the soft hyphen.

@emmamarichal
Copy link

@dancoull Ok perfect, thanks a lot! Let me know when you finished, and I will try again to export the fonts :)

@dancoull
Copy link
Owner Author

dancoull commented May 6, 2024

@emmamarichal Updating the tools worked, thanks! I was able to export the fonts :) I'll go through the Fontbakery checks and let you know when I'm done.

@dancoull
Copy link
Owner Author

Hey @emmamarichal I've added a new release version solving most of the issues here, at least the relevant warns and those I could understand. Could I ask you to please check these on your side and let me know if it's okay? I'd like to open an issue to onboard this soon. Thanks again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants