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

Update AbeeZee #4227

Closed
7 tasks done
RosaWagner opened this issue Jan 21, 2022 · 5 comments · Fixed by #4265
Closed
7 tasks done

Update AbeeZee #4227

RosaWagner opened this issue Jan 21, 2022 · 5 comments · Fixed by #4265
Assignees
Labels
-- Has RFN has Reserved Font Name in OFL.txt I Font Upgrade
Milestone

Comments

@RosaWagner
Copy link
Contributor

RosaWagner commented Jan 21, 2022

upstream: https://github.com/googlefonts/abeezee

AbeeZee is the first family dir in this repo and referenced multiple times in our documentation. People probably go there first to have an example of family directories. It would better then if it matches the spec (which is not the case right now in term of copyright string etc.)

Would also like to approve the removal of the RFN --> @davelab6

Production notes

  • Fontlab to Glyphs
  • Repo structure
  • Build the font
  • Fontbakery
  • Visual QA
  • PR Upstream
  • Package
@RosaWagner RosaWagner added -- Needs Upstream Resolution Upstream fix required before moving forward I Font Upgrade labels Jan 21, 2022
@RosaWagner RosaWagner added this to the 2022 Q1 milestone Jan 21, 2022
@RosaWagner RosaWagner self-assigned this Jan 21, 2022
@RosaWagner RosaWagner added the -- Has RFN has Reserved Font Name in OFL.txt label Jan 21, 2022
@emmamarichal
Copy link
Collaborator

Fontbakery report

Fontbakery version: 0.8.4

[1] Family checks
🔥 FAIL: Does font file include unacceptable control character glyphs?
--- Rationale ---
Use of some unacceptable control characters in the U+0000 - U+001F range can
lead to rendering issues on some platforms.
Acceptable control characters are defined as .null (U+0000) and CR (U+000D) for
this test.
  • 🔥 FAIL The following unacceptable control characters were identified:
    ABeeZee-Italic.ttf: uni0001, uni0002, uni0003, uni0004, uni0005, uni0006, uni0007, uni0008, uni0009, uni0010, uni0011, uni0012, uni0013, uni0014, uni0015, uni0016, uni0017, uni0018, uni0019
    ABeeZee-Regular.ttf: uni0001, uni0002, uni0003, uni0004, uni0005, uni0006, uni0007, uni0008, uni0009, uni0010, uni0011, uni0012, uni0013, uni0014, uni0015, uni0016, uni0017, uni0018, uni0019
    [code: unacceptable]

[11] ABeeZee-Italic.ttf
💔 ERROR: Check for font-v versioning.
--- Rationale ---
The git sha1 tagging and dev/release features of Source Foundry `font-v` tool
are awesome and we would love to consider upstreaming the approach into fontmake
someday. For now we only emit a WARN if a given font does not yet follow the
experimental versioning style, but at some point we may start enforcing it.
  • 💔 ERROR Failed with ImportError: Failed to initialize: Cmd('git') failed due to: exit code(1)
    cmdline: git version
    stderr: 'xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun'
🔥 FAIL: Check `Google Fonts Latin Core` glyph coverage.
--- Rationale ---
Google Fonts expects that fonts in its collection support at least the minimal
set of characters defined in the `GF-latin-core` glyph-set.
  • 🔥 FAIL Missing required codepoints: 0x2026 (HORIZONTAL ELLIPSIS), 0x2044 (FRACTION SLASH), 0x2074 (SUPERSCRIPT FOUR), 0x2212 (MINUS SIGN) and 0x2215 (DIVISION SLASH) [code: missing-codepoints]
🔥 FAIL: Check name table: FONT_FAMILY_NAME entries.
--- Rationale ---
Checks that the family name infered from the font filename matches the string at
nameID 1 (NAMEID_FONT_FAMILY_NAME) if it conforms to RIBBI and otherwise checks
that nameID 1 is the family name + the style name.
  • 🔥 FAIL Entry [FONT_FAMILY_NAME(1):WINDOWS(3)] on the "name" table: Expected "A Bee Zee" but got "ABeeZee". [code: mismatch]
🔥 FAIL: Check name table: FULL_FONT_NAME entries.
--- Rationale ---
Requirements for the FULL_FONT_NAME entries in the 'name' table.
  • 🔥 FAIL [FULL_FONT_NAME(4):WINDOWS(3)]
    Expected: "A Bee Zee Italic"
    But got: "ABeeZee Italic" [code: bad-entry]
WARN: Checking OS/2 achVendID.
--- Rationale ---
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.
  • WARN OS/2 VendorID value 'NONE' is not yet recognized. 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: unknown]
WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table.
--- Rationale ---
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
--- Rationale ---
Glyphs are either accessible directly through Unicode codepoints or through
substitution rules. 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:
  • dieresis.cap
  • acute.cap
  • ring.cap
  • caron.cap
  • foundryicon
  • tilde.cap
  • circumflex.cap
  • grave.cap
  • uni0307.cap
    [code: unreachable-glyphs]
WARN: Check if each glyph has the recommended amount of contours.
--- Rationale ---
Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only be
constructured in a handful of ways. This means a glyph's contour count will only
differ slightly amongst different fonts, e.g a 'g' could either be 2 or 3
contours, depending on whether its double story or single story.
However, a quotedbl should have 2 contours, unless the font belongs to a display
family.
This check currently does not cover variable fonts because there's plenty of
alternative ways of constructing glyphs with multiple outlines for each feature
in a VarFont. The expected contour count data for this check is currently
optimized for the typical construction of glyphs in static fonts.
  • WARN This font has a 'Soft Hyphen' character (codepoint 0x00AD) which is supposed to be zero-width and invisible, and is used to mark a hyphenation possibility within a word in the absence of or overriding dictionary hyphenation. It is mostly an obsolete mechanism now, and the character is only included in fonts for legacy codepage coverage. [code: softhyphen]
  • WARN This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

The following glyphs do not have the recommended number of contours:

  • Glyph name: uni00AD Contours detected: 1 Expected: 0
  • Glyph name: uni00AD Contours detected: 1 Expected: 0
    [code: contour-count]
WARN: Are there any misaligned on-curve points?
--- Rationale ---
This check heuristically looks for on-curve points which are close to, but do
not sit on, significant boundary coordinates. For example, a point which has a
Y-coordinate of 1 or -1 might be a misplaced baseline point. As well as the
baseline, here we also check for points near the x-height (but only for lower
case Latin letters), cap-height, ascender and descender Y coordinates.
Not all such misaligned curve points are a mistake, and sometimes the design may
call for points in locations near the boundaries. As this check is liable to
generate significant numbers of false positives, it will pass if there are more
than 100 reported misalignments.
  • WARN The following glyphs have on-curve points which have potentially incorrect y coordinates:
    • percent (U+0025): X=157.0,Y=1.0 (should be at baseline 0?)
    • six (U+0036): X=495.0,Y=702.0 (should be at cap-height 700?)
    • six (U+0036): X=518.5,Y=701.5 (should be at cap-height 700?)
    • at (U+0040): X=205.5,Y=-1.5 (should be at baseline 0?)
    • B (U+0042): X=130.0,Y=-1.5 (should be at baseline 0?)
    • K (U+004B): X=537.0,Y=698.0 (should be at cap-height 700?)
    • c (U+0063): X=341.5,Y=-2.0 (should be at baseline 0?)
    • c (U+0063): X=403.5,Y=520.5 (should be at x-height 520?)
    • e (U+0065): X=363.0,Y=0.5 (should be at baseline 0?)
    • braceleft (U+007B): X=448.0,Y=701.0 (should be at cap-height 700?) and 15 more. [code: found-misalignments]
WARN: Are any segments inordinately short?
--- Rationale ---
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.
  • WARN The following glyphs have segments which seem very short:
    • at (U+0040) contains a short segment B<<679.0,116.0>-<677.0,104.0>-<677.0,95.0>>
    • at (U+0040) contains a short segment B<<677.0,95.0>-<677.0,74.0>-<689.5,63.0>>
    • at (U+0040) contains a short segment B<<689.5,63.0>-<702.0,52.0>-<724.0,52.0>>
    • G (U+0047) contains a short segment B<<573.0,146.0>-<572.0,141.0>-<571.5,134.5>>
    • G (U+0047) contains a short segment B<<571.5,134.5>-<571.0,128.0>-<571.0,121.0>>
    • U (U+0055) contains a short segment B<<561.0,146.0>-<560.0,141.0>-<559.5,134.5>>
    • U (U+0055) contains a short segment B<<559.5,134.5>-<559.0,128.0>-<559.0,121.0>>
    • a (U+0061) contains a short segment B<<482.0,141.0>-<481.0,136.0>-<480.5,129.5>>
    • d (U+0064) contains a short segment B<<494.0,141.0>-<493.0,136.0>-<492.5,129.5>>
    • d (U+0064) contains a short segment B<<492.5,129.5>-<492.0,123.0>-<492.0,116.0>> and 38 more. [code: found-short-segments]
WARN: Do any segments have colinear vectors?
--- Rationale ---
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.
  • WARN The following glyphs have colinear vectors:
    • exclam (U+0021): L<<108.0,207.0>--<143.0,480.0>> -> L<<143.0,480.0>--<187.0,729.0>>
    • exclam (U+0021): L<<287.0,729.0>--<243.0,480.0>> -> L<<243.0,480.0>--<182.0,207.0>>
    • exclamdown (U+00A1): L<<209.0,314.0>--<174.0,41.0>> -> L<<174.0,41.0>--<127.0,-220.0>> and exclamdown (U+00A1): L<<27.0,-220.0>--<74.0,41.0>> -> L<<74.0,41.0>--<135.0,314.0>> [code: found-colinear-vectors]

[11] ABeeZee-Regular.ttf
💔 ERROR: Check for font-v versioning.
--- Rationale ---
The git sha1 tagging and dev/release features of Source Foundry `font-v` tool
are awesome and we would love to consider upstreaming the approach into fontmake
someday. For now we only emit a WARN if a given font does not yet follow the
experimental versioning style, but at some point we may start enforcing it.
  • 💔 ERROR Failed with ImportError: Failed to initialize: Cmd('git') failed due to: exit code(1)
    cmdline: git version
    stderr: 'xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun'
🔥 FAIL: Check `Google Fonts Latin Core` glyph coverage.
--- Rationale ---
Google Fonts expects that fonts in its collection support at least the minimal
set of characters defined in the `GF-latin-core` glyph-set.
  • 🔥 FAIL Missing required codepoints: 0x2026 (HORIZONTAL ELLIPSIS), 0x2044 (FRACTION SLASH), 0x2074 (SUPERSCRIPT FOUR), 0x2212 (MINUS SIGN) and 0x2215 (DIVISION SLASH) [code: missing-codepoints]
🔥 FAIL: Check name table: FONT_FAMILY_NAME entries.
--- Rationale ---
Checks that the family name infered from the font filename matches the string at
nameID 1 (NAMEID_FONT_FAMILY_NAME) if it conforms to RIBBI and otherwise checks
that nameID 1 is the family name + the style name.
  • 🔥 FAIL Entry [FONT_FAMILY_NAME(1):WINDOWS(3)] on the "name" table: Expected "A Bee Zee" but got "ABeeZee". [code: mismatch]
🔥 FAIL: Check name table: FULL_FONT_NAME entries.
--- Rationale ---
Requirements for the FULL_FONT_NAME entries in the 'name' table.
  • 🔥 FAIL [FULL_FONT_NAME(4):WINDOWS(3)]
    Expected: "A Bee Zee Regular"
    But got: "ABeeZee Regular" [code: bad-entry]
WARN: Checking OS/2 achVendID.
--- Rationale ---
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.
  • WARN OS/2 VendorID value 'NONE' is not yet recognized. 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: unknown]
WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table.
--- Rationale ---
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
--- Rationale ---
Glyphs are either accessible directly through Unicode codepoints or through
substitution rules. 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:
  • dieresis.cap
  • acute.cap
  • ring.cap
  • caron.cap
  • foundryicon
  • tilde.cap
  • circumflex.cap
  • grave.cap
  • uni0307.cap
    [code: unreachable-glyphs]
WARN: Check if each glyph has the recommended amount of contours.
--- Rationale ---
Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only be
constructured in a handful of ways. This means a glyph's contour count will only
differ slightly amongst different fonts, e.g a 'g' could either be 2 or 3
contours, depending on whether its double story or single story.
However, a quotedbl should have 2 contours, unless the font belongs to a display
family.
This check currently does not cover variable fonts because there's plenty of
alternative ways of constructing glyphs with multiple outlines for each feature
in a VarFont. The expected contour count data for this check is currently
optimized for the typical construction of glyphs in static fonts.
  • WARN This font has a 'Soft Hyphen' character (codepoint 0x00AD) which is supposed to be zero-width and invisible, and is used to mark a hyphenation possibility within a word in the absence of or overriding dictionary hyphenation. It is mostly an obsolete mechanism now, and the character is only included in fonts for legacy codepage coverage. [code: softhyphen]
  • WARN This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

The following glyphs do not have the recommended number of contours:

  • Glyph name: uni00AD Contours detected: 1 Expected: 0
  • Glyph name: uni00AD Contours detected: 1 Expected: 0
    [code: contour-count]
WARN: Are there any misaligned on-curve points?
--- Rationale ---
This check heuristically looks for on-curve points which are close to, but do
not sit on, significant boundary coordinates. For example, a point which has a
Y-coordinate of 1 or -1 might be a misplaced baseline point. As well as the
baseline, here we also check for points near the x-height (but only for lower
case Latin letters), cap-height, ascender and descender Y coordinates.
Not all such misaligned curve points are a mistake, and sometimes the design may
call for points in locations near the boundaries. As this check is liable to
generate significant numbers of false positives, it will pass if there are more
than 100 reported misalignments.
  • WARN The following glyphs have on-curve points which have potentially incorrect y coordinates:
    • percent (U+0025): X=199.0,Y=-2.0 (should be at baseline 0?)
    • percent (U+0025): X=696.0,Y=702.0 (should be at cap-height 700?)
    • five (U+0035): X=165.0,Y=1.5 (should be at baseline 0?)
    • six (U+0036): X=429.0,Y=702.0 (should be at cap-height 700?)
    • six (U+0036): X=448.5,Y=701.5 (should be at cap-height 700?)
    • B (U+0042): X=90.0,Y=698.0 (should be at cap-height 700?)
    • B (U+0042): X=90.0,Y=2.0 (should be at baseline 0?)
    • C (U+0043): X=469.5,Y=1.5 (should be at baseline 0?)
    • D (U+0044): X=90.0,Y=698.0 (should be at cap-height 700?)
    • D (U+0044): X=90.0,Y=2.0 (should be at baseline 0?) and 53 more. [code: found-misalignments]
WARN: Are any segments inordinately short?
--- Rationale ---
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.
  • WARN The following glyphs have segments which seem very short:
    • at (U+0040) contains a short segment B<<705.0,148.0>-<702.0,126.0>-<702.0,113.0>> [code: found-short-segments]
WARN: Do any segments have colinear vectors?
--- Rationale ---
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.
  • WARN The following glyphs have colinear vectors:
    • exclam (U+0021): L<<119.0,207.0>--<106.0,480.0>> -> L<<106.0,480.0>--<106.0,729.0>>
    • exclam (U+0021): L<<206.0,729.0>--<206.0,480.0>> -> L<<206.0,480.0>--<193.0,207.0>>
    • exclamdown (U+00A1): L<<105.0,-220.0>--<105.0,41.0>> -> L<<105.0,41.0>--<118.0,314.0>> and exclamdown (U+00A1): L<<192.0,314.0>--<205.0,41.0>> -> L<<205.0,41.0>--<205.0,-220.0>> [code: found-colinear-vectors]

Summary

💔 ERROR 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
2 7 14 218 13 170 0
0% 2% 3% 51% 3% 40% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG

BEFORE / AFTER

Desktop_OS_X_High_Sierra_safari_11 1_
Desktop_Windows_10_chrome_71 0_
Desktop_Windows_10_edge_18 0_

@RosaWagner
Copy link
Contributor Author

@emmamarichal tu peux ajouter/dessiner les caractères manquants (sauf divisionslash, deprecated), et je vais ajouter le nom de famille à Fontbakery. Il faudrait aussi renommer les .cap en .case et mettre à jour les features ;)

@emmamarichal

This comment has been minimized.

@emmamarichal
Copy link
Collaborator

The update of fontbakery brought a lot of normally non required missing glyphs.

Fontbakery report

Fontbakery version: 0.8.6

[11] ABeeZee-Italic.ttf
💔 ERROR: Check for font-v versioning.
--- Rationale ---
The git sha1 tagging and dev/release features of Source Foundry `font-v` tool
are awesome and we would love to consider upstreaming the approach into fontmake
someday. For now we only emit a WARN if a given font does not yet follow the
experimental versioning style, but at some point we may start enforcing it.
  • 💔 ERROR Failed with ImportError: Failed to initialize: Cmd('git') failed due to: exit code(1)
    cmdline: git version
    stderr: 'xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun'
🔥 FAIL: Check `Google Fonts Latin Core` glyph coverage.
--- Rationale ---
Google Fonts expects that fonts in its collection support at least the minimal
set of characters defined in the `GF-latin-core` glyph-set.
  • 🔥 FAIL Missing required codepoints:

    • 0x02BB (MODIFIER LETTER TURNED COMMA)

    • 0x02BC (MODIFIER LETTER APOSTROPHE)

    • 0x2002 (EN SPACE)

    • 0x2009 (THIN SPACE)

    • 0x200B (ZERO WIDTH SPACE)

    • 0x2032 (PRIME)

    • 0x2033 (DOUBLE PRIME)

    • 0x2122 (TRADE MARK SIGN)

    • 0x2191 (UPWARDS ARROW)

    • 0x2193 (DOWNWARDS ARROW)

    • 0xFEFF (ZERO WIDTH NO-BREAK SPACE)

    • And 0xFFFD (REPLACEMENT CHARACTER)
      [code: missing-codepoints]

🔥 FAIL: Check name table: FONT_FAMILY_NAME entries.
--- Rationale ---
Checks that the family name infered from the font filename matches the string at
nameID 1 (NAMEID_FONT_FAMILY_NAME) if it conforms to RIBBI and otherwise checks
that nameID 1 is the family name + the style name.
  • 🔥 FAIL Entry [FONT_FAMILY_NAME(1):WINDOWS(3)] on the "name" table: Expected "A Bee Zee" but got "ABeeZee". [code: mismatch]
🔥 FAIL: Check name table: FULL_FONT_NAME entries.
--- Rationale ---
Requirements for the FULL_FONT_NAME entries in the 'name' table.
  • 🔥 FAIL [FULL_FONT_NAME(4):WINDOWS(3)]
    Expected: "A Bee Zee Italic"
    But got: "ABeeZee Italic" [code: bad-entry]
WARN: Checking OS/2 achVendID.
--- Rationale ---
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.
  • WARN OS/2 VendorID value 'NONE' is not yet recognized. 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: unknown]
WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table.
--- Rationale ---
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
--- Rationale ---
Glyphs are either accessible directly through Unicode codepoints or through
substitution rules. 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:
    • foundryicon
      [code: unreachable-glyphs]
WARN: Check if each glyph has the recommended amount of contours.
--- Rationale ---
Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only be
constructured in a handful of ways. This means a glyph's contour count will only
differ slightly amongst different fonts, e.g a 'g' could either be 2 or 3
contours, depending on whether its double story or single story.
However, a quotedbl should have 2 contours, unless the font belongs to a display
family.
This check currently does not cover variable fonts because there's plenty of
alternative ways of constructing glyphs with multiple outlines for each feature
in a VarFont. The expected contour count data for this check is currently
optimized for the typical construction of glyphs in static fonts.
  • WARN This font has a 'Soft Hyphen' character (codepoint 0x00AD) which is supposed to be zero-width and invisible, and is used to mark a hyphenation possibility within a word in the absence of or overriding dictionary hyphenation. It is mostly an obsolete mechanism now, and the character is only included in fonts for legacy codepage coverage. [code: softhyphen]
  • WARN This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

The following glyphs do not have the recommended number of contours:

- Glyph name: uni00AD	Contours detected: 1	Expected: 0
- Glyph name: uni2215	Contours detected: 0	Expected: 1
- Glyph name: uni00AD	Contours detected: 1	Expected: 0 
- And Glyph name: uni2215	Contours detected: 0	Expected: 1

[code: contour-count]

WARN: Are there any misaligned on-curve points?
--- Rationale ---
This check heuristically looks for on-curve points which are close to, but do
not sit on, significant boundary coordinates. For example, a point which has a
Y-coordinate of 1 or -1 might be a misplaced baseline point. As well as the
baseline, here we also check for points near the x-height (but only for lower
case Latin letters), cap-height, ascender and descender Y coordinates.
Not all such misaligned curve points are a mistake, and sometimes the design may
call for points in locations near the boundaries. As this check is liable to
generate significant numbers of false positives, it will pass if there are more
than 100 reported misalignments.
  • WARN The following glyphs have on-curve points which have potentially incorrect y coordinates:
    • percent (U+0025): X=157.0,Y=1.0 (should be at baseline 0?)
    • six (U+0036): X=495.0,Y=702.0 (should be at cap-height 700?)
    • six (U+0036): X=518.5,Y=701.5 (should be at cap-height 700?)
    • at (U+0040): X=205.5,Y=-1.5 (should be at baseline 0?)
    • B (U+0042): X=130.0,Y=-1.5 (should be at baseline 0?)
    • K (U+004B): X=537.0,Y=698.0 (should be at cap-height 700?)
    • c (U+0063): X=341.5,Y=-2.0 (should be at baseline 0?)
    • c (U+0063): X=403.5,Y=520.5 (should be at x-height 520?)
    • e (U+0065): X=363.0,Y=0.5 (should be at baseline 0?)
    • braceleft (U+007B): X=448.0,Y=701.0 (should be at cap-height 700?) and 16 more.

Use -F or --full-lists to disable shortening of long lists. [code: found-misalignments]

WARN: Are any segments inordinately short?
--- Rationale ---
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.
  • WARN The following glyphs have segments which seem very short:
    • at (U+0040) contains a short segment B<<679.0,116.0>-<677.0,104.0>-<677.0,95.0>>
    • at (U+0040) contains a short segment B<<677.0,95.0>-<677.0,74.0>-<689.5,63.0>>
    • at (U+0040) contains a short segment B<<689.5,63.0>-<702.0,52.0>-<724.0,52.0>>
    • G (U+0047) contains a short segment B<<573.0,146.0>-<572.0,141.0>-<571.5,134.5>>
    • G (U+0047) contains a short segment B<<571.5,134.5>-<571.0,128.0>-<571.0,121.0>>
    • U (U+0055) contains a short segment B<<561.0,146.0>-<560.0,141.0>-<559.5,134.5>>
    • U (U+0055) contains a short segment B<<559.5,134.5>-<559.0,128.0>-<559.0,121.0>>
    • a (U+0061) contains a short segment B<<482.0,141.0>-<481.0,136.0>-<480.5,129.5>>
    • d (U+0064) contains a short segment B<<494.0,141.0>-<493.0,136.0>-<492.5,129.5>>
    • d (U+0064) contains a short segment B<<492.5,129.5>-<492.0,123.0>-<492.0,116.0>> and 38 more.

Use -F or --full-lists to disable shortening of long lists. [code: found-short-segments]

WARN: Do any segments have colinear vectors?
--- Rationale ---
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.
  • WARN The following glyphs have colinear vectors:
    • exclam (U+0021): L<<108.0,207.0>--<143.0,480.0>> -> L<<143.0,480.0>--<187.0,729.0>>
    • exclam (U+0021): L<<287.0,729.0>--<243.0,480.0>> -> L<<243.0,480.0>--<182.0,207.0>>
    • exclamdown (U+00A1): L<<209.0,314.0>--<174.0,41.0>> -> L<<174.0,41.0>--<127.0,-220.0>> and exclamdown (U+00A1): L<<27.0,-220.0>--<74.0,41.0>> -> L<<74.0,41.0>--<135.0,314.0>> [code: found-colinear-vectors]

[11] ABeeZee-Regular.ttf
💔 ERROR: Check for font-v versioning.
--- Rationale ---
The git sha1 tagging and dev/release features of Source Foundry `font-v` tool
are awesome and we would love to consider upstreaming the approach into fontmake
someday. For now we only emit a WARN if a given font does not yet follow the
experimental versioning style, but at some point we may start enforcing it.
  • 💔 ERROR Failed with ImportError: Failed to initialize: Cmd('git') failed due to: exit code(1)
    cmdline: git version
    stderr: 'xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun'
🔥 FAIL: Check `Google Fonts Latin Core` glyph coverage.
--- Rationale ---
Google Fonts expects that fonts in its collection support at least the minimal
set of characters defined in the `GF-latin-core` glyph-set.
  • 🔥 FAIL Missing required codepoints:

    • 0x02BB (MODIFIER LETTER TURNED COMMA)

    • 0x02BC (MODIFIER LETTER APOSTROPHE)

    • 0x2002 (EN SPACE)

    • 0x2009 (THIN SPACE)

    • 0x200B (ZERO WIDTH SPACE)

    • 0x2032 (PRIME)

    • 0x2033 (DOUBLE PRIME)

    • 0x2122 (TRADE MARK SIGN)

    • 0x2191 (UPWARDS ARROW)

    • 0x2193 (DOWNWARDS ARROW)

    • 0xFEFF (ZERO WIDTH NO-BREAK SPACE)

    • And 0xFFFD (REPLACEMENT CHARACTER)
      [code: missing-codepoints]

🔥 FAIL: Check name table: FONT_FAMILY_NAME entries.
--- Rationale ---
Checks that the family name infered from the font filename matches the string at
nameID 1 (NAMEID_FONT_FAMILY_NAME) if it conforms to RIBBI and otherwise checks
that nameID 1 is the family name + the style name.
  • 🔥 FAIL Entry [FONT_FAMILY_NAME(1):WINDOWS(3)] on the "name" table: Expected "A Bee Zee" but got "ABeeZee". [code: mismatch]
🔥 FAIL: Check name table: FULL_FONT_NAME entries.
--- Rationale ---
Requirements for the FULL_FONT_NAME entries in the 'name' table.
  • 🔥 FAIL [FULL_FONT_NAME(4):WINDOWS(3)]
    Expected: "A Bee Zee Regular"
    But got: "ABeeZee Regular" [code: bad-entry]
WARN: Checking OS/2 achVendID.
--- Rationale ---
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.
  • WARN OS/2 VendorID value 'NONE' is not yet recognized. 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: unknown]
WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table.
--- Rationale ---
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
--- Rationale ---
Glyphs are either accessible directly through Unicode codepoints or through
substitution rules. 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:
    • foundryicon
      [code: unreachable-glyphs]
WARN: Check if each glyph has the recommended amount of contours.
--- Rationale ---
Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only be
constructured in a handful of ways. This means a glyph's contour count will only
differ slightly amongst different fonts, e.g a 'g' could either be 2 or 3
contours, depending on whether its double story or single story.
However, a quotedbl should have 2 contours, unless the font belongs to a display
family.
This check currently does not cover variable fonts because there's plenty of
alternative ways of constructing glyphs with multiple outlines for each feature
in a VarFont. The expected contour count data for this check is currently
optimized for the typical construction of glyphs in static fonts.
  • WARN This font has a 'Soft Hyphen' character (codepoint 0x00AD) which is supposed to be zero-width and invisible, and is used to mark a hyphenation possibility within a word in the absence of or overriding dictionary hyphenation. It is mostly an obsolete mechanism now, and the character is only included in fonts for legacy codepage coverage. [code: softhyphen]
  • WARN This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

The following glyphs do not have the recommended number of contours:

- Glyph name: uni00AD	Contours detected: 1	Expected: 0
- Glyph name: uni2215	Contours detected: 0	Expected: 1
- Glyph name: uni00AD	Contours detected: 1	Expected: 0 
- And Glyph name: uni2215	Contours detected: 0	Expected: 1

[code: contour-count]

WARN: Are there any misaligned on-curve points?
--- Rationale ---
This check heuristically looks for on-curve points which are close to, but do
not sit on, significant boundary coordinates. For example, a point which has a
Y-coordinate of 1 or -1 might be a misplaced baseline point. As well as the
baseline, here we also check for points near the x-height (but only for lower
case Latin letters), cap-height, ascender and descender Y coordinates.
Not all such misaligned curve points are a mistake, and sometimes the design may
call for points in locations near the boundaries. As this check is liable to
generate significant numbers of false positives, it will pass if there are more
than 100 reported misalignments.
  • WARN The following glyphs have on-curve points which have potentially incorrect y coordinates:
    • percent (U+0025): X=199.0,Y=-2.0 (should be at baseline 0?)
    • percent (U+0025): X=696.0,Y=702.0 (should be at cap-height 700?)
    • five (U+0035): X=165.0,Y=1.5 (should be at baseline 0?)
    • six (U+0036): X=429.0,Y=702.0 (should be at cap-height 700?)
    • six (U+0036): X=448.5,Y=701.5 (should be at cap-height 700?)
    • B (U+0042): X=90.0,Y=698.0 (should be at cap-height 700?)
    • B (U+0042): X=90.0,Y=2.0 (should be at baseline 0?)
    • C (U+0043): X=469.5,Y=1.5 (should be at baseline 0?)
    • D (U+0044): X=90.0,Y=698.0 (should be at cap-height 700?)
    • D (U+0044): X=90.0,Y=2.0 (should be at baseline 0?) and 55 more.

Use -F or --full-lists to disable shortening of long lists. [code: found-misalignments]

WARN: Are any segments inordinately short?
--- Rationale ---
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.
  • WARN The following glyphs have segments which seem very short:
    • at (U+0040) contains a short segment B<<705.0,148.0>-<702.0,126.0>-<702.0,113.0>> [code: found-short-segments]
WARN: Do any segments have colinear vectors?
--- Rationale ---
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.
  • WARN The following glyphs have colinear vectors:
    • exclam (U+0021): L<<119.0,207.0>--<106.0,480.0>> -> L<<106.0,480.0>--<106.0,729.0>>
    • exclam (U+0021): L<<206.0,729.0>--<206.0,480.0>> -> L<<206.0,480.0>--<193.0,207.0>>
    • exclamdown (U+00A1): L<<105.0,-220.0>--<105.0,41.0>> -> L<<105.0,41.0>--<118.0,314.0>> and exclamdown (U+00A1): L<<192.0,314.0>--<205.0,41.0>> -> L<<205.0,41.0>--<205.0,-220.0>> [code: found-colinear-vectors]

Summary

💔 ERROR 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
2 6 14 222 13 171 0
0% 1% 3% 52% 3% 40% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG

@RosaWagner
Copy link
Contributor Author

I opened an issue to see with Felipe if the glyphs coverage is a mistake or…
fonttools/fontbakery#3583
I also forgot to report an error:
fonttools/fontbakery#3582

Also, I added ABeeZee to the camelcase allow-list in that PR, so I don't know why there is still the fail. I'll check the font source before opening an issue.

@RosaWagner RosaWagner removed the -- Needs Upstream Resolution Upstream fix required before moving forward label Feb 2, 2022
@emmamarichal emmamarichal linked a pull request Feb 2, 2022 that will close this issue
@RosaWagner RosaWagner moved this from Todo to In Dev / PR Merged in Google Fonts Mar 9, 2023
@RosaWagner RosaWagner moved this from In Dev / PR Merged to Live in Google Fonts Jun 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-- Has RFN has Reserved Font Name in OFL.txt I Font Upgrade
Projects
Status: Live
Development

Successfully merging a pull request may close this issue.

2 participants