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

IBM Plex Sans Thai Looped: Version 1.1 added #3558

Merged
merged 2 commits into from
Jul 1, 2021

Conversation

yanone
Copy link
Collaborator

@yanone yanone commented Jun 18, 2021

7690c08: [gftools-packager] IBM Plex Sans Thai Looped: Version 1.1 added

4a48ff0: [gftools-packager] ofl/ibmplexsansthailooped remove METADATA "source". #2587

@yanone yanone linked an issue Jun 18, 2021 that may be closed by this pull request
@gf-bot
Copy link

gf-bot commented Jun 18, 2021

Fontbakery report

Fontbakery version: 0.7.37

[3] Family checks
🔥 FAIL: Fonts have consistent underline thickness?
--- Rationale ---
Dave C Lemon (Adobe Type Team) recommends setting the underline thickness to be
consistent across the family.
If thicknesses are not family consistent, words set on the same line which have
different styles look strange.
See also:
https://twitter.com/typenerd1/status/690361887926697986
  • 🔥 FAIL Thickness of the underline is not the same across this family. In order to fix this, please make sure that the underlineThickness value is the same in the 'post' table of all of this family font files.
    Detected underlineThickness values are:
    ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Bold.ttf: 100
    ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-ExtraLight.ttf: 26
    ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Light.ttf: 43
    ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Medium.ttf: 77
    ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Regular.ttf: 60
    ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-SemiBold.ttf: 88
    ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Thin.ttf: 16
    [code: inconsistent-underline-thickness]
WARN: Is the command `ftxvalidator` (Apple Font Tool Suite) available?
--- Rationale ---
There's no reasonable (and legal) way to run the command `ftxvalidator` of the
Apple Font Tool Suite on a non-macOS machine. I.e. on GNU+Linux or Windows etc.
If Font Bakery is not running on an OSX machine, the machine running Font Bakery
could access `ftxvalidator` on OSX, e.g. via ssh or a remote procedure call
(rpc).
There's an ssh example implementation at:
https://github.com/googlefonts/fontbakery/blob/main/prebuilt/workarounds
/ftxvalidator/ssh-implementation/ftxvalidator
  • WARN Could not find ftxvalidator. [code: ftxvalidator-available]
WARN: Make sure all font files have the same version value.
  • com.google.fonts/check/family/equal_font_versions

  • WARN Version info differs among font files of the same font project.
    These were the version values found:

  • ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Bold.ttf: 1.0009918212890625

  • ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-ExtraLight.ttf: 1.0

  • ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Light.ttf: 1.0009918212890625

  • ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Medium.ttf: 1.0009918212890625

  • ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Regular.ttf: 1.0009918212890625

  • ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-SemiBold.ttf: 1.0009918212890625

  • ofl/ibmplexsansthailooped/IBMPlexSansThaiLooped-Thin.ttf: 1.0009918212890625
    [code: mismatch]


[19] IBMPlexSansThaiLooped-Bold.ttf
🔥 FAIL: Does DESCRIPTION file contain a upstream Git repo URL?
--- Rationale ---
The contents of the DESCRIPTION.en-us.html file are displayed on the Google
Fonts website in the about section of each font family specimen page.
Since all of the Google Fonts collection is composed of libre-licensed fonts,
this check enforces a policy that there must be a hypertext link in that page
directing users to the repository where the font project files are made
available.
Such hosting is typically done on sites like Github, Gitlab, GNU Savannah or any
other git-based version control service.
  • 🔥 FAIL Please host your font project on a public Git repo (such as GitHub or GitLab) and place a link in the DESCRIPTION.en_us.html file. [code: lacks-git-url]
🔥 FAIL: Substitute copyright, registered and trademark symbols in name table entries.
🔥 FAIL: Check license file has good copyright string.
--- Rationale ---
An OFL.txt file's first line should be the font copyright e.g:
"Copyright 2019 The Montserrat Project Authors
(https://github.com/julietaula/montserrat)"
  • 🔥 FAIL First line in license file does not match expected format: "copyright © 2017 ibm corp. with reserved font name "plex""
🔥 FAIL: Copyright notices match canonical pattern in METADATA.pb
--- Rationale ---
The expected pattern for the copyright string adheres to the following rules:
* It must say "Copyright" followed by a 4 digit year (optionally followed by a
hyphen and another 4 digit year)
* Then it must say "The <familyname> Project Authors"
* And within parentheses, a URL for a git repository must be provided
* The check is case insensitive and does not validate whether the familyname is
correct, even though we'd expect it is (and we may soon update the check to
validate that aspect as well!)
Here is an example of a valid copyright string:
"Copyright 2017 The Archivo Black Project Authors
(https://github.com/Omnibus-Type/ArchivoBlack)"
  • 🔥 FAIL METADATA.pb: Copyright notices should match a pattern similar to:
    "Copyright 2020 The Familyname Project Authors (git url)"
    But instead we have got:
    "copyright 2019 ibm corp. all rights reserved." [code: bad-notice-format]
🔥 FAIL: Copyright notices match canonical pattern in fonts
  • com.google.fonts/check/font_copyright

  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright 2019 IBM Corp. All rights reserved." [code: bad-notice-format]

🔥 FAIL: Font enables smart dropout control in "prep" table instructions?
--- Rationale ---
This setup is meant to ensure consistent rendering quality for fonts across all
devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF    PUSHW 0x01FF
85          SCANCTRL (unconditinally turn on
                      dropout control mode)
B0 04       PUSHB 0x04
8D          SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
        that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
        that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
        (either vertical or horizontal) is intersected
        by both an on-Transition contour and an off-Transition
        contour and neither of the pixels was already turned on
        by rules 1 and 2, turn on the pixel which is closer to
        the midpoint between the on-Transition contour and
        off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet), please
refer to the TrueType Instruction Set documentation.
  • 🔥 FAIL The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the gftools fix-nonhinting script. [code: lacks-smart-dropout]
🔥 FAIL: METADATA.pb: Designer is listed with the correct name on the Google Fonts catalog of designers?
🔥 FAIL: Checking font version fields (head and name table).
WARN: DESCRIPTION.en_us.html should end in a linebreak.
--- Rationale ---
Some older text-handling tools sometimes misbehave if the last line of data in a
text file is not terminated with a newline character (also known as '\n').
We know that this is a very small detail, but for the sake of keeping all
DESCRIPTION.en_us.html files uniformly formatted throughout the GFonts
collection, we chose to adopt the practice of placing this final linebreak char
on them.
  • WARN The last characther on DESCRIPTION.en_us.html is not a line-break. Please add it. [code: missing-eof-linebreak]
WARN: Check copyright namerecords match license file.
--- Rationale ---
A known licensing description must be provided in the NameID 14 (LICENSE
DESCRIPTION) entries of the name table.
The source of truth for this check (to determine which license is in use) is a
file placed side-by-side to your font project including the licensing terms.
Depending on the chosen license, one of the following string snippets is
expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name
table:
- "This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is available with a FAQ at: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13] [code: http-in-description]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: License URL matches License text on name table?
--- Rationale ---
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: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider 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 Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=14] [code: http-in-license-info]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
--- Rationale ---
Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem
had no grid fitting but did have antialiasing. From 9-16 ppem, just grid
fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled
on. The use of accelerated graphics cards and higher resolution screens make
this approach obsolete. Microsoft's DirectWrite pushed this even further with
much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font
sizes.
  • WARN The gasp table has a range of 8 that may be unneccessary. [code: non-ffff-range]
  • WARN The gasp table has a range of 16 that may be unneccessary. [code: non-ffff-range]
WARN: METADATA.pb: Fontfamily is listed on Google Fonts API?
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 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: uni0E12 Contours detected: 4 Expected: 1 or 3
Glyph name: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2
Glyph name: uni20A8 Contours detected: 2 Expected: 3
Glyph name: fi Contours detected: 2 Expected: 3
Glyph name: uni0E12 Contours detected: 4 Expected: 1 or 3
Glyph name: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2 [code: contour-count]

WARN: Are there caret positions declared for every ligature?
--- Rationale ---
All ligatures in a font must have corresponding caret (text cursor) positions
defined in the GDEF table, otherwhise, users may experience issues with caret
rendering.
If using GlyphsApp or UFOs, ligature carets can be defined as anchors with names
starting with 'caret_'. These can be compiled with fontmake as of version
v2.4.0.
  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences?
--- Rationale ---
Fonts with ligatures should have kerning on the corresponding non-ligated
sequences for text where ligatures aren't used (eg
https://github.com/impallari/Raleway/issues/14).
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + i
    • uni0E26 + uni0E45
    • uni0E24 + uni0E45

    [code: lacks-kern-info]

WARN: Combined length of family and style must not exceed 27 characters.
--- Rationale ---
According to a GlyphsApp tutorial [1], in order to make sure all versions of
Windows recognize it as a valid font file, we must make sure that the
concatenated length of the familyname (NameID.FONT_FAMILY_NAME) and style
(NameID.FONT_SUBFAMILY_NAME) strings in the name table do not exceed 20
characters.
After discussing the problem in more detail at `FontBakery issue #2179 [2] we
decided that allowing up to 27 chars would still be on the safe side, though.
[1] https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances
[2] https://github.com/googlefonts/fontbakery/issues/2179
  • WARN The combined length of family and style exceeds 27 chars in the following 'WINDOWS' entries:
    FONT_FAMILY_NAME = 'IBM Plex Sans Thai Looped' / SUBFAMILY_NAME = 'Bold'

Please take a look at the conversation at fonttools/fontbakery#2179 in order to understand the reasoning behind these name table records max-length criteria. [code: too-long]

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:
    • g: X=362.0,Y=527.0 (should be at x-height 525?)
    • g.alt01: X=245.0,Y=2.0 (should be at baseline 0?)
    • s: X=162.5,Y=524.5 (should be at x-height 525?)
    • s: X=339.5,Y=1.0 (should be at baseline 0?)
    • two: X=202.0,Y=696.0 (should be at cap-height 698?)
    • three: X=381.5,Y=697.0 (should be at cap-height 698?)
    • three: X=180.0,Y=-1.0 (should be at baseline 0?)
    • five: X=205.0,Y=-1.0 (should be at baseline 0?)
    • eight: X=197.5,Y=696.5 (should be at cap-height 698?)
    • eight: X=402.5,Y=696.5 (should be at cap-height 698?) and 42 more. [code: found-misalignments]
WARN: Do outlines contain any semi-vertical or semi-horizontal lines?
--- Rationale ---
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.
  • WARN The following glyphs have semi-vertical/semi-horizontal lines:
  • uni0E2C.short: L<<288.0,255.0>--<287.0,103.0>>
  • uni0E2C.short: L<<559.0,103.0>--<558.0,255.0>>
  • uni0E2C: L<<288.0,268.0>--<287.0,116.0>> and uni0E2C: L<<559.0,116.0>--<558.0,268.0>> [code: found-semi-vertical]

[18] IBMPlexSansThaiLooped-ExtraLight.ttf
🔥 FAIL: Does DESCRIPTION file contain a upstream Git repo URL?
--- Rationale ---
The contents of the DESCRIPTION.en-us.html file are displayed on the Google
Fonts website in the about section of each font family specimen page.
Since all of the Google Fonts collection is composed of libre-licensed fonts,
this check enforces a policy that there must be a hypertext link in that page
directing users to the repository where the font project files are made
available.
Such hosting is typically done on sites like Github, Gitlab, GNU Savannah or any
other git-based version control service.
  • 🔥 FAIL Please host your font project on a public Git repo (such as GitHub or GitLab) and place a link in the DESCRIPTION.en_us.html file. [code: lacks-git-url]
🔥 FAIL: Substitute copyright, registered and trademark symbols in name table entries.
🔥 FAIL: Check license file has good copyright string.
--- Rationale ---
An OFL.txt file's first line should be the font copyright e.g:
"Copyright 2019 The Montserrat Project Authors
(https://github.com/julietaula/montserrat)"
  • 🔥 FAIL First line in license file does not match expected format: "copyright © 2017 ibm corp. with reserved font name "plex""
🔥 FAIL: Copyright notices match canonical pattern in METADATA.pb
--- Rationale ---
The expected pattern for the copyright string adheres to the following rules:
* It must say "Copyright" followed by a 4 digit year (optionally followed by a
hyphen and another 4 digit year)
* Then it must say "The <familyname> Project Authors"
* And within parentheses, a URL for a git repository must be provided
* The check is case insensitive and does not validate whether the familyname is
correct, even though we'd expect it is (and we may soon update the check to
validate that aspect as well!)
Here is an example of a valid copyright string:
"Copyright 2017 The Archivo Black Project Authors
(https://github.com/Omnibus-Type/ArchivoBlack)"
  • 🔥 FAIL METADATA.pb: Copyright notices should match a pattern similar to:
    "Copyright 2020 The Familyname Project Authors (git url)"
    But instead we have got:
    "copyright 2019 ibm corp. all rights reserved." [code: bad-notice-format]
🔥 FAIL: Copyright notices match canonical pattern in fonts
  • com.google.fonts/check/font_copyright

  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright 2019 IBM Corp. All rights reserved." [code: bad-notice-format]

🔥 FAIL: Font enables smart dropout control in "prep" table instructions?
--- Rationale ---
This setup is meant to ensure consistent rendering quality for fonts across all
devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF    PUSHW 0x01FF
85          SCANCTRL (unconditinally turn on
                      dropout control mode)
B0 04       PUSHB 0x04
8D          SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
        that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
        that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
        (either vertical or horizontal) is intersected
        by both an on-Transition contour and an off-Transition
        contour and neither of the pixels was already turned on
        by rules 1 and 2, turn on the pixel which is closer to
        the midpoint between the on-Transition contour and
        off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet), please
refer to the TrueType Instruction Set documentation.
  • 🔥 FAIL The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the gftools fix-nonhinting script. [code: lacks-smart-dropout]
🔥 FAIL: METADATA.pb: Designer is listed with the correct name on the Google Fonts catalog of designers?
WARN: DESCRIPTION.en_us.html should end in a linebreak.
--- Rationale ---
Some older text-handling tools sometimes misbehave if the last line of data in a
text file is not terminated with a newline character (also known as '\n').
We know that this is a very small detail, but for the sake of keeping all
DESCRIPTION.en_us.html files uniformly formatted throughout the GFonts
collection, we chose to adopt the practice of placing this final linebreak char
on them.
  • WARN The last characther on DESCRIPTION.en_us.html is not a line-break. Please add it. [code: missing-eof-linebreak]
WARN: Check copyright namerecords match license file.
--- Rationale ---
A known licensing description must be provided in the NameID 14 (LICENSE
DESCRIPTION) entries of the name table.
The source of truth for this check (to determine which license is in use) is a
file placed side-by-side to your font project including the licensing terms.
Depending on the chosen license, one of the following string snippets is
expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name
table:
- "This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is available with a FAQ at: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13] [code: http-in-description]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: License URL matches License text on name table?
--- Rationale ---
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: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider 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 Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=14] [code: http-in-license-info]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
--- Rationale ---
Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem
had no grid fitting but did have antialiasing. From 9-16 ppem, just grid
fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled
on. The use of accelerated graphics cards and higher resolution screens make
this approach obsolete. Microsoft's DirectWrite pushed this even further with
much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font
sizes.
  • WARN The gasp table has a range of 8 that may be unneccessary. [code: non-ffff-range]
  • WARN The gasp table has a range of 16 that may be unneccessary. [code: non-ffff-range]
WARN: METADATA.pb: Fontfamily is listed on Google Fonts API?
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 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: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2
Glyph name: uni20A8 Contours detected: 2 Expected: 3
Glyph name: fi Contours detected: 2 Expected: 3
Glyph name: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2 [code: contour-count]

WARN: Are there caret positions declared for every ligature?
--- Rationale ---
All ligatures in a font must have corresponding caret (text cursor) positions
defined in the GDEF table, otherwhise, users may experience issues with caret
rendering.
If using GlyphsApp or UFOs, ligature carets can be defined as anchors with names
starting with 'caret_'. These can be compiled with fontmake as of version
v2.4.0.
  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences?
--- Rationale ---
Fonts with ligatures should have kerning on the corresponding non-ligated
sequences for text where ligatures aren't used (eg
https://github.com/impallari/Raleway/issues/14).
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + i
    • uni0E26 + uni0E45
    • uni0E24 + uni0E45

    [code: lacks-kern-info]

WARN: Combined length of family and style must not exceed 27 characters.
--- Rationale ---
According to a GlyphsApp tutorial [1], in order to make sure all versions of
Windows recognize it as a valid font file, we must make sure that the
concatenated length of the familyname (NameID.FONT_FAMILY_NAME) and style
(NameID.FONT_SUBFAMILY_NAME) strings in the name table do not exceed 20
characters.
After discussing the problem in more detail at `FontBakery issue #2179 [2] we
decided that allowing up to 27 chars would still be on the safe side, though.
[1] https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances
[2] https://github.com/googlefonts/fontbakery/issues/2179
  • WARN The combined length of family and style exceeds 27 chars in the following 'WINDOWS' entries:
    FONT_FAMILY_NAME = 'IBM Plex Sans Thai Looped ExtraLight' / SUBFAMILY_NAME = 'Regular'

Please take a look at the conversation at fonttools/fontbakery#2179 in order to understand the reasoning behind these name table records max-length criteria. [code: too-long]

WARN: Do outlines contain any jaggy segments?
--- Rationale ---
This check heuristically detects outline segments which form a particularly
small angle, indicative of an outline error. This may cause false positives in
cases such as extreme ink traps, so should be regarded as advisory and backed up
by manual inspection.
  • WARN The following glyphs have jaggy segments:
    • uni0E29: B<<449.0,311.0>-<449.0,277.0>-<424.0,258.0>>/B<<424.0,258.0>-<432.0,262.0>-<443.0,262.0>> = 10.66978280449666
    • uni0E310E47: B<<-140.0,891.0>-<-119.0,891.0>-<-108.0,899.0>>/B<<-108.0,899.0>-<-114.0,896.0>-<-122.0,896.0>> = 9.462322208025613
    • uni0E47.narrow: B<<-105.0,688.0>-<-85.0,688.0>-<-74.0,695.0>>/B<<-74.0,695.0>-<-80.0,693.0>-<-87.0,693.0>> = 14.036243467926457
    • uni0E47.small: B<<-105.0,876.0>-<-84.0,876.0>-<-73.0,884.0>>/B<<-73.0,884.0>-<-79.0,881.0>-<-87.0,881.0>> = 9.462322208025613 and uni0E47: B<<-105.0,688.0>-<-85.0,688.0>-<-74.0,695.0>>/B<<-74.0,695.0>-<-80.0,693.0>-<-87.0,693.0>> = 14.036243467926457 [code: found-jaggy-segments]
WARN: Do outlines contain any semi-vertical or semi-horizontal lines?
--- Rationale ---
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.
  • WARN The following glyphs have semi-vertical/semi-horizontal lines:
  • uni0E0E.short: L<<534.0,-167.0>--<533.0,-45.0>>
  • uni0E0E: L<<534.0,-241.0>--<533.0,-119.0>>
  • uni0E0F.short: L<<534.0,-170.0>--<533.0,-45.0>>
  • uni0E0F: L<<534.0,-244.0>--<533.0,-119.0>>
  • uni2638: L<<143.0,351.0>--<330.0,350.0>>
  • uni2638: L<<330.0,322.0>--<143.0,321.0>>
  • uni2638: L<<423.0,46.0>--<424.0,230.0>>
  • uni2638: L<<424.0,442.0>--<423.0,626.0>>
  • uni2638: L<<452.0,230.0>--<453.0,46.0>>
  • uni2638: L<<453.0,626.0>--<452.0,442.0>>
  • uni2638: L<<546.0,350.0>--<733.0,351.0>> and uni2638: L<<733.0,321.0>--<546.0,322.0>> [code: found-semi-vertical]

[18] IBMPlexSansThaiLooped-Light.ttf
🔥 FAIL: Does DESCRIPTION file contain a upstream Git repo URL?
--- Rationale ---
The contents of the DESCRIPTION.en-us.html file are displayed on the Google
Fonts website in the about section of each font family specimen page.
Since all of the Google Fonts collection is composed of libre-licensed fonts,
this check enforces a policy that there must be a hypertext link in that page
directing users to the repository where the font project files are made
available.
Such hosting is typically done on sites like Github, Gitlab, GNU Savannah or any
other git-based version control service.
  • 🔥 FAIL Please host your font project on a public Git repo (such as GitHub or GitLab) and place a link in the DESCRIPTION.en_us.html file. [code: lacks-git-url]
🔥 FAIL: Substitute copyright, registered and trademark symbols in name table entries.
🔥 FAIL: Check license file has good copyright string.
--- Rationale ---
An OFL.txt file's first line should be the font copyright e.g:
"Copyright 2019 The Montserrat Project Authors
(https://github.com/julietaula/montserrat)"
  • 🔥 FAIL First line in license file does not match expected format: "copyright © 2017 ibm corp. with reserved font name "plex""
🔥 FAIL: Copyright notices match canonical pattern in METADATA.pb
--- Rationale ---
The expected pattern for the copyright string adheres to the following rules:
* It must say "Copyright" followed by a 4 digit year (optionally followed by a
hyphen and another 4 digit year)
* Then it must say "The <familyname> Project Authors"
* And within parentheses, a URL for a git repository must be provided
* The check is case insensitive and does not validate whether the familyname is
correct, even though we'd expect it is (and we may soon update the check to
validate that aspect as well!)
Here is an example of a valid copyright string:
"Copyright 2017 The Archivo Black Project Authors
(https://github.com/Omnibus-Type/ArchivoBlack)"
  • 🔥 FAIL METADATA.pb: Copyright notices should match a pattern similar to:
    "Copyright 2020 The Familyname Project Authors (git url)"
    But instead we have got:
    "copyright 2019 ibm corp. all rights reserved." [code: bad-notice-format]
🔥 FAIL: Copyright notices match canonical pattern in fonts
  • com.google.fonts/check/font_copyright

  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright 2019 IBM Corp. All rights reserved." [code: bad-notice-format]

🔥 FAIL: Font enables smart dropout control in "prep" table instructions?
--- Rationale ---
This setup is meant to ensure consistent rendering quality for fonts across all
devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF    PUSHW 0x01FF
85          SCANCTRL (unconditinally turn on
                      dropout control mode)
B0 04       PUSHB 0x04
8D          SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
        that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
        that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
        (either vertical or horizontal) is intersected
        by both an on-Transition contour and an off-Transition
        contour and neither of the pixels was already turned on
        by rules 1 and 2, turn on the pixel which is closer to
        the midpoint between the on-Transition contour and
        off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet), please
refer to the TrueType Instruction Set documentation.
  • 🔥 FAIL The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the gftools fix-nonhinting script. [code: lacks-smart-dropout]
🔥 FAIL: METADATA.pb: Designer is listed with the correct name on the Google Fonts catalog of designers?
🔥 FAIL: Checking font version fields (head and name table).
WARN: DESCRIPTION.en_us.html should end in a linebreak.
--- Rationale ---
Some older text-handling tools sometimes misbehave if the last line of data in a
text file is not terminated with a newline character (also known as '\n').
We know that this is a very small detail, but for the sake of keeping all
DESCRIPTION.en_us.html files uniformly formatted throughout the GFonts
collection, we chose to adopt the practice of placing this final linebreak char
on them.
  • WARN The last characther on DESCRIPTION.en_us.html is not a line-break. Please add it. [code: missing-eof-linebreak]
WARN: Check copyright namerecords match license file.
--- Rationale ---
A known licensing description must be provided in the NameID 14 (LICENSE
DESCRIPTION) entries of the name table.
The source of truth for this check (to determine which license is in use) is a
file placed side-by-side to your font project including the licensing terms.
Depending on the chosen license, one of the following string snippets is
expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name
table:
- "This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is available with a FAQ at: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13] [code: http-in-description]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: License URL matches License text on name table?
--- Rationale ---
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: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider 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 Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=14] [code: http-in-license-info]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
--- Rationale ---
Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem
had no grid fitting but did have antialiasing. From 9-16 ppem, just grid
fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled
on. The use of accelerated graphics cards and higher resolution screens make
this approach obsolete. Microsoft's DirectWrite pushed this even further with
much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font
sizes.
  • WARN The gasp table has a range of 8 that may be unneccessary. [code: non-ffff-range]
  • WARN The gasp table has a range of 16 that may be unneccessary. [code: non-ffff-range]
WARN: METADATA.pb: Fontfamily is listed on Google Fonts API?
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 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: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2
Glyph name: uni20A8 Contours detected: 2 Expected: 3
Glyph name: fi Contours detected: 2 Expected: 3
Glyph name: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2 [code: contour-count]

WARN: Are there caret positions declared for every ligature?
--- Rationale ---
All ligatures in a font must have corresponding caret (text cursor) positions
defined in the GDEF table, otherwhise, users may experience issues with caret
rendering.
If using GlyphsApp or UFOs, ligature carets can be defined as anchors with names
starting with 'caret_'. These can be compiled with fontmake as of version
v2.4.0.
  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences?
--- Rationale ---
Fonts with ligatures should have kerning on the corresponding non-ligated
sequences for text where ligatures aren't used (eg
https://github.com/impallari/Raleway/issues/14).
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + i
    • uni0E26 + uni0E45
    • uni0E24 + uni0E45

    [code: lacks-kern-info]

WARN: Combined length of family and style must not exceed 27 characters.
--- Rationale ---
According to a GlyphsApp tutorial [1], in order to make sure all versions of
Windows recognize it as a valid font file, we must make sure that the
concatenated length of the familyname (NameID.FONT_FAMILY_NAME) and style
(NameID.FONT_SUBFAMILY_NAME) strings in the name table do not exceed 20
characters.
After discussing the problem in more detail at `FontBakery issue #2179 [2] we
decided that allowing up to 27 chars would still be on the safe side, though.
[1] https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances
[2] https://github.com/googlefonts/fontbakery/issues/2179
  • WARN The combined length of family and style exceeds 27 chars in the following 'WINDOWS' entries:
    FONT_FAMILY_NAME = 'IBM Plex Sans Thai Looped Light' / SUBFAMILY_NAME = 'Regular'

Please take a look at the conversation at fonttools/fontbakery#2179 in order to understand the reasoning behind these name table records max-length criteria. [code: too-long]

WARN: Do outlines contain any jaggy segments?
--- Rationale ---
This check heuristically detects outline segments which form a particularly
small angle, indicative of an outline error. This may cause false positives in
cases such as extreme ink traps, so should be regarded as advisory and backed up
by manual inspection.
  • WARN The following glyphs have jaggy segments:
    • uni0E29: B<<455.0,312.0>-<455.0,283.0>-<436.0,264.0>>/B<<436.0,264.0>-<449.0,272.0>-<465.0,272.0>> = 13.39249775375107 [code: found-jaggy-segments]

[19] IBMPlexSansThaiLooped-Medium.ttf
🔥 FAIL: Does DESCRIPTION file contain a upstream Git repo URL?
--- Rationale ---
The contents of the DESCRIPTION.en-us.html file are displayed on the Google
Fonts website in the about section of each font family specimen page.
Since all of the Google Fonts collection is composed of libre-licensed fonts,
this check enforces a policy that there must be a hypertext link in that page
directing users to the repository where the font project files are made
available.
Such hosting is typically done on sites like Github, Gitlab, GNU Savannah or any
other git-based version control service.
  • 🔥 FAIL Please host your font project on a public Git repo (such as GitHub or GitLab) and place a link in the DESCRIPTION.en_us.html file. [code: lacks-git-url]
🔥 FAIL: Substitute copyright, registered and trademark symbols in name table entries.
🔥 FAIL: Check license file has good copyright string.
--- Rationale ---
An OFL.txt file's first line should be the font copyright e.g:
"Copyright 2019 The Montserrat Project Authors
(https://github.com/julietaula/montserrat)"
  • 🔥 FAIL First line in license file does not match expected format: "copyright © 2017 ibm corp. with reserved font name "plex""
🔥 FAIL: Copyright notices match canonical pattern in METADATA.pb
--- Rationale ---
The expected pattern for the copyright string adheres to the following rules:
* It must say "Copyright" followed by a 4 digit year (optionally followed by a
hyphen and another 4 digit year)
* Then it must say "The <familyname> Project Authors"
* And within parentheses, a URL for a git repository must be provided
* The check is case insensitive and does not validate whether the familyname is
correct, even though we'd expect it is (and we may soon update the check to
validate that aspect as well!)
Here is an example of a valid copyright string:
"Copyright 2017 The Archivo Black Project Authors
(https://github.com/Omnibus-Type/ArchivoBlack)"
  • 🔥 FAIL METADATA.pb: Copyright notices should match a pattern similar to:
    "Copyright 2020 The Familyname Project Authors (git url)"
    But instead we have got:
    "copyright 2019 ibm corp. all rights reserved." [code: bad-notice-format]
🔥 FAIL: Copyright notices match canonical pattern in fonts
  • com.google.fonts/check/font_copyright

  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright 2019 IBM Corp. All rights reserved." [code: bad-notice-format]

🔥 FAIL: Font enables smart dropout control in "prep" table instructions?
--- Rationale ---
This setup is meant to ensure consistent rendering quality for fonts across all
devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF    PUSHW 0x01FF
85          SCANCTRL (unconditinally turn on
                      dropout control mode)
B0 04       PUSHB 0x04
8D          SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
        that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
        that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
        (either vertical or horizontal) is intersected
        by both an on-Transition contour and an off-Transition
        contour and neither of the pixels was already turned on
        by rules 1 and 2, turn on the pixel which is closer to
        the midpoint between the on-Transition contour and
        off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet), please
refer to the TrueType Instruction Set documentation.
  • 🔥 FAIL The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the gftools fix-nonhinting script. [code: lacks-smart-dropout]
🔥 FAIL: METADATA.pb: Designer is listed with the correct name on the Google Fonts catalog of designers?
🔥 FAIL: Checking font version fields (head and name table).
WARN: DESCRIPTION.en_us.html should end in a linebreak.
--- Rationale ---
Some older text-handling tools sometimes misbehave if the last line of data in a
text file is not terminated with a newline character (also known as '\n').
We know that this is a very small detail, but for the sake of keeping all
DESCRIPTION.en_us.html files uniformly formatted throughout the GFonts
collection, we chose to adopt the practice of placing this final linebreak char
on them.
  • WARN The last characther on DESCRIPTION.en_us.html is not a line-break. Please add it. [code: missing-eof-linebreak]
WARN: Check copyright namerecords match license file.
--- Rationale ---
A known licensing description must be provided in the NameID 14 (LICENSE
DESCRIPTION) entries of the name table.
The source of truth for this check (to determine which license is in use) is a
file placed side-by-side to your font project including the licensing terms.
Depending on the chosen license, one of the following string snippets is
expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name
table:
- "This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is available with a FAQ at: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13] [code: http-in-description]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: License URL matches License text on name table?
--- Rationale ---
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: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider 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 Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=14] [code: http-in-license-info]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
--- Rationale ---
Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem
had no grid fitting but did have antialiasing. From 9-16 ppem, just grid
fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled
on. The use of accelerated graphics cards and higher resolution screens make
this approach obsolete. Microsoft's DirectWrite pushed this even further with
much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font
sizes.
  • WARN The gasp table has a range of 8 that may be unneccessary. [code: non-ffff-range]
  • WARN The gasp table has a range of 16 that may be unneccessary. [code: non-ffff-range]
WARN: METADATA.pb: Fontfamily is listed on Google Fonts API?
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 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: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2
Glyph name: uni20A8 Contours detected: 2 Expected: 3
Glyph name: fi Contours detected: 2 Expected: 3
Glyph name: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2 [code: contour-count]

WARN: Are there caret positions declared for every ligature?
--- Rationale ---
All ligatures in a font must have corresponding caret (text cursor) positions
defined in the GDEF table, otherwhise, users may experience issues with caret
rendering.
If using GlyphsApp or UFOs, ligature carets can be defined as anchors with names
starting with 'caret_'. These can be compiled with fontmake as of version
v2.4.0.
  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences?
--- Rationale ---
Fonts with ligatures should have kerning on the corresponding non-ligated
sequences for text where ligatures aren't used (eg
https://github.com/impallari/Raleway/issues/14).
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + i
    • uni0E26 + uni0E45
    • uni0E24 + uni0E45

    [code: lacks-kern-info]

WARN: Combined length of family and style must not exceed 27 characters.
--- Rationale ---
According to a GlyphsApp tutorial [1], in order to make sure all versions of
Windows recognize it as a valid font file, we must make sure that the
concatenated length of the familyname (NameID.FONT_FAMILY_NAME) and style
(NameID.FONT_SUBFAMILY_NAME) strings in the name table do not exceed 20
characters.
After discussing the problem in more detail at `FontBakery issue #2179 [2] we
decided that allowing up to 27 chars would still be on the safe side, though.
[1] https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances
[2] https://github.com/googlefonts/fontbakery/issues/2179
  • WARN The combined length of family and style exceeds 27 chars in the following 'WINDOWS' entries:
    FONT_FAMILY_NAME = 'IBM Plex Sans Thai Looped Medium' / SUBFAMILY_NAME = 'Regular'

Please take a look at the conversation at fonttools/fontbakery#2179 in order to understand the reasoning behind these name table records max-length criteria. [code: too-long]

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:
    • g: X=337.0,Y=-2.0 (should be at baseline 0?)
    • g: X=161.0,Y=-2.0 (should be at baseline 0?)
    • g.alt02: X=337.0,Y=-2.0 (should be at baseline 0?)
    • g.alt02: X=161.0,Y=-2.0 (should be at baseline 0?)
    • s: X=165.5,Y=521.0 (should be at x-height 520?)
    • S: X=204.0,Y=696.0 (should be at cap-height 698?)
    • two: X=203.5,Y=696.0 (should be at cap-height 698?)
    • three: X=185.0,Y=-1.5 (should be at baseline 0?)
    • five: X=212.0,Y=-1.5 (should be at baseline 0?)
    • eight: X=203.0,Y=697.0 (should be at cap-height 698?) and 78 more. [code: found-misalignments]
WARN: Do outlines contain any semi-vertical or semi-horizontal lines?
--- Rationale ---
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.
  • WARN The following glyphs have semi-vertical/semi-horizontal lines:
  • uni0E0F: L<<614.0,337.0>--<613.0,-245.0>>
  • uni0E2C.short: L<<262.0,244.0>--<261.0,89.0>>
  • uni0E2C.short: L<<563.0,89.0>--<562.0,244.0>>
  • uni0E2C: L<<262.0,259.0>--<261.0,104.0>> and uni0E2C: L<<563.0,104.0>--<562.0,259.0>> [code: found-semi-vertical]

[18] IBMPlexSansThaiLooped-Regular.ttf
🔥 FAIL: Does DESCRIPTION file contain a upstream Git repo URL?
--- Rationale ---
The contents of the DESCRIPTION.en-us.html file are displayed on the Google
Fonts website in the about section of each font family specimen page.
Since all of the Google Fonts collection is composed of libre-licensed fonts,
this check enforces a policy that there must be a hypertext link in that page
directing users to the repository where the font project files are made
available.
Such hosting is typically done on sites like Github, Gitlab, GNU Savannah or any
other git-based version control service.
  • 🔥 FAIL Please host your font project on a public Git repo (such as GitHub or GitLab) and place a link in the DESCRIPTION.en_us.html file. [code: lacks-git-url]
🔥 FAIL: Substitute copyright, registered and trademark symbols in name table entries.
🔥 FAIL: Check license file has good copyright string.
--- Rationale ---
An OFL.txt file's first line should be the font copyright e.g:
"Copyright 2019 The Montserrat Project Authors
(https://github.com/julietaula/montserrat)"
  • 🔥 FAIL First line in license file does not match expected format: "copyright © 2017 ibm corp. with reserved font name "plex""
🔥 FAIL: Copyright notices match canonical pattern in METADATA.pb
--- Rationale ---
The expected pattern for the copyright string adheres to the following rules:
* It must say "Copyright" followed by a 4 digit year (optionally followed by a
hyphen and another 4 digit year)
* Then it must say "The <familyname> Project Authors"
* And within parentheses, a URL for a git repository must be provided
* The check is case insensitive and does not validate whether the familyname is
correct, even though we'd expect it is (and we may soon update the check to
validate that aspect as well!)
Here is an example of a valid copyright string:
"Copyright 2017 The Archivo Black Project Authors
(https://github.com/Omnibus-Type/ArchivoBlack)"
  • 🔥 FAIL METADATA.pb: Copyright notices should match a pattern similar to:
    "Copyright 2020 The Familyname Project Authors (git url)"
    But instead we have got:
    "copyright 2019 ibm corp. all rights reserved." [code: bad-notice-format]
🔥 FAIL: Copyright notices match canonical pattern in fonts
  • com.google.fonts/check/font_copyright

  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright 2019 IBM Corp. All rights reserved." [code: bad-notice-format]

🔥 FAIL: Font enables smart dropout control in "prep" table instructions?
--- Rationale ---
This setup is meant to ensure consistent rendering quality for fonts across all
devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF    PUSHW 0x01FF
85          SCANCTRL (unconditinally turn on
                      dropout control mode)
B0 04       PUSHB 0x04
8D          SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
        that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
        that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
        (either vertical or horizontal) is intersected
        by both an on-Transition contour and an off-Transition
        contour and neither of the pixels was already turned on
        by rules 1 and 2, turn on the pixel which is closer to
        the midpoint between the on-Transition contour and
        off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet), please
refer to the TrueType Instruction Set documentation.
  • 🔥 FAIL The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the gftools fix-nonhinting script. [code: lacks-smart-dropout]
🔥 FAIL: METADATA.pb: Designer is listed with the correct name on the Google Fonts catalog of designers?
🔥 FAIL: Checking font version fields (head and name table).
WARN: DESCRIPTION.en_us.html should end in a linebreak.
--- Rationale ---
Some older text-handling tools sometimes misbehave if the last line of data in a
text file is not terminated with a newline character (also known as '\n').
We know that this is a very small detail, but for the sake of keeping all
DESCRIPTION.en_us.html files uniformly formatted throughout the GFonts
collection, we chose to adopt the practice of placing this final linebreak char
on them.
  • WARN The last characther on DESCRIPTION.en_us.html is not a line-break. Please add it. [code: missing-eof-linebreak]
WARN: Check copyright namerecords match license file.
--- Rationale ---
A known licensing description must be provided in the NameID 14 (LICENSE
DESCRIPTION) entries of the name table.
The source of truth for this check (to determine which license is in use) is a
file placed side-by-side to your font project including the licensing terms.
Depending on the chosen license, one of the following string snippets is
expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name
table:
- "This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is available with a FAQ at: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13] [code: http-in-description]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: License URL matches License text on name table?
--- Rationale ---
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: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider 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 Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=14] [code: http-in-license-info]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
--- Rationale ---
Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem
had no grid fitting but did have antialiasing. From 9-16 ppem, just grid
fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled
on. The use of accelerated graphics cards and higher resolution screens make
this approach obsolete. Microsoft's DirectWrite pushed this even further with
much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font
sizes.
  • WARN The gasp table has a range of 8 that may be unneccessary. [code: non-ffff-range]
  • WARN The gasp table has a range of 16 that may be unneccessary. [code: non-ffff-range]
WARN: METADATA.pb: Fontfamily is listed on Google Fonts API?
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 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: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2
Glyph name: uni20A8 Contours detected: 2 Expected: 3
Glyph name: fi Contours detected: 2 Expected: 3
Glyph name: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2 [code: contour-count]

WARN: Are there caret positions declared for every ligature?
--- Rationale ---
All ligatures in a font must have corresponding caret (text cursor) positions
defined in the GDEF table, otherwhise, users may experience issues with caret
rendering.
If using GlyphsApp or UFOs, ligature carets can be defined as anchors with names
starting with 'caret_'. These can be compiled with fontmake as of version
v2.4.0.
  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences?
--- Rationale ---
Fonts with ligatures should have kerning on the corresponding non-ligated
sequences for text where ligatures aren't used (eg
https://github.com/impallari/Raleway/issues/14).
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + i
    • uni0E26 + uni0E45
    • uni0E24 + uni0E45

    [code: lacks-kern-info]

WARN: Combined length of family and style must not exceed 27 characters.
--- Rationale ---
According to a GlyphsApp tutorial [1], in order to make sure all versions of
Windows recognize it as a valid font file, we must make sure that the
concatenated length of the familyname (NameID.FONT_FAMILY_NAME) and style
(NameID.FONT_SUBFAMILY_NAME) strings in the name table do not exceed 20
characters.
After discussing the problem in more detail at `FontBakery issue #2179 [2] we
decided that allowing up to 27 chars would still be on the safe side, though.
[1] https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances
[2] https://github.com/googlefonts/fontbakery/issues/2179
  • WARN The combined length of family and style exceeds 27 chars in the following 'WINDOWS' entries:
    FONT_FAMILY_NAME = 'IBM Plex Sans Thai Looped' / SUBFAMILY_NAME = 'Regular'

Please take a look at the conversation at fonttools/fontbakery#2179 in order to understand the reasoning behind these name table records max-length criteria. [code: too-long]

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:
    • g: X=185.5,Y=515.0 (should be at x-height 516?)
    • g: X=363.0,Y=517.0 (should be at x-height 516?)
    • J: X=303.0,Y=1.5 (should be at baseline 0?)
    • S: X=200.5,Y=697.5 (should be at cap-height 698?)
    • two: X=204.5,Y=696.0 (should be at cap-height 698?)
    • three: X=205.0,Y=700.0 (should be at cap-height 698?)
    • three: X=363.0,Y=698.5 (should be at cap-height 698?)
    • three: X=188.0,Y=-2.0 (should be at baseline 0?)
    • five: X=217.5,Y=-2.0 (should be at baseline 0?)
    • ampersand: X=361.5,Y=-2.0 (should be at baseline 0?) and 84 more. [code: found-misalignments]

[18] IBMPlexSansThaiLooped-SemiBold.ttf
🔥 FAIL: Does DESCRIPTION file contain a upstream Git repo URL?
--- Rationale ---
The contents of the DESCRIPTION.en-us.html file are displayed on the Google
Fonts website in the about section of each font family specimen page.
Since all of the Google Fonts collection is composed of libre-licensed fonts,
this check enforces a policy that there must be a hypertext link in that page
directing users to the repository where the font project files are made
available.
Such hosting is typically done on sites like Github, Gitlab, GNU Savannah or any
other git-based version control service.
  • 🔥 FAIL Please host your font project on a public Git repo (such as GitHub or GitLab) and place a link in the DESCRIPTION.en_us.html file. [code: lacks-git-url]
🔥 FAIL: Substitute copyright, registered and trademark symbols in name table entries.
🔥 FAIL: Check license file has good copyright string.
--- Rationale ---
An OFL.txt file's first line should be the font copyright e.g:
"Copyright 2019 The Montserrat Project Authors
(https://github.com/julietaula/montserrat)"
  • 🔥 FAIL First line in license file does not match expected format: "copyright © 2017 ibm corp. with reserved font name "plex""
🔥 FAIL: Copyright notices match canonical pattern in METADATA.pb
--- Rationale ---
The expected pattern for the copyright string adheres to the following rules:
* It must say "Copyright" followed by a 4 digit year (optionally followed by a
hyphen and another 4 digit year)
* Then it must say "The <familyname> Project Authors"
* And within parentheses, a URL for a git repository must be provided
* The check is case insensitive and does not validate whether the familyname is
correct, even though we'd expect it is (and we may soon update the check to
validate that aspect as well!)
Here is an example of a valid copyright string:
"Copyright 2017 The Archivo Black Project Authors
(https://github.com/Omnibus-Type/ArchivoBlack)"
  • 🔥 FAIL METADATA.pb: Copyright notices should match a pattern similar to:
    "Copyright 2020 The Familyname Project Authors (git url)"
    But instead we have got:
    "copyright 2019 ibm corp. all rights reserved." [code: bad-notice-format]
🔥 FAIL: Copyright notices match canonical pattern in fonts
  • com.google.fonts/check/font_copyright

  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright 2019 IBM Corp. All rights reserved." [code: bad-notice-format]

🔥 FAIL: Font enables smart dropout control in "prep" table instructions?
--- Rationale ---
This setup is meant to ensure consistent rendering quality for fonts across all
devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF    PUSHW 0x01FF
85          SCANCTRL (unconditinally turn on
                      dropout control mode)
B0 04       PUSHB 0x04
8D          SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
        that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
        that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
        (either vertical or horizontal) is intersected
        by both an on-Transition contour and an off-Transition
        contour and neither of the pixels was already turned on
        by rules 1 and 2, turn on the pixel which is closer to
        the midpoint between the on-Transition contour and
        off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet), please
refer to the TrueType Instruction Set documentation.
  • 🔥 FAIL The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the gftools fix-nonhinting script. [code: lacks-smart-dropout]
🔥 FAIL: METADATA.pb: Designer is listed with the correct name on the Google Fonts catalog of designers?
🔥 FAIL: Checking font version fields (head and name table).
WARN: DESCRIPTION.en_us.html should end in a linebreak.
--- Rationale ---
Some older text-handling tools sometimes misbehave if the last line of data in a
text file is not terminated with a newline character (also known as '\n').
We know that this is a very small detail, but for the sake of keeping all
DESCRIPTION.en_us.html files uniformly formatted throughout the GFonts
collection, we chose to adopt the practice of placing this final linebreak char
on them.
  • WARN The last characther on DESCRIPTION.en_us.html is not a line-break. Please add it. [code: missing-eof-linebreak]
WARN: Check copyright namerecords match license file.
--- Rationale ---
A known licensing description must be provided in the NameID 14 (LICENSE
DESCRIPTION) entries of the name table.
The source of truth for this check (to determine which license is in use) is a
file placed side-by-side to your font project including the licensing terms.
Depending on the chosen license, one of the following string snippets is
expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name
table:
- "This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is available with a FAQ at: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13] [code: http-in-description]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: License URL matches License text on name table?
--- Rationale ---
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: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider 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 Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=14] [code: http-in-license-info]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
--- Rationale ---
Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem
had no grid fitting but did have antialiasing. From 9-16 ppem, just grid
fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled
on. The use of accelerated graphics cards and higher resolution screens make
this approach obsolete. Microsoft's DirectWrite pushed this even further with
much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font
sizes.
  • WARN The gasp table has a range of 8 that may be unneccessary. [code: non-ffff-range]
  • WARN The gasp table has a range of 16 that may be unneccessary. [code: non-ffff-range]
WARN: METADATA.pb: Fontfamily is listed on Google Fonts API?
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 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: uni0E12 Contours detected: 4 Expected: 1 or 3
Glyph name: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2
Glyph name: uni20A8 Contours detected: 2 Expected: 3
Glyph name: fi Contours detected: 2 Expected: 3
Glyph name: uni0E12 Contours detected: 4 Expected: 1 or 3
Glyph name: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2 [code: contour-count]

WARN: Are there caret positions declared for every ligature?
--- Rationale ---
All ligatures in a font must have corresponding caret (text cursor) positions
defined in the GDEF table, otherwhise, users may experience issues with caret
rendering.
If using GlyphsApp or UFOs, ligature carets can be defined as anchors with names
starting with 'caret_'. These can be compiled with fontmake as of version
v2.4.0.
  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences?
--- Rationale ---
Fonts with ligatures should have kerning on the corresponding non-ligated
sequences for text where ligatures aren't used (eg
https://github.com/impallari/Raleway/issues/14).
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + i
    • uni0E26 + uni0E45
    • uni0E24 + uni0E45

    [code: lacks-kern-info]

WARN: Combined length of family and style must not exceed 27 characters.
--- Rationale ---
According to a GlyphsApp tutorial [1], in order to make sure all versions of
Windows recognize it as a valid font file, we must make sure that the
concatenated length of the familyname (NameID.FONT_FAMILY_NAME) and style
(NameID.FONT_SUBFAMILY_NAME) strings in the name table do not exceed 20
characters.
After discussing the problem in more detail at `FontBakery issue #2179 [2] we
decided that allowing up to 27 chars would still be on the safe side, though.
[1] https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances
[2] https://github.com/googlefonts/fontbakery/issues/2179
  • WARN The combined length of family and style exceeds 27 chars in the following 'WINDOWS' entries:
    FONT_FAMILY_NAME = 'IBM Plex Sans Thai Looped SemiBold' / SUBFAMILY_NAME = 'Regular'

Please take a look at the conversation at fonttools/fontbakery#2179 in order to understand the reasoning behind these name table records max-length criteria. [code: too-long]

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:
    • g: X=362.0,Y=521.0 (should be at x-height 522?)
    • g.alt01: X=249.0,Y=-2.0 (should be at baseline 0?)
    • s: X=163.5,Y=522.5 (should be at x-height 522?)
    • s: X=333.5,Y=0.5 (should be at baseline 0?)
    • two: X=203.0,Y=696.0 (should be at cap-height 698?)
    • three: X=376.5,Y=697.5 (should be at cap-height 698?)
    • three: X=182.0,Y=-1.5 (should be at baseline 0?)
    • five: X=209.0,Y=-1.5 (should be at baseline 0?)
    • eight: X=200.5,Y=696.5 (should be at cap-height 698?)
    • eight: X=399.5,Y=696.5 (should be at cap-height 698?) and 60 more. [code: found-misalignments]

[20] IBMPlexSansThaiLooped-Thin.ttf
🔥 FAIL: Does DESCRIPTION file contain a upstream Git repo URL?
--- Rationale ---
The contents of the DESCRIPTION.en-us.html file are displayed on the Google
Fonts website in the about section of each font family specimen page.
Since all of the Google Fonts collection is composed of libre-licensed fonts,
this check enforces a policy that there must be a hypertext link in that page
directing users to the repository where the font project files are made
available.
Such hosting is typically done on sites like Github, Gitlab, GNU Savannah or any
other git-based version control service.
  • 🔥 FAIL Please host your font project on a public Git repo (such as GitHub or GitLab) and place a link in the DESCRIPTION.en_us.html file. [code: lacks-git-url]
🔥 FAIL: Substitute copyright, registered and trademark symbols in name table entries.
🔥 FAIL: Check license file has good copyright string.
--- Rationale ---
An OFL.txt file's first line should be the font copyright e.g:
"Copyright 2019 The Montserrat Project Authors
(https://github.com/julietaula/montserrat)"
  • 🔥 FAIL First line in license file does not match expected format: "copyright © 2017 ibm corp. with reserved font name "plex""
🔥 FAIL: Copyright notices match canonical pattern in METADATA.pb
--- Rationale ---
The expected pattern for the copyright string adheres to the following rules:
* It must say "Copyright" followed by a 4 digit year (optionally followed by a
hyphen and another 4 digit year)
* Then it must say "The <familyname> Project Authors"
* And within parentheses, a URL for a git repository must be provided
* The check is case insensitive and does not validate whether the familyname is
correct, even though we'd expect it is (and we may soon update the check to
validate that aspect as well!)
Here is an example of a valid copyright string:
"Copyright 2017 The Archivo Black Project Authors
(https://github.com/Omnibus-Type/ArchivoBlack)"
  • 🔥 FAIL METADATA.pb: Copyright notices should match a pattern similar to:
    "Copyright 2020 The Familyname Project Authors (git url)"
    But instead we have got:
    "copyright 2019 ibm corp. all rights reserved." [code: bad-notice-format]
🔥 FAIL: Copyright notices match canonical pattern in fonts
  • com.google.fonts/check/font_copyright

  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright 2019 IBM Corp. All rights reserved." [code: bad-notice-format]

🔥 FAIL: Font enables smart dropout control in "prep" table instructions?
--- Rationale ---
This setup is meant to ensure consistent rendering quality for fonts across all
devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF    PUSHW 0x01FF
85          SCANCTRL (unconditinally turn on
                      dropout control mode)
B0 04       PUSHB 0x04
8D          SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
        that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
        that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
        (either vertical or horizontal) is intersected
        by both an on-Transition contour and an off-Transition
        contour and neither of the pixels was already turned on
        by rules 1 and 2, turn on the pixel which is closer to
        the midpoint between the on-Transition contour and
        off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet), please
refer to the TrueType Instruction Set documentation.
  • 🔥 FAIL The 'prep' table does not contain TrueType instructions enabling smart dropout control. To fix, export the font with autohinting enabled, or run ttfautohint on the font, or run the gftools fix-nonhinting script. [code: lacks-smart-dropout]
🔥 FAIL: METADATA.pb: Designer is listed with the correct name on the Google Fonts catalog of designers?
🔥 FAIL: Checking font version fields (head and name table).
WARN: DESCRIPTION.en_us.html should end in a linebreak.
--- Rationale ---
Some older text-handling tools sometimes misbehave if the last line of data in a
text file is not terminated with a newline character (also known as '\n').
We know that this is a very small detail, but for the sake of keeping all
DESCRIPTION.en_us.html files uniformly formatted throughout the GFonts
collection, we chose to adopt the practice of placing this final linebreak char
on them.
  • WARN The last characther on DESCRIPTION.en_us.html is not a line-break. Please add it. [code: missing-eof-linebreak]
WARN: Check copyright namerecords match license file.
--- Rationale ---
A known licensing description must be provided in the NameID 14 (LICENSE
DESCRIPTION) entries of the name table.
The source of truth for this check (to determine which license is in use) is a
file placed side-by-side to your font project including the licensing terms.
Depending on the chosen license, one of the following string snippets is
expected to be found on the NameID 13 (LICENSE DESCRIPTION) entries of the name
table:
- "This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is available with a FAQ at: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=13] [code: http-in-description]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: License URL matches License text on name table?
--- Rationale ---
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: https://scripts.sil.org/OFL"
- "Licensed under the Apache License, Version 2.0"
- "Licensed under the Ubuntu Font Licence 1.0."
Currently accepted licenses are Apache or Open Font License.
For a small set of legacy families the Ubuntu Font License may be acceptable as
well.
When in doubt, please choose OFL for new font projects.
  • WARN Please consider 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 Please consider using HTTPS URLs at name table entry [plat=3, enc=1, name=14] [code: http-in-license-info]
  • WARN For now we're still accepting http URLs, but you should consider using https instead.
    [code: http]
WARN: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering?
--- Rationale ---
Traditionally version 0 'gasp' tables were set so that font sizes below 8 ppem
had no grid fitting but did have antialiasing. From 9-16 ppem, just grid
fitting. And fonts above 17ppem had both antialiasing and grid fitting toggled
on. The use of accelerated graphics cards and higher resolution screens make
this approach obsolete. Microsoft's DirectWrite pushed this even further with
much improved rendering built into the OS and apps.
In this scenario it makes sense to simply toggle all 4 flags ON for all font
sizes.
  • WARN The gasp table has a range of 8 that may be unneccessary. [code: non-ffff-range]
  • WARN The gasp table has a range of 16 that may be unneccessary. [code: non-ffff-range]
WARN: METADATA.pb: Fontfamily is listed on Google Fonts API?
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 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: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2
Glyph name: uni20A8 Contours detected: 2 Expected: 3
Glyph name: fi Contours detected: 2 Expected: 3
Glyph name: uni0E2C Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E2E Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E3F Contours detected: 5 Expected: 3
Glyph name: uni0E43 Contours detected: 2 Expected: 1 or 3
Glyph name: uni0E5A Contours detected: 3 Expected: 1 or 2 [code: contour-count]

WARN: Are there caret positions declared for every ligature?
--- Rationale ---
All ligatures in a font must have corresponding caret (text cursor) positions
defined in the GDEF table, otherwhise, users may experience issues with caret
rendering.
If using GlyphsApp or UFOs, ligature carets can be defined as anchors with names
starting with 'caret_'. These can be compiled with fontmake as of version
v2.4.0.
  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences?
--- Rationale ---
Fonts with ligatures should have kerning on the corresponding non-ligated
sequences for text where ligatures aren't used (eg
https://github.com/impallari/Raleway/issues/14).
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + i
    • uni0E26 + uni0E45
    • uni0E24 + uni0E45

    [code: lacks-kern-info]

WARN: Combined length of family and style must not exceed 27 characters.
--- Rationale ---
According to a GlyphsApp tutorial [1], in order to make sure all versions of
Windows recognize it as a valid font file, we must make sure that the
concatenated length of the familyname (NameID.FONT_FAMILY_NAME) and style
(NameID.FONT_SUBFAMILY_NAME) strings in the name table do not exceed 20
characters.
After discussing the problem in more detail at `FontBakery issue #2179 [2] we
decided that allowing up to 27 chars would still be on the safe side, though.
[1] https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances
[2] https://github.com/googlefonts/fontbakery/issues/2179
  • WARN The combined length of family and style exceeds 27 chars in the following 'WINDOWS' entries:
    FONT_FAMILY_NAME = 'IBM Plex Sans Thai Looped Thin' / SUBFAMILY_NAME = 'Regular'

Please take a look at the conversation at fonttools/fontbakery#2179 in order to understand the reasoning behind these name table records max-length criteria. [code: too-long]

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:
    • eight: X=205.0,Y=1.5 (should be at baseline 0?)
    • eight: X=394.5,Y=1.5 (should be at baseline 0?)
    • ampersand: X=188.0,Y=1.0 (should be at baseline 0?)
    • ampersand: X=375.5,Y=699.0 (should be at cap-height 698?)
    • at: X=190.5,Y=2.0 (should be at baseline 0?)
    • comma: X=100.0,Y=2.0 (should be at baseline 0?)
    • semicolon: X=110.0,Y=2.0 (should be at baseline 0?)
    • quoteright: X=108.0,Y=699.0 (should be at cap-height 698?)
    • quotedblright: X=108.0,Y=699.0 (should be at cap-height 698?)
    • quotedblright: X=268.0,Y=699.0 (should be at cap-height 698?) and 72 more. [code: found-misalignments]
WARN: Do outlines contain any jaggy segments?
--- Rationale ---
This check heuristically detects outline segments which form a particularly
small angle, indicative of an outline error. This may cause false positives in
cases such as extreme ink traps, so should be regarded as advisory and backed up
by manual inspection.
  • WARN The following glyphs have jaggy segments:
    • uni0E12: L<<337.0,147.0>--<378.0,190.0>>/B<<378.0,190.0>-<367.0,183.0>-<348.0,183.0>> = 13.89273524075444
    • uni0E14: L<<319.0,147.0>--<360.0,190.0>>/B<<360.0,190.0>-<349.0,183.0>-<330.0,183.0>> = 13.89273524075444
    • uni0E15: L<<337.0,147.0>--<378.0,190.0>>/B<<378.0,190.0>-<367.0,183.0>-<348.0,183.0>> = 13.89273524075444
    • uni0E22: B<<123.0,470.0>-<123.0,479.0>-<126.0,488.0>>/B<<126.0,488.0>-<111.0,459.0>-<111.0,416.0>> = 8.914926957147863
    • uni0E29: B<<435.0,275.0>-<426.0,260.0>-<411.0,252.0>>/B<<411.0,252.0>-<418.0,255.0>-<429.0,255.0>> = 4.873896422204756 and uni0E52: B<<262.0,313.0>-<262.0,288.0>-<267.0,268.0>>/L<<267.0,268.0>--<267.0,274.0>> = 14.036243467926484 [code: found-jaggy-segments]
WARN: Do outlines contain any semi-vertical or semi-horizontal lines?
--- Rationale ---
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.
  • WARN The following glyphs have semi-vertical/semi-horizontal lines:
  • uni2638: L<<134.0,346.0>--<335.0,345.0>>
  • uni2638: L<<335.0,327.0>--<134.0,326.0>>
  • uni2638: L<<426.0,39.0>--<427.0,236.0>>
  • uni2638: L<<427.0,436.0>--<426.0,633.0>>
  • uni2638: L<<443.0,236.0>--<444.0,39.0>>
  • uni2638: L<<444.0,633.0>--<443.0,436.0>>
  • uni2638: L<<535.0,345.0>--<736.0,346.0>> and uni2638: L<<736.0,326.0>--<535.0,327.0>> [code: found-semi-vertical]

Summary

💔 ERROR 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 56 77 330 46 829 0
0% 4% 6% 25% 3% 62% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG

@m4rc1e m4rc1e merged commit 0457aa1 into main Jul 1, 2021
@m4rc1e m4rc1e deleted the gftools_packager_ofl_ibmplexsansthailooped branch July 1, 2021 10:47
@RosaWagner RosaWagner added --- Live Font is visible on API and removed --- to_production labels Aug 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
--- Live Font is visible on API I New Font
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add IBM Plex Sans Thai Looped
4 participants