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

sourcesans3: added #3856

Merged
merged 1 commit into from
Sep 17, 2021
Merged

sourcesans3: added #3856

merged 1 commit into from
Sep 17, 2021

Conversation

m4rc1e
Copy link
Collaborator

@m4rc1e m4rc1e commented Sep 17, 2021

@m4rc1e
Copy link
Collaborator Author

m4rc1e commented Sep 17, 2021

We plan to delist the existing Source Sans Pro from the Google Fonts catalogue and replace it with this family instead. Users of the existing fonts won't be affected since the endpoints for the v2 fonts will not change.

@gf-bot
Copy link

gf-bot commented Sep 17, 2021

Fontbakery report

Fontbakery version: 0.8.2

[26] SourceSans3-Italic[wght].ttf
🔥 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 2010-2020 adobe (http://www.adobe.com/), with reserved font name 'source'. all rights reserved. source is a trademark of adobe in the united states and/or other countries."
🔥 FAIL: Check OFL body text is correct.
--- Rationale ---
Check OFL body text is correct. Often users will accidently delete parts of the
body text.
🔥 FAIL: 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.
  • 🔥 FAIL License file OFL.txt exists but NameID 13 (LICENSE DESCRIPTION) value on platform 3 (WINDOWS) is not specified for that. Value was: "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. This Font Software is distributed on an ‘AS IS’ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software." Must be changed to "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" [code: wrong]
  • 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]
🔥 FAIL: 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.
  • 🔥 FAIL Font is missing the 'gasp' table. Try exporting the font with autohinting enabled.
    If you are dealing with an unhinted font, it can be fixed by running the fonts through the command 'gftools fix-nonhinting'
    GFTools is available at https://pypi.org/project/gftools/ [code: lacks-gasp]
🔥 FAIL: Are there non-ASCII characters in ASCII-only NAME table entries?
--- Rationale ---
The OpenType spec requires ASCII for the POSTSCRIPT_NAME (nameID 6).
For COPYRIGHT_NOTICE (nameID 0) ASCII is required because that string should be
the same in CFF fonts which also have this requirement in the OpenType spec.
Note:
A common place where we find non-ASCII strings is on name table entries with
NameID > 18, which are expressly for localising the ASCII-only IDs into Hindi /
Arabic / etc.
  • 🔥 FAIL Bad string at [nameID 0, 'utf_16_be']: 'b'© 2010 – 2021 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’'' [code: bad-string]
  • 🔥 FAIL There are 1 strings containing non-ASCII characters in the ASCII-only NAME table entries. [code: non-ascii-strings]
🔥 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:
    "© 2010 – 2021 adobe (http://www.adobe.com/), with reserved font name ‘source’" [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:
    "© 2010 – 2021 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’" [code: bad-notice-format]

🔥 FAIL: Ensure component transforms do not perform scaling or rotation.
--- Rationale ---
Some families have glyphs which have been constructed by using transformed
components e.g the 'u' being constructed from a flipped 'n'.
From a designers point of view, this sounds like a win (less work). However,
such approaches can lead to rasterization issues, such as having the 'u' not
sitting on the baseline at certain sizes after running the font through
ttfautohint.
As of July 2019, Marc Foley observed that ttfautohint assigns cvt values to
transformed glyphs as if they are not transformed and the result is they render
very badly, and that vttLib does not support flipped components.
When building the font with fontmake, this problem can be fixed by using the
"Decompose Transformed Components" filter.
  • 🔥 FAIL The following glyphs had components with scaling or rotation:

  • uniA77E (component uniA77D)

  • uniA780 (component L)

  • glyph00309 (component Y)

  • uni01B1 (component uni03A9)

  • uni028C (component v)

  • uni018D (component uni1E9F)

  • uni028D (component w)
    [code: transformed-components]

🔥 FAIL: Check name table: FONT_SUBFAMILY_NAME entries.
🔥 FAIL: Check name table: TYPOGRAPHIC_SUBFAMILY_NAME entries.
--- Rationale ---
Requirements for the TYPOGRAPHIC_SUBFAMILY_NAME entries in the 'name' table.
  • 🔥 FAIL TYPOGRAPHIC_SUBFAMILY_NAME for Win is missing. It must be "ExtraLight Italic". [code: missing-typo-win]
🔥 FAIL: Check glyphs do not have components which are themselves components.
--- Rationale ---
There have been bugs rendering variable fonts with nested components.
Additionally, some static fonts with nested components have been reported to
have rendering and printing issues.
For more info, see:
* https://github.com/googlefonts/fontbakery/issues/2961
* https://github.com/arrowtype/recursive/issues/412
  • 🔥 FAIL The following glyphs have components which themselves are component glyphs:
    • uni1EA0
    • uni1EAC
    • uni1EB6
    • uni1E06
    • Ccedilla
    • uni1E0C
    • uni1E0E
    • uni1E10
    • uni1EB8
    • uni1EC6 and 293 more. [code: found-nested-components]
🔥 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: Name table strings must not contain the string 'Reserved Font Name'.
--- Rationale ---
Some designers adopt the "Reserved Font Name" clause of the OFL license. This
means that the original author reserves the rights to the family name and other
people can only distribute modified versions using a different family name.
Google Fonts published updates to the fonts in the collection in order to fix
issues and/or implement further improvements to the fonts. It is important to
keep the family name so that users of the webfonts can benefit from the updates.
Since it would forbid such usage scenario, all families in the GFonts collection
are required to not adopt the RFN clause.
This check ensures "Reserved Font Name" is not mentioned in the name table.
  • 🔥 FAIL Name table entry ("© 2010 – 2021 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’") contains "Reserved Font Name". This is an error except in a few specific rare cases. [code: rfn]
🔥 FAIL: OS/2.fsSelection bit 7 (USE_TYPO_METRICS) is set in all fonts.
--- Rationale ---
All fonts on the Google Fonts collection should have OS/2.fsSelection bit 7
(USE_TYPO_METRICS) set. This requirement is part of the vertical metrics scheme
established as a Google Fonts policy aiming at a common ground supported by all
major font rendering environments.
For more details, read:
https://github.com/googlefonts/gf-docs/blob/main/VerticalMetrics/README.md
Below is the portion of that document that is most relevant to this check:
Use_Typo_Metrics must be enabled. This will force MS Applications to use the
OS/2 Typo values instead of the Win values. By doing this, we can freely set the
Win values to avoid clipping and control the line height with the typo values.
It has the added benefit of future line height compatibility. When a new script
is added, we simply change the Win values to the new yMin and yMax, without
needing to worry if the line height have changed.
  • 🔥 FAIL OS/2.fsSelection bit 7 (USE_TYPO_METRICS) wasNOT set in the following fonts: ['ofl/sourcesans3/SourceSans3-Italic[wght].ttf', 'ofl/sourcesans3/SourceSans3[wght].ttf']. [code: missing-os2-fsselection-bit7]
🔥 FAIL: Checking with fontTools.ttx
🔥 FAIL: Font has correct post table version?
--- Rationale ---
Apple recommends against using 'post' table format 3 under most circumstances,
as it can create problems with some printer drivers and PDF documents. The
savings in disk space usually does not justify the potential loss in
functionality.
Source:
https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6post.html
The CFF2 table does not contain glyph names, so variable OTFs should be allowed
to use post table version 2.
This check expects:
- Version 2 for TTF or OTF CFF2 Variable fonts
- Version 3 for OTF
  • 🔥 FAIL Post table should be version 2 instead of 3.0. [code: post-table-version]
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: Copyright notice on METADATA.pb should not contain 'Reserved Font Name'.
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 + f
    • f + t
    • t + f

    [code: lacks-kern-info]

WARN: A static fonts directory with at least two fonts must accompany variable fonts
--- Rationale ---
Variable font family directories kept in the google/fonts git repo may include a
static/ subdir containing static fonts.
These files are meant to be served for users that still lack support for
variable fonts in their web browsers.
  • WARN Please consider adding a subdirectory called "static/" and including in it static font files. [code: missing]
WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table.
--- Rationale ---
The OpenType 'meta' table originated at Apple. Microsoft added it to OT with
just two DataMap records:
- dlng: comma-separated ScriptLangTags that indicate which scripts, or languages
and scripts, with possible variants, the font is designed for
- slng: comma-separated ScriptLangTags that indicate which scripts, or languages
and scripts, with possible variants, the font supports
The slng structure is intended to describe which languages and scripts the font
overall supports. For example, a Traditional Chinese font that also contains
Latin characters, can indicate Hant,Latn, showing that it supports Hant, the
Traditional Chinese variant of the Hani script, and it also supports the Latn
script
The dlng structure is far more interesting. A font may contain various glyphs,
but only a particular subset of the glyphs may be truly "leading" in the design,
while other glyphs may have been included for technical reasons. Such a
Traditional Chinese font could only list Hant there, showing that it’s designed
for Traditional Chinese, but the font would omit Latn, because the developers
don’t think the font is really recommended for purely Latin-script use.
The tags used in the structures can comprise just script, or also language and
script. For example, if a font has Bulgarian Cyrillic alternates in the locl
feature for the cyrl BGR OT languagesystem, it could also indicate in dlng
explicitly that it supports bul-Cyrl. (Note that the scripts and languages in
meta use the ISO language and script codes, not the OpenType ones).
This check ensures that the font has the meta table containing the slng and dlng
structures.
All families in the Google Fonts collection should contain the 'meta' table.
Windows 10 already uses it when deciding on which fonts to fall back to. The
Google Fonts API and also other environments could use the data for smarter
filtering. Most importantly, those entries should be added to the Noto fonts.
In the font making process, some environments store this data in external files
already. But the meta table provides a convenient way to store this inside the
font file, so some tools may add the data, and unrelated tools may read this
data. This makes the solution much more portable and universal.
  • WARN This font file does not have a 'meta' table. [code: lacks-meta-table]
WARN: Does the font have a DSIG table?
--- Rationale ---
Microsoft Office 2013 and below products expect fonts to have a digital
signature declared in a DSIG table in order to implement OpenType features. The
EOL date for Microsoft Office 2013 products is 4/11/2023. This issue does not
impact Microsoft Office 2016 and above products.
As we approach the EOL date, it is now considered better to completely remove
the table.
But if you still want your font to support OpenType features on Office 2013,
then you may find it handy to add a fake signature on a dummy DSIG table by
running one of the helper scripts provided at
https://github.com/googlefonts/gftools
Reference: https://github.com/googlefonts/fontbakery/issues/1845
  • WARN This font has a digital signature (DSIG table) which is only required - even if only a dummy placeholder - on old programs like MS Office 2013 in order to work properly.
    The current recommendation is to completely remove the DSIG table. [code: found-DSIG]
WARN: Check glyphs in mark glyph class are non-spacing.
--- Rationale ---
Glyphs in the GDEF mark glyph class should be non-spacing.
Spacing glyphs in the GDEF mark glyph class may have incorrect anchor
positioning that was only intended for building composite glyphs during design.
  • WARN The following spacing glyphs may be in the GDEF mark glyph class by mistake:
    uni0315 (U+0315) [code: spacing-mark-glyphs]
WARN: Check mark characters are in GDEF mark glyph class.
--- Rationale ---
Mark characters should be in the GDEF mark glyph class.
  • WARN The following mark characters could be in the GDEF mark glyph class:
    uni0310 (U+0310), uni0337 (U+0337), uni0338 (U+0338), uni034F (U+034F), uni035C (U+035C), uni035E (U+035E), uni035F (U+035F), uni0361 (U+0361) and uni1DCD (U+1DCD) [code: mark-chars]

[28] SourceSans3[wght].ttf
💔 ERROR: Check small caps glyphs are available.
--- Rationale ---
Ensure small caps glyphs are available if a font declares smcp or c2sc OT
features.
  • 💔 ERROR Failed with AttributeError: mapping
🔥 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 2010-2020 adobe (http://www.adobe.com/), with reserved font name 'source'. all rights reserved. source is a trademark of adobe in the united states and/or other countries."
🔥 FAIL: Check OFL body text is correct.
--- Rationale ---
Check OFL body text is correct. Often users will accidently delete parts of the
body text.
🔥 FAIL: 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.
  • 🔥 FAIL License file OFL.txt exists but NameID 13 (LICENSE DESCRIPTION) value on platform 3 (WINDOWS) is not specified for that. Value was: "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. This Font Software is distributed on an ‘AS IS’ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software." Must be changed to "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" [code: wrong]
  • 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]
🔥 FAIL: 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.
  • 🔥 FAIL Font is missing the 'gasp' table. Try exporting the font with autohinting enabled.
    If you are dealing with an unhinted font, it can be fixed by running the fonts through the command 'gftools fix-nonhinting'
    GFTools is available at https://pypi.org/project/gftools/ [code: lacks-gasp]
🔥 FAIL: Are there non-ASCII characters in ASCII-only NAME table entries?
--- Rationale ---
The OpenType spec requires ASCII for the POSTSCRIPT_NAME (nameID 6).
For COPYRIGHT_NOTICE (nameID 0) ASCII is required because that string should be
the same in CFF fonts which also have this requirement in the OpenType spec.
Note:
A common place where we find non-ASCII strings is on name table entries with
NameID > 18, which are expressly for localising the ASCII-only IDs into Hindi /
Arabic / etc.
  • 🔥 FAIL Bad string at [nameID 0, 'utf_16_be']: 'b'© 2010 – 2021 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’'' [code: bad-string]
  • 🔥 FAIL There are 1 strings containing non-ASCII characters in the ASCII-only NAME table entries. [code: non-ascii-strings]
🔥 FAIL: METADATA.pb font.full_name and font.post_script_name fields have equivalent values ?
🔥 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:
    "© 2010 – 2021 adobe (http://www.adobe.com/), with reserved font name ‘source’" [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:
    "© 2010 – 2021 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’" [code: bad-notice-format]

🔥 FAIL: Ensure component transforms do not perform scaling or rotation.
--- Rationale ---
Some families have glyphs which have been constructed by using transformed
components e.g the 'u' being constructed from a flipped 'n'.
From a designers point of view, this sounds like a win (less work). However,
such approaches can lead to rasterization issues, such as having the 'u' not
sitting on the baseline at certain sizes after running the font through
ttfautohint.
As of July 2019, Marc Foley observed that ttfautohint assigns cvt values to
transformed glyphs as if they are not transformed and the result is they render
very badly, and that vttLib does not support flipped components.
When building the font with fontmake, this problem can be fixed by using the
"Decompose Transformed Components" filter.
  • 🔥 FAIL The following glyphs had components with scaling or rotation:

  • uniA77E (component uniA77D)

  • uniA780 (component L)

  • glyph00309 (component Y)

  • uni01B1 (component uni03A9)

  • uni028C (component v)

  • uni018D (component uni1E9F)

  • uni0279 (component r)

  • uni0287 (component t)

  • uni028D (component w)

  • glyph01772 (component glyph01771)

  • glyph01773 (component glyph01509)

  • glyph01780 (component glyph01522)

  • glyph01781 (component glyph01836)

  • glyph01842 (component glyph01506)

  • glyph01843 (component glyph01506)

  • glyph01844 (component glyph01506)
    [code: transformed-components]

🔥 FAIL: Check name table: FONT_SUBFAMILY_NAME entries.
🔥 FAIL: Check name table: TYPOGRAPHIC_SUBFAMILY_NAME entries.
--- Rationale ---
Requirements for the TYPOGRAPHIC_SUBFAMILY_NAME entries in the 'name' table.
  • 🔥 FAIL TYPOGRAPHIC_SUBFAMILY_NAME for Win "Roman" is incorrect. It must be "ExtraLight". [code: bad-typo-win]
  • 🔥 FAIL TYPOGRAPHIC_SUBFAMILY_NAME for Mac "Roman" is incorrect. It must be "ExtraLight". Please note, this record can be safely deleted. [code: bad-typo-mac]
🔥 FAIL: Check glyphs do not have components which are themselves components.
--- Rationale ---
There have been bugs rendering variable fonts with nested components.
Additionally, some static fonts with nested components have been reported to
have rendering and printing issues.
For more info, see:
* https://github.com/googlefonts/fontbakery/issues/2961
* https://github.com/arrowtype/recursive/issues/412
  • 🔥 FAIL The following glyphs have components which themselves are component glyphs:
    • uni1EA0
    • uni1EAC
    • uni1EB6
    • uni1E06
    • uni1E0C
    • uni1E0E
    • uni1EB8
    • uni1EC6
    • uni1E24
    • uni1E2A and 322 more. [code: found-nested-components]
🔥 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: Name table strings must not contain the string 'Reserved Font Name'.
--- Rationale ---
Some designers adopt the "Reserved Font Name" clause of the OFL license. This
means that the original author reserves the rights to the family name and other
people can only distribute modified versions using a different family name.
Google Fonts published updates to the fonts in the collection in order to fix
issues and/or implement further improvements to the fonts. It is important to
keep the family name so that users of the webfonts can benefit from the updates.
Since it would forbid such usage scenario, all families in the GFonts collection
are required to not adopt the RFN clause.
This check ensures "Reserved Font Name" is not mentioned in the name table.
  • 🔥 FAIL Name table entry ("© 2010 – 2021 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’") contains "Reserved Font Name". This is an error except in a few specific rare cases. [code: rfn]
🔥 FAIL: Validate STAT particle names and values match the fallback names in GFAxisRegistry.
--- Rationale ---
Check that particle names and values on STAT table match the fallback names in
each axis entry at the Google Fonts Axis Registry, available at
https://github.com/google/fonts/tree/main/axisregistry
  • 🔥 FAIL On the font variation axis 'ital', the name 'Regular' is not among the expected ones (Roman, Italic) according to the Google Fonts Axis Registry. [code: invalid-name]
🔥 FAIL: OS/2.fsSelection bit 7 (USE_TYPO_METRICS) is set in all fonts.
--- Rationale ---
All fonts on the Google Fonts collection should have OS/2.fsSelection bit 7
(USE_TYPO_METRICS) set. This requirement is part of the vertical metrics scheme
established as a Google Fonts policy aiming at a common ground supported by all
major font rendering environments.
For more details, read:
https://github.com/googlefonts/gf-docs/blob/main/VerticalMetrics/README.md
Below is the portion of that document that is most relevant to this check:
Use_Typo_Metrics must be enabled. This will force MS Applications to use the
OS/2 Typo values instead of the Win values. By doing this, we can freely set the
Win values to avoid clipping and control the line height with the typo values.
It has the added benefit of future line height compatibility. When a new script
is added, we simply change the Win values to the new yMin and yMax, without
needing to worry if the line height have changed.
  • 🔥 FAIL OS/2.fsSelection bit 7 (USE_TYPO_METRICS) wasNOT set in the following fonts: ['ofl/sourcesans3/SourceSans3-Italic[wght].ttf', 'ofl/sourcesans3/SourceSans3[wght].ttf']. [code: missing-os2-fsselection-bit7]
🔥 FAIL: Checking with fontTools.ttx
🔥 FAIL: Font has correct post table version?
--- Rationale ---
Apple recommends against using 'post' table format 3 under most circumstances,
as it can create problems with some printer drivers and PDF documents. The
savings in disk space usually does not justify the potential loss in
functionality.
Source:
https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6post.html
The CFF2 table does not contain glyph names, so variable OTFs should be allowed
to use post table version 2.
This check expects:
- Version 2 for TTF or OTF CFF2 Variable fonts
- Version 3 for OTF
  • 🔥 FAIL Post table should be version 2 instead of 3.0. [code: post-table-version]
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: Copyright notice on METADATA.pb should not contain 'Reserved Font Name'.
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 + f
    • f + t
    • t + f

    [code: lacks-kern-info]

WARN: A static fonts directory with at least two fonts must accompany variable fonts
--- Rationale ---
Variable font family directories kept in the google/fonts git repo may include a
static/ subdir containing static fonts.
These files are meant to be served for users that still lack support for
variable fonts in their web browsers.
  • WARN Please consider adding a subdirectory called "static/" and including in it static font files. [code: missing]
WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table.
--- Rationale ---
The OpenType 'meta' table originated at Apple. Microsoft added it to OT with
just two DataMap records:
- dlng: comma-separated ScriptLangTags that indicate which scripts, or languages
and scripts, with possible variants, the font is designed for
- slng: comma-separated ScriptLangTags that indicate which scripts, or languages
and scripts, with possible variants, the font supports
The slng structure is intended to describe which languages and scripts the font
overall supports. For example, a Traditional Chinese font that also contains
Latin characters, can indicate Hant,Latn, showing that it supports Hant, the
Traditional Chinese variant of the Hani script, and it also supports the Latn
script
The dlng structure is far more interesting. A font may contain various glyphs,
but only a particular subset of the glyphs may be truly "leading" in the design,
while other glyphs may have been included for technical reasons. Such a
Traditional Chinese font could only list Hant there, showing that it’s designed
for Traditional Chinese, but the font would omit Latn, because the developers
don’t think the font is really recommended for purely Latin-script use.
The tags used in the structures can comprise just script, or also language and
script. For example, if a font has Bulgarian Cyrillic alternates in the locl
feature for the cyrl BGR OT languagesystem, it could also indicate in dlng
explicitly that it supports bul-Cyrl. (Note that the scripts and languages in
meta use the ISO language and script codes, not the OpenType ones).
This check ensures that the font has the meta table containing the slng and dlng
structures.
All families in the Google Fonts collection should contain the 'meta' table.
Windows 10 already uses it when deciding on which fonts to fall back to. The
Google Fonts API and also other environments could use the data for smarter
filtering. Most importantly, those entries should be added to the Noto fonts.
In the font making process, some environments store this data in external files
already. But the meta table provides a convenient way to store this inside the
font file, so some tools may add the data, and unrelated tools may read this
data. This makes the solution much more portable and universal.
  • WARN This font file does not have a 'meta' table. [code: lacks-meta-table]
WARN: Does the font have a DSIG table?
--- Rationale ---
Microsoft Office 2013 and below products expect fonts to have a digital
signature declared in a DSIG table in order to implement OpenType features. The
EOL date for Microsoft Office 2013 products is 4/11/2023. This issue does not
impact Microsoft Office 2016 and above products.
As we approach the EOL date, it is now considered better to completely remove
the table.
But if you still want your font to support OpenType features on Office 2013,
then you may find it handy to add a fake signature on a dummy DSIG table by
running one of the helper scripts provided at
https://github.com/googlefonts/gftools
Reference: https://github.com/googlefonts/fontbakery/issues/1845
  • WARN This font has a digital signature (DSIG table) which is only required - even if only a dummy placeholder - on old programs like MS Office 2013 in order to work properly.
    The current recommendation is to completely remove the DSIG table. [code: found-DSIG]
WARN: Check mark characters are in GDEF mark glyph class.
--- Rationale ---
Mark characters should be in the GDEF mark glyph class.
  • WARN The following mark characters could be in the GDEF mark glyph class:
    uni0310 (U+0310), uni0337 (U+0337), uni0338 (U+0338), uni034F (U+034F), uni035C (U+035C), uni035E (U+035E), uni035F (U+035F), uni0361 (U+0361) and uni1DCD (U+1DCD) [code: mark-chars]

Summary

💔 ERROR 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
1 36 17 110 15 241 0
0% 9% 4% 26% 4% 57% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG

@m4rc1e m4rc1e merged commit 4013637 into main Sep 17, 2021
@m4rc1e m4rc1e deleted the sourcesans3 branch September 17, 2021 09:57
@RosaWagner RosaWagner linked an issue Oct 28, 2021 that may be closed by this pull request
@RosaWagner RosaWagner added --- Live Font is visible on API and removed --- to production labels Dec 8, 2021
miketheman added a commit to miketheman/warehouse that referenced this pull request May 2, 2023
The 3.x series of Source Sans was released in 2020, and contains the
desired italicized glyphs.
It was added to Google Fonts in 2021 in google/fonts#3856

The author dropped "Pro" from the name, and replaced with "3".

See: https://blog.adobe.com/en/publish/2020/11/30/whats-new-in-source-sans-3

Fixes pypi#8634

Signed-off-by: Mike Fiedler <[email protected]>
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 Source Sans Pro 3
3 participants