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

Add Asimovian #7608

Open
carolinashort opened this issue Apr 27, 2024 · 1 comment
Open

Add Asimovian #7608

carolinashort opened this issue Apr 27, 2024 · 1 comment
Labels
I New Font II Submission pending proposal for non-commissioned fonts suggested in the issue tracker

Comments

@carolinashort
Copy link

Font Project Git Repo URL: https://github.com/carolinashort/asimovian

Super short description of the Font Family: Asimovian is inspired by a geometric logotype; letters seamlessly connect through square or circular features and blend sharp edges with rounded shapes, reminiscent of Art Deco typefaces infused with a futuristic essence, echoing the narrative allure of Asimov's Foundation series.

Requirements:
Google Fonts will publish only fonts that match its requirements. Please familiarize yourself with the complete documentation in the Google Fonts Guide (GF-Guide) and ensure your font project complies with them before submitting the font family. You can also use the Google Fonts Project Template, which will help you create a repository that follows the needed structure and includes build requirements.

By filling this issue, you can confirm the project meets the requirements (by ticking the cases or putting x between the square brackets in text mode):

  • [ X ] I read, agree, and comply with the full contributing requirements
  • [ X ] The entire font project is licensed under the OFL
  • [ X ] There is no "Reserved Font Name" mention in the OFL license
  • [ X ] Family name is unique according to namecheck.fontdata.com
  • [ X ] The font supports at least GF Latin Core glyphset
  • [ X ] The repository respect the upstream repo structure
  • [ X ] The source files are available in the repository
  • [ X ] I am the author of the font, or the author agreed to this submission
  • [ X ] I will maintain the repository and participate in the onboarding process (addressing, solving, and responding to issues, merging pull requests, etc)

Image:
Asimovian Sample

@carolinashort carolinashort added I New Font II Submission pending proposal for non-commissioned fonts suggested in the issue tracker labels Apr 27, 2024
@vv-monsalve vv-monsalve added this to the Submissions to review milestone May 10, 2024
@vv-monsalve
Copy link
Collaborator

vv-monsalve commented Nov 13, 2024

Thank you for your submission, @carolinashort. We will look at the next intake revision and let you know.

For the time being, this is the FB report

FontBakery report

fontbakery version: 0.12.10

Check results

[19] asimovian-Regular.ttf
🔥 FAIL Shapes languages in all GF glyphsets.

This check uses a heuristic to determine which GF glyphsets a font supports.
Then it checks the font for correct shaping behaviour for all languages in
those glyphsets.

Original proposal: fonttools/fontbakery#4147

  • 🔥 FAIL

    GF_Latin_Core glyphset:

Language FAIL messages
nl_Latn (Dutch) Shaper didn't attach acutecomb to j
[code: failed-language-shaping]
🔥 FAIL Check family name for GF Guide compliance.

Checks the family name for compliance with the Google Fonts Guide.
https://googlefonts.github.io/gf-guide/onboarding.html#new-fonts

If you want to have your family name added to the CamelCase
exceptions list, please submit a pull request to the
camelcased_familyname_exceptions.txt file.

Similarly, abbreviations can be submitted to the
abbreviations_familyname_exceptions.txt file.

These are located in the Lib/fontbakery/data/googlefonts/ directory
of the FontBakery source code currently hosted at
https://github.com/fonttools/fontbakery/

Original proposal: fonttools/fontbakery#4049

  • 🔥 FAIL

    "asimovian" doesn't start with an uppercase letter.


    [code: starts-with-not-uppercase]
🔥 FAIL Ensure dotted circle glyph is present and can attach marks.

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.

A fontmake filter can be used to automatically add a dotted_circle to a font:

fontmake --filter 'DottedCircleFilter(pre=True)' --filter '...'

Original proposal: fonttools/fontbakery#3600

  • 🔥 FAIL

    The following glyphs could not be attached to the dotted circle glyph:

- acutecomb

- dotbelowcomb

- gravecomb

- hookabovecomb

- tildecomb

- uni0302

- uni0304

- uni0306

- uni0307

- uni0308

- uni030A

- uni030B

- uni030C

- uni0310

- uni0312

- uni031B

- uni0324

- uni0325

- uni0326

- uni0327

- uni0328

- uni032E

- uni0331

- uni035F

[code: unattached-dotted-circle-marks]

🔥 FAIL Check font names are correct

Google Fonts has several rules which need to be adhered to when
setting a font's name table. Please read:
https://googlefonts.github.io/gf-guide/statics.html#supported-styles
https://googlefonts.github.io/gf-guide/statics.html#style-linking
https://googlefonts.github.io/gf-guide/statics.html#unsupported-styles
https://googlefonts.github.io/gf-guide/statics.html#single-weight-families

Original proposal: fonttools/fontbakery#3800

  • 🔥 FAIL

    Font names are incorrect:

nameID current expected
Family Name asimovian asimovian
Subfamily Name Regular Regular
Full Name asimovian Regular asimovian Regular
Postscript Name asimovian-Regular asimovian-Regular
Typographic Family Name asimovian N/A
Typographic Subfamily Name Regular N/A
[code: bad-names]
🔥 FAIL Check glyphs do not have components which are themselves components.

There have been bugs rendering variable fonts with nested components.
Additionally, some static fonts with nested components have been reported
to have rendering and printing issues.

For more info, see:

Original proposal: fonttools/fontbakery#2961

  • 🔥 FAIL

    The following glyphs have components which themselves are component glyphs:

  • Agrave
  • Aacute
  • Atilde
  • Adieresis
  • Aring
  • Egrave
  • Eacute
  • Edieresis
  • Igrave
  • Iacute
  • Idieresis
  • Ntilde
  • Ograve
  • Oacute
  • Otilde
  • Odieresis
  • Ugrave
  • Uacute
  • Udieresis
  • Yacute
  • agrave
  • aacute
  • atilde
  • adieresis
  • aring
  • egrave
  • eacute
  • edieresis
  • igrave
  • iacute
  • idieresis
  • ntilde
  • ograve
  • oacute
  • otilde
  • odieresis
  • ugrave
  • uacute
  • udieresis
  • yacute
  • ydieresis
  • Amacron
  • Emacron
  • Omacron
  • Umacron
  • amacron
  • emacron
  • omacron
  • umacron
  • uni1EB6
  • uni1EB2
  • uni01CD
  • uni1EAC
  • uni01DE
  • uni01DE
  • uni1EA0
  • uni01E2
  • Cacute
  • Ccaron
  • Cdotaccent
  • Dcaron
  • uni1E0C
  • uni1E0E
  • Ecaron
  • uni1EC6
  • Edotaccent
  • uni1EB8
  • uni1EBC
  • Gcaron
  • uni0122
  • Gdotaccent
  • uni1E20
  • uni1E2A
  • uni1E24
  • uni01CF
  • Idotaccent
  • uni1ECA
  • Itilde
  • uni004A0301
  • uni0136
  • uni1E34
  • Lacute
  • uni013B
  • uni1E36
  • uni1E38
  • uni1E38
  • uni1E3A
  • uni1E40
  • uni1E42
  • Nacute
  • Ncaron
  • uni0145
  • uni1E44
  • uni1E46
  • uni1E48
  • uni01D1
  • uni1ED8
  • uni1ECC
  • uni1EDA
  • uni1EE2
  • uni1EDC
  • uni1EE0
  • Racute
  • Rcaron
  • uni0156
  • uni1E5C
  • uni1E5C
  • uni1E5E
  • Sacute
  • Scaron
  • uni0218
  • uni1E62
  • Tcaron
  • uni021A
  • uni1E6C
  • uni1E6E
  • uni01D3
  • uni01D7
  • uni01D7
  • uni01D9
  • uni01D9
  • uni01DB
  • uni01DB
  • uni01D5
  • uni01D5
  • uni1EE4
  • uni1EE8
  • uni1EF0
  • uni1EEA
  • uni1EEE
  • Uring
  • Utilde
  • Wacute
  • Wdieresis
  • Wgrave
  • Ydieresis
  • uni1E8E
  • uni1EF4
  • Ygrave
  • uni0232
  • uni1EF8
  • Zacute
  • Zcaron
  • Zdotaccent
  • uni1E92
  • uni1E94
  • uni1EB7
  • uni1EB3
  • uni01CE
  • uni1EAD
  • uni01DF
  • uni01DF
  • uni1EA1
  • uni01E3
  • cacute
  • ccaron
  • cdotaccent
  • uni1E0D
  • uni1E0F
  • ecaron
  • uni1EC7
  • edotaccent
  • uni1EB9
  • uni1EBD
  • gcaron
  • gdotaccent
  • uni1E21
  • uni1E2B
  • uni1E25
  • uni1E96
  • uni01D0
  • i.loclTRK
  • uni1ECB
  • itilde
  • uni006A0301
  • uni0137
  • uni1E35
  • lacute
  • uni013C
  • uni1E37
  • uni1E39
  • uni1E39
  • uni1E3B
  • uni1E41
  • uni1E43
  • nacute
  • ncaron
  • uni0146
  • uni1E45
  • uni1E47
  • uni1E49
  • uni01D2
  • uni1ED9
  • uni1ECD
  • uni1EDB
  • uni1EE3
  • uni1EDD
  • uni1EE1
  • racute
  • rcaron
  • uni0157
  • uni1E5D
  • uni1E5D
  • uni1E5F
  • sacute
  • scaron
  • uni0219
  • uni1E63
  • uni021B
  • uni1E97
  • uni1E6D
  • uni1E6F
  • uni01D4
  • uni01D8
  • uni01D8
  • uni01DA
  • uni01DA
  • uni01DC
  • uni01DC
  • uni01D6
  • uni01D6
  • uni1EE5
  • uni1EE9
  • uni1EF1
  • uni1EEB
  • uni1EEF
  • uring
  • utilde
  • wacute
  • wdieresis
  • wgrave
  • uni1E8F
  • uni1EF5
  • ygrave
  • uni0233
  • uni1EF9
  • zacute
  • zcaron
  • zdotaccent
  • uni1E93
  • uni1E95 and uni0325


    [code: found-nested-components]
🔥 FAIL Check Google Fonts glyph coverage.

Google Fonts expects that fonts in its collection support at least the minimal
set of characters defined in the GF-latin-core glyph-set.

Original proposal: fonttools/fontbakery#2488

  • 🔥 FAIL

    Missing required codepoints:

- 0x00AA (FEMININE ORDINAL INDICATOR)


- 0x00BA (MASCULINE ORDINAL INDICATOR)

[code: missing-codepoints]

🔥 FAIL PPEM must be an integer on hinted fonts.

Hinted fonts must have head table flag bit 3 set.

Per https://docs.microsoft.com/en-us/typography/opentype/spec/head,
bit 3 of Head::flags decides whether PPEM should be rounded. This bit should
always be set for hinted fonts.

Note:
Bit 3 = Force ppem to integer values for all internal scaler math;
May use fractional ppem sizes if this bit is clear;

Original proposal: fonttools/fontbakery#2338

  • 🔥 FAIL

    This is a hinted font, so it must have bit 3 set on the flags of the head table, so that PPEM values will be rounded into an integer value.

This can be accomplished by using the 'gftools fix-hinting' command:

# create virtualenv
python3 -m venv venv
# activate virtualenv
source venv/bin/activate
# install gftools
pip install git+https://www.github.com/googlefonts/tools
[code: bad-flags]
⚠️ WARN Does the font have a DSIG table?

Microsoft Office 2013 and below products expect fonts to have a digital
signature declared in a DSIG table in order to implement OpenType features.
The EOL date for Microsoft Office 2013 products is 4/11/2023.
This issue does not impact Microsoft Office 2016 and above products.

As we approach the EOL date, it is now considered better to
completely remove the table.

But if you still want your font to support OpenType features on Office 2013,
then you may find it handy to add a fake signature on a placeholder DSIG table
by running one of the helper scripts provided at
https://github.com/googlefonts/gftools

Reference: fonttools/fontbakery#1845

Original proposal: legacy:check/045
See also: fonttools/fontbakery#3398

  • ⚠️ WARN

    This font has a digital signature (DSIG table) which is only required - even if only a placeholder - on old programs like MS Office 2013 in order to work properly.
    The current recommendation is to completely remove the DSIG table.


    [code: found-DSIG]
⚠️ WARN Check font contains no 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. And mathematical
fonts also reference glyphs via the MATH table.

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

Original proposal: fonttools/fontbakery#3160

  • ⚠️ WARN

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

- i.loclTRK

- uni004A0301

- uni006A0301

[code: unreachable-glyphs]

⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets.

The purpose of this check is to ensure images (either raster or vector files)
are not excessively large in filesize and resolution.

These constraints are loosely based on infrastructure limitations under
default configurations.

It also ensures that the article page has a minimum length and includes
at least one visual asset.

Original proposal: fonttools/fontbakery#4594

  • ⚠️ WARN

    Family metadata at /Users/vvmonsalve/Downloads/asimovian-main/sources does not have an article.


    [code: lacks-article]
⚠️ WARN Check for codepoints not covered by METADATA subsets.

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.

Original proposal: fonttools/fontbakery#4097
See also: fonttools/fontbakery#4273

  • ⚠️ 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+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+0302 COMBINING CIRCUMFLEX ACCENT: try adding one of: tifinagh, math, cherokee, coptic
  • U+0306 COMBINING BREVE: try adding one of: old-permic, tifinagh
  • U+0307 COMBINING DOT ABOVE: try adding one of: coptic, hebrew, tifinagh, syriac, todhri, tai-le, math, duployan, malayalam, old-permic, canadian-aboriginal
  • U+030A COMBINING RING ABOVE: try adding one of: syriac, duployan
  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: osage, cherokee
  • U+030C COMBINING CARON: try adding one of: tai-le, cherokee
  • U+0310 COMBINING CANDRABINDU: try adding one of: math, sunuwar
  • U+0312 COMBINING TURNED COMMA ABOVE: try adding math
  • U+031B COMBINING HORN: not included in any glyphset definition
  • U+0324 COMBINING DIAERESIS BELOW: try adding one of: syriac, duployan, cherokee
  • U+0325 COMBINING RING BELOW: try adding syriac
  • U+0326 COMBINING COMMA BELOW: try adding math
  • U+0327 COMBINING CEDILLA: try adding math
  • U+0328 COMBINING OGONEK: not included in any glyphset definition
  • U+032E COMBINING BREVE BELOW: try adding syriac
  • U+0331 COMBINING MACRON BELOW: try adding one of: cherokee, sunuwar, caucasian-albanian, thai, syriac, tifinagh, gothic
  • U+035F COMBINING DOUBLE MACRON BELOW: not included in any glyphset definition
  • U+0E3F THAI CURRENCY SYMBOL BAHT: try adding thai
  • U+2000 EN QUAD: try adding symbols2
  • U+2001 EM QUAD: try adding symbols2
  • U+2003 EM SPACE: try adding nushu
  • U+2004 THREE-PER-EM SPACE: try adding symbols2
  • U+2005 FOUR-PER-EM SPACE: try adding symbols2
  • U+2006 SIX-PER-EM SPACE: try adding symbols2
  • U+2007 FIGURE SPACE: try adding symbols2
  • U+2008 PUNCTUATION SPACE: try adding symbols2
  • U+200A HAIR SPACE: try adding symbols2
  • U+200C ZERO WIDTH NON-JOINER: try adding one of: mahajani, sundanese, kaithi, hebrew, modi, new-tai-lue, syloti-nagri, gunjala-gondi, javanese, balinese, dogra, avestan, grantha, gujarati, kayah-li, rejang, limbu, khudawadi, telugu, newa, mongolian, kharoshthi, tamil, batak, thai, buhid, pahawh-hmong, sharada, sinhala, devanagari, lepcha, myanmar, hanunoo, oriya, psalter-pahlavi, tai-tham, warang-citi, gurmukhi, yi, chakma, lao, malayalam, khojki, phags-pa, siddham, kannada, masaram-gondi, hanifi-rohingya, cham, tai-viet, takri, sogdian, tagalog, tai-le, meetei-mayek, duployan, tifinagh, khmer, saurashtra, zanabazar-square, tagbanwa, buginese, bengali, manichaean, thaana, brahmi, syriac, bhaiksuki, mandaic, hatran, nko, arabic, tibetan, tirhuta
  • U+200D ZERO WIDTH JOINER: try adding one of: mahajani, sundanese, kaithi, hebrew, modi, new-tai-lue, old-hungarian, syloti-nagri, gunjala-gondi, javanese, balinese, dogra, avestan, grantha, gujarati, kayah-li, rejang, limbu, khudawadi, telugu, newa, mongolian, kharoshthi, tamil, batak, thai, buhid, pahawh-hmong, sharada, sinhala, devanagari, lepcha, myanmar, hanunoo, oriya, psalter-pahlavi, tai-tham, warang-citi, gurmukhi, yi, chakma, lao, malayalam, khojki, phags-pa, siddham, kannada, masaram-gondi, hanifi-rohingya, cham, tai-viet, takri, sogdian, tagalog, tai-le, meetei-mayek, duployan, tifinagh, khmer, saurashtra, zanabazar-square, tagbanwa, buginese, bengali, manichaean, thaana, brahmi, syriac, bhaiksuki, mandaic, nko, arabic, tibetan, tirhuta
  • U+200E LEFT-TO-RIGHT MARK: try adding one of: thaana, hebrew, syriac, nko, arabic, phags-pa
  • U+200F RIGHT-TO-LEFT MARK: try adding one of: thaana, hebrew, syriac, nko, phags-pa
  • U+2021 DOUBLE DAGGER: try adding adlam
  • U+202F NARROW NO-BREAK SPACE: try adding one of: yi, phags-pa, mongolian
  • U+2030 PER MILLE SIGN: try adding adlam
  • U+205F MEDIUM MATHEMATICAL SPACE: try adding math
  • U+2190 LEFTWARDS ARROW: try adding one of: symbols, math
  • U+2192 RIGHTWARDS ARROW: try adding one of: symbols, math
  • U+2194 LEFT RIGHT ARROW: try adding one of: symbols, math
  • U+2195 UP DOWN ARROW: try adding one of: symbols, math
  • U+2196 NORTH WEST ARROW: try adding one of: symbols, math
  • U+2197 NORTH EAST ARROW: try adding one of: symbols, math
  • U+2198 SOUTH EAST ARROW: try adding one of: symbols, math
  • U+2199 SOUTH WEST ARROW: try adding one of: symbols, math
  • U+2202 PARTIAL DIFFERENTIAL: try adding math
  • U+2205 EMPTY SET: try adding math
  • U+220F N-ARY PRODUCT: try adding math
  • U+2211 N-ARY SUMMATION: try adding math
  • U+221A SQUARE ROOT: try adding math
  • U+221E INFINITY: try adding math
  • U+222B INTEGRAL: try adding math
  • U+2248 ALMOST EQUAL TO: try adding math
  • U+2260 NOT EQUAL TO: try adding math
  • U+2264 LESS-THAN OR EQUAL TO: try adding math
  • U+2265 GREATER-THAN OR EQUAL TO: try adding math
  • U+25CA LOZENGE: try adding one of: symbols, math
  • U+25CC DOTTED CIRCLE: try adding one of: adlam, telugu, kharoshthi, lepcha, hanunoo, oriya, malayalam, phags-pa, masaram-gondi, tifinagh, saurashtra, bassa-vah, buginese, bengali, manichaean, brahmi, nko, tirhuta, modi, dogra, limbu, mongolian, tamil, buhid, gurmukhi, math, chakma, osage, khojki, hanifi-rohingya, cham, sogdian, tagalog, tai-le, meetei-mayek, duployan, miao, old-permic, symbols, mahajani, syloti-nagri, javanese, newa, batak, thai, sharada, sinhala, psalter-pahlavi, myanmar, yi, lao, canadian-aboriginal, siddham, tai-viet, takri, elbasan, zanabazar-square, tagbanwa, syriac, bhaiksuki, mandaic, tibetan, sundanese, kaithi, hebrew, new-tai-lue, gunjala-gondi, kayah-li, balinese, gujarati, grantha, rejang, wancho, khudawadi, mende-kikakui, pahawh-hmong, warang-citi, devanagari, tai-tham, music, kannada, coptic, armenian, khmer, caucasian-albanian, soyombo, ahom, marchen, thaana
  • U+3000 IDEOGRAPHIC SPACE: try adding one of: chinese-traditional, chinese-hongkong, japanese, chinese-simplified, nushu, yi, phags-pa

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

[code: unreachable-subsetting]
⚠️ WARN License URL matches License text on name table?

A known license URL must be provided in the NameID 14 (LICENSE INFO URL)
entry of the name table.

The source of truth for this check is the licensing text found on the NameID 13
entry (LICENSE DESCRIPTION).

The string snippets used for detecting licensing terms are:

  • "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.

Original proposal: legacy:check/030
See also: fonttools/fontbakery#4358

  • ⚠️ WARN

    Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13]


    [code: http-in-description]

  • ⚠️ WARN

    Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13]


    [code: http-in-description]

  • ⚠️ WARN

    Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13]


    [code: http-in-description]

⚠️ WARN Ensure soft_dotted characters lose their dot when combined with marks that replace the dot.

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

Original proposal: fonttools/fontbakery#4059

  • ⚠️ WARN

    The dot of soft dotted characters used in orthographies must disappear in the following strings: i̊ i̋ i̐ j̀ j́ j̃ j̄ j̈ į̀ į́ į̂ į̃ į̄ į̌ ị̀ ị́ ị̂ ị̃ ị̄

The dot of soft dotted characters should disappear in other cases, for example: ĭ i̇ i̒ ĭ̛ i̛̇ i̛̊ i̛̋ i̛̐ i̛̒ ĭ̤ i̤̇ i̤̊ i̤̋ i̤̐ i̤̒ ĭ̥ i̥̇ i̥̊ i̥̋ i̥̐

Your font fully covers the following languages that require the soft-dotted feature: Han (Latn, 6 speakers), Navajo (Latn, 166,319 speakers), Lithuanian (Latn, 2,357,094 speakers), Kaska (Latn, 125 speakers).

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

[code: soft-dotted]
⚠️ WARN Are any segments inordinately short?

This check looks for outline segments which seem particularly short (less
than 0.6% of the overall path length).

This check is not run for variable fonts, as they may legitimately have
short segments. As this check is liable to generate significant numbers
of false positives, it will pass if there are more than
100 reported short segments.

Original proposal: fonttools/fontbakery#3088

  • ⚠️ WARN

    The following glyphs have segments which seem very short:

* ampersand (U+0026) contains a short segment L<<312.0,342.0>--<311.0,342.0>>

* at (U+0040) contains a short segment L<<432.0,-131.0>--<421.0,-131.0>>

* E (U+0045) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* M (U+004D) contains a short segment L<<577.0,380.0>--<578.0,357.0>>

* Q (U+0051) contains a short segment L<<348.0,-2.0>--<346.0,-2.0>>

* g (U+0067) contains a short segment L<<369.0,184.0>--<358.0,184.0>>

* braceleft (U+007B) contains a short segment L<<261.0,-212.0>--<250.0,-212.0>>

* braceright (U+007D) contains a short segment L<<70.0,817.0>--<81.0,817.0>>

* sterling (U+00A3) contains a short segment L<<246.0,0.0>--<246.0,-1.0>>

* AE (U+00C6) contains a short segment L<<591.0,355.0>--<591.0,336.0>>

* Ccedilla (U+00E7) contains a short segment L<<321.0,-19.0>--<332.0,-19.0>>

* Egrave (U+00C8) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* Eacute (U+00C9) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* Ecircumflex (U+00CA) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* Edieresis (U+00CB) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* germandbls (U+00DF) contains a short segment L<<248.0,452.0>--<252.0,452.0>>

* OE (U+0152) contains a short segment L<<660.0,355.0>--<660.0,336.0>>

* trademark (U+2122) contains a short segment L<<331.0,700.0>--<338.0,699.0>>

* trademark (U+2122) contains a short segment L<<496.0,700.0>--<505.0,699.0>>

* radical (U+221A) contains a short segment L<<249.0,-113.0>--<250.0,-115.0>>

* radical (U+221A) contains a short segment L<<148.0,-115.0>--<148.0,-113.0>>

* lozenge (U+25CA) contains a short segment L<<61.0,287.0>--<60.0,288.0>>

* lozenge (U+25CA) contains a short segment L<<60.0,288.0>--<61.0,288.0>>

* lozenge (U+25CA) contains a short segment L<<456.0,288.0>--<457.0,288.0>>

* lozenge (U+25CA) contains a short segment L<<457.0,288.0>--<456.0,287.0>>

* lozenge (U+25CA) contains a short segment L<<456.0,287.0>--<457.0,286.0>>

* lozenge (U+25CA) contains a short segment L<<457.0,286.0>--<456.0,286.0>>

* lozenge (U+25CA) contains a short segment L<<61.0,286.0>--<60.0,286.0>>

* lozenge (U+25CA) contains a short segment L<<60.0,286.0>--<61.0,287.0>>

* Emacron (U+0112) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni01E2 (U+01E2) contains a short segment L<<591.0,355.0>--<591.0,336.0>>

* Ecaron (U+011A) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni1EBE (U+1EBE) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni1EC6 (U+1EC6) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni1EC0 (U+1EC0) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni1EC2 (U+1EC2) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni1EC4 (U+1EC4) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* Edotaccent (U+0116) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni1EB8 (U+1EB8) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni1EBA (U+1EBA) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* Eogonek (U+0118) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni1EBC (U+1EBC) contains a short segment L<<166.0,355.0>--<166.0,336.0>>

* uni1E40 (U+1E40) contains a short segment L<<577.0,380.0>--<578.0,357.0>>

* uni1E42 (U+1E42) contains a short segment L<<577.0,380.0>--<578.0,357.0>>

* Scedilla (U+015E) contains a short segment L<<248.0,-19.0>--<259.0,-19.0>>

* uni1E9E (U+1E9E) contains a short segment L<<248.0,452.0>--<252.0,452.0>>

* uni0162 (U+0162) contains a short segment L<<350.0,-6.0>--<361.0,-6.0>>

* Uhorn (U+01AF) contains a short segment L<<696.0,708.0>--<696.0,691.0>>

* uni1EE8 (U+1EE8) contains a short segment L<<696.0,708.0>--<696.0,691.0>>

* uni1EF0 (U+1EF0) contains a short segment L<<696.0,708.0>--<696.0,691.0>>

* uni1EEA (U+1EEA) contains a short segment L<<696.0,708.0>--<696.0,691.0>>

* uni1EEC (U+1EEC) contains a short segment L<<696.0,708.0>--<696.0,691.0>>

* uni1EEE (U+1EEE) contains a short segment L<<696.0,708.0>--<696.0,691.0>>

* Uogonek (U+0172) contains a short segment L<<521.0,0.0>--<516.0,0.0>>

* gbreve (U+011F) contains a short segment L<<369.0,184.0>--<358.0,184.0>>

* gcaron (U+01E7) contains a short segment L<<369.0,184.0>--<358.0,184.0>>

* gcircumflex (U+011D) contains a short segment L<<369.0,184.0>--<358.0,184.0>>

* uni0123 (U+0123) contains a short segment L<<369.0,184.0>--<358.0,184.0>>

* gdotaccent (U+0121) contains a short segment L<<369.0,184.0>--<358.0,184.0>>

* uni1E21 (U+1E21) contains a short segment L<<369.0,184.0>--<358.0,184.0>>

* scedilla (U+015F) contains a short segment L<<164.0,-19.0>--<175.0,-19.0>>

* uni0163 (U+0163) contains a short segment L<<280.0,-19.0>--<291.0,-19.0>>

* uhorn (U+01B0) contains a short segment L<<629.0,543.0>--<629.0,526.0>>

* uni1EE9 (U+1EE9) contains a short segment L<<629.0,543.0>--<629.0,526.0>>

* uni1EF1 (U+1EF1) contains a short segment L<<629.0,543.0>--<629.0,526.0>>

* uni1EEB (U+1EEB) contains a short segment L<<629.0,543.0>--<629.0,526.0>>

* uni1EED (U+1EED) contains a short segment L<<629.0,543.0>--<629.0,526.0>>

* uni1EEF (U+1EEF) contains a short segment L<<629.0,543.0>--<629.0,526.0>>

* uni20AA (U+20AA) contains a short segment L<<613.0,-9.0>--<613.0,-8.0>>

* uni20AA (U+20AA) contains a short segment L<<212.0,690.0>--<212.0,689.0>>

[code: found-short-segments]

⚠️ WARN Do any segments have colinear vectors?

This check looks for consecutive line segments which have the same angle. This
normally happens if an outline point has been added by accident.

This check is not run for variable fonts, as they may legitimately have
colinear vectors.

Original proposal: fonttools/fontbakery#3088

  • ⚠️ WARN

    The following glyphs have colinear vectors:

* A (U+0041): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Aacute (U+00C1): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Abreve (U+0102): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Acircumflex (U+00C2): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Adieresis (U+00C4): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Agrave (U+00C0): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Amacron (U+0100): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Aogonek (U+0104): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Aring (U+00C5): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Atilde (U+00C3): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Euro (U+20AC): L<<142.0,333.0>--<142.0,365.0>> -> L<<142.0,365.0>--<143.0,394.0>>

* Euro (U+20AC): L<<143.0,307.0>--<142.0,333.0>> -> L<<142.0,333.0>--<142.0,365.0>>

* Euro (U+20AC): L<<258.0,364.0>--<258.0,336.0>> -> L<<258.0,336.0>--<259.0,307.0>>

* Euro (U+20AC): L<<259.0,394.0>--<258.0,364.0>> -> L<<258.0,364.0>--<258.0,336.0>>

* M (U+004D): L<<466.0,700.0>--<503.0,700.0>> -> L<<503.0,700.0>--<563.0,700.0>>

* M (U+004D): L<<577.0,380.0>--<578.0,357.0>> -> L<<578.0,357.0>--<578.0,0.0>>

* M (U+004D): L<<577.0,598.0>--<577.0,380.0>> -> L<<577.0,380.0>--<578.0,357.0>>

* M (U+004D): L<<70.0,700.0>--<107.0,700.0>> -> L<<107.0,700.0>--<167.0,700.0>>

* N (U+004E): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Nacute (U+0143): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Ncaron (U+0147): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* Ntilde (U+00D1): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* U (U+0055): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Uacute (U+00DA): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Ubreve (U+016C): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Ucircumflex (U+00DB): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Udieresis (U+00DC): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Ugrave (U+00D9): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Uhorn (U+01AF): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Uhungarumlaut (U+0170): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Umacron (U+016A): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Uogonek (U+0172): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<516.0,0.0>>

* Uring (U+016E): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* Utilde (U+0168): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* V (U+0056): L<<570.0,528.0>--<571.0,421.0>> -> L<<571.0,421.0>--<570.0,335.0>>

* V (U+0056): L<<570.0,700.0>--<570.0,528.0>> -> L<<570.0,528.0>--<571.0,421.0>>

* ampersand (U+0026): L<<395.0,342.0>--<312.0,342.0>> -> L<<312.0,342.0>--<311.0,342.0>>

* eogonek (U+0119): L<<469.0,-2.0>--<369.0,-2.0>> -> L<<369.0,-2.0>--<332.0,1.0>>

* germandbls (U+00DF): L<<71.0,0.0>--<70.0,194.0>> -> L<<70.0,194.0>--<70.0,427.0>>

* m (U+006D): L<<365.0,535.0>--<443.0,535.0>> -> L<<443.0,535.0>--<476.0,534.0>>

* m (U+006D): L<<70.0,535.0>--<151.0,535.0>> -> L<<151.0,535.0>--<179.0,534.0>>

* one (U+0031): L<<277.0,427.0>--<277.0,194.0>> -> L<<277.0,194.0>--<276.0,0.0>>

* parenleft (U+0028): L<<71.0,116.0>--<70.0,289.0>> -> L<<70.0,289.0>--<71.0,458.0>>

* partialdiff (U+2202): L<<200.0,429.0>--<303.0,474.0>> -> L<<303.0,474.0>--<341.0,493.0>>

* trademark (U+2122): L<<56.0,578.0>--<57.0,617.0>> -> L<<57.0,617.0>--<57.0,647.0>>

* trademark (U+2122): L<<57.0,527.0>--<56.0,578.0>> -> L<<56.0,578.0>--<57.0,617.0>>

* trademark (U+2122): L<<672.0,488.0>--<672.0,449.0>> -> L<<672.0,449.0>--<672.0,370.0>>

* trademark (U+2122): L<<672.0,540.0>--<672.0,488.0>> -> L<<672.0,488.0>--<672.0,449.0>>

* uni0145 (U+0145): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni01CD (U+01CD): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni01D3 (U+01D3): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni01D5 (U+01D5): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni01D7 (U+01D7): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni01D9 (U+01D9): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni01DB (U+01DB): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni01DE (U+01DE): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1E40 (U+1E40): L<<466.0,700.0>--<503.0,700.0>> -> L<<503.0,700.0>--<563.0,700.0>>

* uni1E40 (U+1E40): L<<577.0,380.0>--<578.0,357.0>> -> L<<578.0,357.0>--<578.0,0.0>>

* uni1E40 (U+1E40): L<<577.0,598.0>--<577.0,380.0>> -> L<<577.0,380.0>--<578.0,357.0>>

* uni1E40 (U+1E40): L<<70.0,700.0>--<107.0,700.0>> -> L<<107.0,700.0>--<167.0,700.0>>

* uni1E41 (U+1E41): L<<365.0,535.0>--<443.0,535.0>> -> L<<443.0,535.0>--<476.0,534.0>>

* uni1E41 (U+1E41): L<<70.0,535.0>--<151.0,535.0>> -> L<<151.0,535.0>--<179.0,534.0>>

* uni1E42 (U+1E42): L<<466.0,700.0>--<503.0,700.0>> -> L<<503.0,700.0>--<563.0,700.0>>

* uni1E42 (U+1E42): L<<577.0,380.0>--<578.0,357.0>> -> L<<578.0,357.0>--<578.0,0.0>>

* uni1E42 (U+1E42): L<<577.0,598.0>--<577.0,380.0>> -> L<<577.0,380.0>--<578.0,357.0>>

* uni1E42 (U+1E42): L<<70.0,700.0>--<107.0,700.0>> -> L<<107.0,700.0>--<167.0,700.0>>

* uni1E43 (U+1E43): L<<365.0,535.0>--<443.0,535.0>> -> L<<443.0,535.0>--<476.0,534.0>>

* uni1E43 (U+1E43): L<<70.0,535.0>--<151.0,535.0>> -> L<<151.0,535.0>--<179.0,534.0>>

* uni1E44 (U+1E44): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1E46 (U+1E46): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1E48 (U+1E48): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1E9E (U+1E9E): L<<71.0,0.0>--<70.0,194.0>> -> L<<70.0,194.0>--<70.0,427.0>>

* uni1EA0 (U+1EA0): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EA2 (U+1EA2): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EA4 (U+1EA4): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EA6 (U+1EA6): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EA8 (U+1EA8): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EAA (U+1EAA): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EAC (U+1EAC): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EAE (U+1EAE): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EB0 (U+1EB0): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EB2 (U+1EB2): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EB4 (U+1EB4): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EB6 (U+1EB6): L<<70.0,700.0>--<119.0,700.0>> -> L<<119.0,700.0>--<179.0,700.0>>

* uni1EE4 (U+1EE4): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni1EE6 (U+1EE6): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni1EE8 (U+1EE8): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni1EEA (U+1EEA): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni1EEC (U+1EEC): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni1EEE (U+1EEE): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni1EF0 (U+1EF0): L<<570.0,0.0>--<521.0,0.0>> -> L<<521.0,0.0>--<461.0,0.0>>

* uni20AA (U+20AA): L<<157.0,691.0>--<194.0,690.0>> -> L<<194.0,690.0>--<212.0,690.0>>

* uni20AA (U+20AA): L<<668.0,-10.0>--<631.0,-9.0>> -> L<<631.0,-9.0>--<613.0,-9.0>>

* uni20AA (U+20AA): L<<728.0,-10.0>--<668.0,-10.0>> -> L<<668.0,-10.0>--<631.0,-9.0>>

* uni20AA (U+20AA): L<<97.0,691.0>--<157.0,691.0>> -> L<<157.0,691.0>--<194.0,690.0>>

[code: found-colinear-vectors]

⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines?

This check detects line segments which are nearly, but not quite, exactly
horizontal or vertical. Sometimes such lines are created by design, but often
they are indicative of a design error.

This check is disabled for italic styles, which often contain nearly-upright
lines.

Original proposal: fonttools/fontbakery#3088

  • ⚠️ WARN

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

* D (U+0044): L<<70.0,700.0>--<186.0,699.0>>

* Dcaron (U+010E): L<<70.0,700.0>--<186.0,699.0>>

* Dcroat (U+0110): L<<154.0,700.0>--<270.0,699.0>>

* Eth (U+00D0): L<<154.0,700.0>--<270.0,699.0>>

* Euro (U+20AC): L<<143.0,394.0>--<20.0,393.0>>

* Euro (U+20AC): L<<161.0,209.0>--<23.0,208.0>>

* Euro (U+20AC): L<<259.0,307.0>--<512.0,308.0>>

* Euro (U+20AC): L<<509.0,395.0>--<259.0,394.0>>

* Euro (U+20AC): L<<512.0,210.0>--<289.0,209.0>>

* L (U+004C): L<<186.0,700.0>--<187.0,110.0>>

* Lacute (U+0139): L<<186.0,700.0>--<187.0,110.0>>

* Lcaron (U+013D): L<<186.0,700.0>--<187.0,110.0>>

* M (U+004D): L<<185.0,598.0>--<186.0,0.0>>

* N (U+004E): L<<185.0,598.0>--<186.0,0.0>>

* Nacute (U+0143): L<<185.0,598.0>--<186.0,0.0>>

* Ncaron (U+0147): L<<185.0,598.0>--<186.0,0.0>>

* Ntilde (U+00D1): L<<185.0,598.0>--<186.0,0.0>>

* P (U+0050): L<<188.0,267.0>--<186.0,0.0>>

* Q (U+0051): L<<667.0,-1.0>--<348.0,-2.0>>

* R (U+0052): L<<188.0,267.0>--<186.0,0.0>>

* Racute (U+0154): L<<188.0,267.0>--<186.0,0.0>>

* Rcaron (U+0158): L<<188.0,267.0>--<186.0,0.0>>

* S (U+0053): L<<450.0,590.0>--<157.0,589.0>>

* Sacute (U+015A): L<<450.0,590.0>--<157.0,589.0>>

* Scaron (U+0160): L<<450.0,590.0>--<157.0,589.0>>

* Scedilla (U+015E): L<<450.0,590.0>--<157.0,589.0>>

* Scircumflex (U+015C): L<<450.0,590.0>--<157.0,589.0>>

* U (U+0055): L<<455.0,102.0>--<454.0,700.0>>

* Uacute (U+00DA): L<<455.0,102.0>--<454.0,700.0>>

* Ubreve (U+016C): L<<455.0,102.0>--<454.0,700.0>>

* Ucircumflex (U+00DB): L<<455.0,102.0>--<454.0,700.0>>

* Udieresis (U+00DC): L<<455.0,102.0>--<454.0,700.0>>

* Ugrave (U+00D9): L<<455.0,102.0>--<454.0,700.0>>

* Uhorn (U+01AF): L<<455.0,102.0>--<454.0,700.0>>

* Uhungarumlaut (U+0170): L<<455.0,102.0>--<454.0,700.0>>

* Umacron (U+016A): L<<455.0,102.0>--<454.0,700.0>>

* Uogonek (U+0172): L<<455.0,102.0>--<454.0,700.0>>

* Uring (U+016E): L<<455.0,102.0>--<454.0,700.0>>

* Utilde (U+0168): L<<455.0,102.0>--<454.0,700.0>>

* asterisk (U+002A): L<<290.0,738.0>--<291.0,577.0>>

* asterisk (U+002A): L<<291.0,447.0>--<292.0,284.0>>

* dcroat (U+0111): L<<277.0,738.0>--<400.0,739.0>>

* dcroat (U+0111): L<<400.0,651.0>--<277.0,650.0>>

* dollar (U+0024): L<<450.0,590.0>--<157.0,589.0>>

* endash (U+2013): L<<0.0,375.0>--<500.0,377.0>>

* endash (U+2013): L<<500.0,270.0>--<0.0,268.0>>

* equal (U+003D): L<<49.0,400.0>--<548.0,401.0>>

* equal (U+003D): L<<52.0,197.0>--<551.0,198.0>>

* equal (U+003D): L<<548.0,311.0>--<49.0,309.0>>

* equal (U+003D): L<<551.0,108.0>--<52.0,106.0>>

* germandbls (U+00DF): L<<71.0,0.0>--<70.0,194.0>>

* hbar (U+0127): L<<182.0,739.0>--<316.0,740.0>>

* hbar (U+0127): L<<316.0,652.0>--<182.0,651.0>>

* notequal (U+2260): L<<194.0,213.0>--<72.0,212.0>>

* notequal (U+2260): L<<286.0,411.0>--<72.0,410.0>>

* notequal (U+2260): L<<551.0,214.0>--<290.0,213.0>>

* notequal (U+2260): L<<551.0,412.0>--<382.0,411.0>>

* notequal (U+2260): L<<72.0,496.0>--<326.0,497.0>>

* numbersign (U+0023): L<<330.0,265.0>--<447.0,266.0>>

* numbersign (U+0023): L<<383.0,497.0>--<499.0,498.0>>

* one (U+0031): L<<277.0,194.0>--<276.0,0.0>>

* paragraph (U+00B6): L<<407.0,-92.0>--<408.0,700.0>>

* paragraph (U+00B6): L<<501.0,700.0>--<502.0,-92.0>>

* parenleft (U+0028): L<<70.0,289.0>--<71.0,458.0>>

* parenleft (U+0028): L<<71.0,116.0>--<70.0,289.0>>

* registered (U+00AE): L<<324.0,311.0>--<323.0,181.0>>

* semicolon (U+003B): L<<141.0,184.0>--<257.0,183.0>>

* two (U+0032): L<<160.0,108.0>--<505.0,107.0>>

* uni013B (U+013B): L<<186.0,700.0>--<187.0,110.0>>

* uni0145 (U+0145): L<<185.0,598.0>--<186.0,0.0>>

* uni0156 (U+0156): L<<188.0,267.0>--<186.0,0.0>>

* uni01D3 (U+01D3): L<<455.0,102.0>--<454.0,700.0>>

* uni01D5 (U+01D5): L<<455.0,102.0>--<454.0,700.0>>

* uni01D7 (U+01D7): L<<455.0,102.0>--<454.0,700.0>>

* uni01D9 (U+01D9): L<<455.0,102.0>--<454.0,700.0>>

* uni01DB (U+01DB): L<<455.0,102.0>--<454.0,700.0>>

* uni0218 (U+0218): L<<450.0,590.0>--<157.0,589.0>>

* uni1E0C (U+1E0C): L<<70.0,700.0>--<186.0,699.0>>

* uni1E0E (U+1E0E): L<<70.0,700.0>--<186.0,699.0>>

* uni1E36 (U+1E36): L<<186.0,700.0>--<187.0,110.0>>

* uni1E38 (U+1E38): L<<186.0,700.0>--<187.0,110.0>>

* uni1E3A (U+1E3A): L<<186.0,700.0>--<187.0,110.0>>

* uni1E40 (U+1E40): L<<185.0,598.0>--<186.0,0.0>>

* uni1E42 (U+1E42): L<<185.0,598.0>--<186.0,0.0>>

* uni1E44 (U+1E44): L<<185.0,598.0>--<186.0,0.0>>

* uni1E46 (U+1E46): L<<185.0,598.0>--<186.0,0.0>>

* uni1E48 (U+1E48): L<<185.0,598.0>--<186.0,0.0>>

* uni1E5C (U+1E5C): L<<188.0,267.0>--<186.0,0.0>>

* uni1E5E (U+1E5E): L<<188.0,267.0>--<186.0,0.0>>

* uni1E62 (U+1E62): L<<450.0,590.0>--<157.0,589.0>>

* uni1E9E (U+1E9E): L<<71.0,0.0>--<70.0,194.0>>

* uni1EE4 (U+1EE4): L<<455.0,102.0>--<454.0,700.0>>

* uni1EE6 (U+1EE6): L<<455.0,102.0>--<454.0,700.0>>

* uni1EE8 (U+1EE8): L<<455.0,102.0>--<454.0,700.0>>

* uni1EEA (U+1EEA): L<<455.0,102.0>--<454.0,700.0>>

* uni1EEC (U+1EEC): L<<455.0,102.0>--<454.0,700.0>>

* uni1EEE (U+1EEE): L<<455.0,102.0>--<454.0,700.0>>

* uni1EF0 (U+1EF0): L<<455.0,102.0>--<454.0,700.0>>

* uni20AA (U+20AA): L<<212.0,587.0>--<213.0,-9.0>>

* uni20AA (U+20AA): L<<613.0,94.0>--<612.0,690.0>>

* uni20B4 (U+20B4): L<<42.0,462.0>--<366.0,463.0>>

* uni20B4 (U+20B4): L<<425.0,589.0>--<132.0,590.0>>

* uni20B4 (U+20B4): L<<563.0,365.0>--<423.0,364.0>>

* uni20B4 (U+20B4): L<<564.0,220.0>--<216.0,219.0>>

* uni20BD (U+20BD): L<<267.0,199.0>--<534.0,200.0>>

* uni20BD (U+20BD): L<<534.0,98.0>--<267.0,97.0>>

* yen (U+00A5): L<<236.0,288.0>--<40.0,287.0>>

* yen (U+00A5): L<<512.0,289.0>--<353.0,288.0>>

* yen (U+00A5): L<<515.0,130.0>--<263.0,129.0>>

[code: found-semi-vertical]

⚠️ WARN Check the direction of the outermost contour in each glyph

In TrueType fonts, the outermost contour of a glyph should be oriented
clockwise, while the inner contours should be oriented counter-clockwise.
Getting the path direction wrong can lead to rendering issues in some
software.

Original proposal: fonttools/fontbakery#2056

  • ⚠️ WARN

    The following glyphs have a counter-clockwise outer contour:

* x (U+0078) has a counter-clockwise outer contour

[code: ccw-outer-contour]

⚠️ WARN Ensure fonts have ScriptLangTags declared on the 'meta' table.

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.

Original proposal: fonttools/fontbakery#3349

  • ⚠️ WARN

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


    [code: lacks-meta-table]
⚠️ WARN Checking OS/2 achVendID.

Microsoft keeps a list of font vendors and their respective contact info. This
list is updated regularly and is indexed by a 4-char "Vendor ID" which is
stored in the achVendID field of the OS/2 table.

Registering your ID is not mandatory, but it is a good practice since some
applications may display the type designer / type foundry contact info on some
dialog and also because that info will be visible on Microsoft's website:

https://docs.microsoft.com/en-us/typography/vendors/

This check verifies whether or not a given font's vendor ID is registered in
that list or if it has some of the default values used by the most common
font editors.

Each new FontBakery release includes a cached copy of that list of vendor IDs.
If you registered recently, you're safe to ignore warnings emitted by this
check, since your ID will soon be included in one of our upcoming releases.

Original proposal: legacy:check/018
See also: fonttools/fontbakery#3943

  • ⚠️ WARN

    OS/2 VendorID is 'UKWN', a font editor default. If you registered it recently, then it's safe to ignore this warning message. Otherwise, you should set it to your own unique 4 character code, and register it with Microsoft at https://www.microsoft.com/typography/links/vendorlist.aspx


    [code: bad]

Summary

💥 ERROR ☠ FATAL 🔥 FAIL ⚠️ WARN ⏩ SKIP ℹ️ INFO ✅ PASS 🔎 DEBUG
0 0 7 12 121 9 102 0
0% 0% 3% 5% 48% 4% 41% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I New Font II Submission pending proposal for non-commissioned fonts suggested in the issue tracker
Projects
None yet
Development

No branches or pull requests

2 participants