dancoull / ClimateCrisis

Climate Crisis, is a variable font designed to help visualise the urgency of climate change.
SIL Open Font License 1.1
22 stars 1 forks source link

Solve Variable font fails in Fontbakery #7

Closed dancoull closed 1 month ago

dancoull commented 6 months ago

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. > * ⚠ **WARN** The OFL.txt body text is incorrect. Please use https://github.com/googlefonts/Unified-Font-Repository/blob/main/OFL.txt as a template. You should only modify the first line. Lines changed: \+ \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** Please consider updating the url from 'https://scripts.sil.org/OFL' to 'https://openfontlicense.org'. [code: old-url]
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 | [code: suspicious-fvar-coords]
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 https://github.com/impallari/Raleway/issues/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** chws feature not found in font. Use chws_tool (https://github.com/googlefonts/chws_tool) to add it. [code: missing-chws-feature] * ⚠ **WARN** vchw feature not found in font. Use chws_tool (https://github.com/googlefonts/chws_tool) to add it. [code: missing-vchw-feature]
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:

emmamarichal commented 6 months ago

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 | [code: suspicious-fvar-coords]
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** chws feature not found in font. Use chws_tool (https://github.com/googlefonts/chws_tool) to add it. [code: missing-chws-feature] * ⚠ **WARN** vchw feature not found in font. Use chws_tool (https://github.com/googlefonts/chws_tool) to add it. [code: missing-vchw-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** EPAR table not present in font. To learn more see https://github.com/fonttools/fontbakery/issues/818 [code: lacks-EPAR]
INFO: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (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 commented 6 months ago

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

ClimateCrisis[YEAR].pdf

dancoull commented 4 months ago

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 commented 4 months ago

@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 commented 4 months ago

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:

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**

chws feature not found in font. Use chws_tool (https://github.com/googlefonts/chws_tool) to add it.

[code: missing-chws-feature] * ⚠️ **WARN**

vchw feature not found in font. Use chws_tool (https://github.com/googlefonts/chws_tool) to add it.

[code: missing-vchw-feature]
⚠️ 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**

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

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

These are the ppm ranges declared on the gasp table:

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

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

Hinting filesize impact:

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:

dancoull commented 4 months ago

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 commented 4 months ago

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

dancoull commented 4 months ago

@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 commented 3 months ago

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!