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

M PLUS Code Latin: Version 1.001; ttfautohint (v1.8.3) added; M PLUS 1 Code: Version 1.001 added #3859

Merged
merged 4 commits into from
Sep 30, 2021

Conversation

aaronbell
Copy link
Collaborator

@aaronbell aaronbell commented Sep 21, 2021

9481065: [gftools-packager] M PLUS 1 Code: Version 1.001 added

fe9405e: [gftools-packager] ofl/mplus1code remove METADATA "source". #2587

8bb6960: [gftools-packager] M PLUS Code Latin: Version 1.001; ttfautohint (v1.8.3) added

52c6464: [gftools-packager] ofl/mpluscodelatin remove METADATA "source". #2587

Fixes #3374

@aaronbell
Copy link
Collaborator Author

As previously mentioned on the other M Plus PR, at the request of the designer, I've modified the vertical metrics of these two fonts to align with the Google standard for Latin (though I did increase the sTypo to 1000 to account for a tall À).

The CJK metrics were too tall for these to be effective coding fonts.

@aaronbell aaronbell added - Ready for Review II CJK Chinese, Japanese, Korean scripts I New Font labels Sep 21, 2021
@gf-bot
Copy link

gf-bot commented Sep 21, 2021

Fontbakery report

Fontbakery version: 0.8.2

[10] MplusCodeLatin[wdth,wght].ttf
🔥 FAIL: Checking file is named canonically.
--- Rationale ---
A font's filename must be composed in the following manner:
<familyname>-<stylename>.ttf
- Nunito-Regular.ttf,
- Oswald-BoldItalic.ttf
Variable fonts must list the axis tags in alphabetical order in square brackets
and separated by commas:
- Roboto[wdth,wght].ttf
- Familyname-Italic[wght].ttf
  • 🔥 FAIL The file 'MplusCodeLatin[wdth,wght].ttf' must be renamed to 'MPLUSCodeLatin[wdth,wght].ttf' according to the Google Fonts naming policy for variable fonts. [code: bad-varfont-filename]
🔥 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:

  • uni0200 (component gravecomb)

  • uni0200 (component gravecomb)

  • uni0202 (component uni0306)

  • Ccaron (component uni0302)

  • Dcaron (component uni0302)

  • Ecaron (component uni0302)

  • uni0204 (component gravecomb)

  • uni0204 (component gravecomb)

  • uni0206 (component uni0306)

  • Gcaron (component uni0302)

  • uni0122 (component gravecomb)

  • uni0208 (component gravecomb)

  • uni0208 (component gravecomb)

  • uni020A (component uni0306)

  • uni0136 (component gravecomb)

  • uni013B (component gravecomb)

  • Ncaron (component uni0302)

  • uni0145 (component gravecomb)

  • uni020C (component gravecomb)

  • uni020C (component gravecomb)

  • Ohungarumlaut (component gravecomb)

  • Ohungarumlaut (component gravecomb)

  • uni020E (component uni0306)

  • Rcaron (component uni0302)

  • uni0156 (component gravecomb)

  • uni0210 (component gravecomb)

  • uni0210 (component gravecomb)

  • uni0212 (component uni0306)

  • Scaron (component uni0302)

  • uni0218 (component gravecomb)

  • Tcaron (component uni0302)

  • uni021A (component gravecomb)

  • uni0214 (component gravecomb)

  • uni0214 (component gravecomb)

  • Uhungarumlaut (component gravecomb)

  • Uhungarumlaut (component gravecomb)

  • uni0216 (component uni0306)

  • Zcaron (component uni0302)

  • uni0201 (component gravecomb)

  • uni0201 (component gravecomb)

  • uni0203 (component uni0306)

  • ccaron (component uni0302)

  • d (component b)

  • ecaron (component uni0302)

  • uni0205 (component gravecomb)

  • uni0205 (component gravecomb)

  • uni0207 (component uni0306)

  • uni0259 (component e)

  • gcaron (component uni0302)

  • uni0123 (component gravecomb)

  • uni0209 (component gravecomb)

  • uni0209 (component gravecomb)

  • uni020B (component uni0306)

  • uni0137 (component gravecomb)

  • uni013C (component gravecomb)

  • ncaron (component uni0302)

  • uni0146 (component gravecomb)

  • uni020D (component gravecomb)

  • uni020D (component gravecomb)

  • ohungarumlaut (component gravecomb)

  • ohungarumlaut (component gravecomb)

  • uni020F (component uni0306)

  • rcaron (component uni0302)

  • uni0157 (component gravecomb)

  • uni0211 (component gravecomb)

  • uni0211 (component gravecomb)

  • uni0213 (component uni0306)

  • scaron (component uni0302)

  • uni0219 (component gravecomb)

  • uni021B (component gravecomb)

  • uni0215 (component gravecomb)

  • uni0215 (component gravecomb)

  • uhungarumlaut (component gravecomb)

  • uhungarumlaut (component gravecomb)

  • uni0217 (component uni0306)

  • zcaron (component uni0302)

  • nine (component six)

  • nine.lf (component six)

  • ellipsis (component period)

  • ellipsis (component period)

  • ellipsis (component period)

  • exclamdown (component exclam)

  • questiondown (component question)

  • backslash (component slash)

  • parenright (component parenleft)

  • braceright (component braceleft)

  • bracketright (component bracketleft)

  • quotedblbase (component quoteright)

  • quotedblbase (component quoteright)

  • quotedblleft (component quoteright)

  • quotedblleft (component quoteright)

  • quotedblright (component quoteright)

  • quotedblright (component quoteright)

  • quoteleft (component quoteright)

  • guillemotleft (component guilsinglleft)

  • guillemotleft (component guilsinglleft)

  • guillemotright (component guilsinglleft)

  • guillemotright (component guilsinglleft)

  • guilsinglright (component guilsinglleft)

  • quotedbl (component quotesingle)

  • quotedbl (component quotesingle)

  • divide (component period)

  • divide (component period)

  • greater (component less)

  • lessequal (component greaterequal)

  • approxequal (component asciitilde)

  • approxequal (component asciitilde)

  • perthousand (component uni2070)

  • perthousand (component uni2070)

  • uni030B (component gravecomb)

  • uni030B (component gravecomb)

  • uni030C (component uni0302)

  • uni030F (component gravecomb)

  • uni030F (component gravecomb)

  • uni0311 (component uni0306)

  • uni0312 (component gravecomb)

  • uni0326 (component gravecomb)

  • hungarumlaut (component gravecomb)

  • hungarumlaut (component gravecomb)

  • caron (component uni0302)
    [code: transformed-components]

WARN: Font has old ttfautohint applied?
--- Rationale ---
Check if font has been hinted with an outdated version of ttfautohint.
  • WARN ttfautohint used in font = 1.8.3; latest = 1.8.4; Need to re-run with the newer version! [code: old-ttfa]
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: METADATA.pb: Designers are listed correctly on the Google Fonts catalog?
--- Rationale ---
Google Fonts has a catalog of designers.
This check ensures that the online entries of the catalog can be found based on
the designer names listed on the METADATA.pb file.
It also validates the URLs and file formats are all correctly set.
  • WARN It seems that Coji Morishita is still not listed on the designers catalog. Please submit a photo and a link to a webpage where people can learn more about the work of this designer/typefoundry. [code: profile-not-found]
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:
    Ccedilla (U+00C7), Uogonek (U+0172), ccedilla (U+00E7), periodcentered (U+00B7), uni0163 (U+0163) and uni01EB (U+01EB) [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:
    uni030B (U+030B), uni0324 (U+0324), uni032E (U+032E) and uni0331 (U+0331) [code: mark-chars]
WARN: Check GDEF mark glyph class doesn't have characters that are not marks.
--- Rationale ---
Glyphs in the GDEF mark glyph class become non-spacing and may be repositioned
if they have mark anchors.
Only combining mark glyphs should be in that class. Any non-mark glyph must not
be in that class, in particular spacing glyphs.
  • WARN The following non-mark characters should not be in the GDEF mark glyph class:
    U+00B7, U+00C7, U+00E7, U+0163, U+0172 and U+01EB [code: non-mark-chars]

Summary

💔 ERROR 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 2 8 52 8 148 0
0% 1% 4% 24% 4% 68% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG

@aaronbell
Copy link
Collaborator Author

Updated

M PLUS 1 Code: Version 1.002 added; M PLUS Code Latin: Version 1.002; ttfautohint (v1.8.3) added


9c305a4: [gftools-packager] M PLUS Code Latin: Version 1.002; ttfautohint (v1.8.3) added

a716a14: [gftools-packager] ofl/mpluscodelatin remove METADATA "source". #2587

192e194: [gftools-packager] M PLUS 1 Code: Version 1.002 added

5162e88: [gftools-packager] ofl/mplus1code remove METADATA "source". #2587

@aaronbell
Copy link
Collaborator Author

I've updated these with the decomposeTransformedComponents filter.

@gf-bot
Copy link

gf-bot commented Sep 23, 2021

Fontbakery report

Fontbakery version: 0.8.2

[9] MplusCodeLatin[wdth,wght].ttf
🔥 FAIL: Checking file is named canonically.
--- Rationale ---
A font's filename must be composed in the following manner:
<familyname>-<stylename>.ttf
- Nunito-Regular.ttf,
- Oswald-BoldItalic.ttf
Variable fonts must list the axis tags in alphabetical order in square brackets
and separated by commas:
- Roboto[wdth,wght].ttf
- Familyname-Italic[wght].ttf
  • 🔥 FAIL The file 'MplusCodeLatin[wdth,wght].ttf' must be renamed to 'MPLUSCodeLatin[wdth,wght].ttf' according to the Google Fonts naming policy for variable fonts. [code: bad-varfont-filename]
WARN: Font has old ttfautohint applied?
--- Rationale ---
Check if font has been hinted with an outdated version of ttfautohint.
  • WARN ttfautohint used in font = 1.8.3; latest = 1.8.4; Need to re-run with the newer version! [code: old-ttfa]
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: METADATA.pb: Designers are listed correctly on the Google Fonts catalog?
--- Rationale ---
Google Fonts has a catalog of designers.
This check ensures that the online entries of the catalog can be found based on
the designer names listed on the METADATA.pb file.
It also validates the URLs and file formats are all correctly set.
  • WARN It seems that Coji Morishita is still not listed on the designers catalog. Please submit a photo and a link to a webpage where people can learn more about the work of this designer/typefoundry. [code: profile-not-found]
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:
    Ccedilla (U+00C7), Uogonek (U+0172), ccedilla (U+00E7), periodcentered (U+00B7), uni0163 (U+0163) and uni01EB (U+01EB) [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:
    uni030B (U+030B), uni0324 (U+0324), uni032E (U+032E) and uni0331 (U+0331) [code: mark-chars]
WARN: Check GDEF mark glyph class doesn't have characters that are not marks.
--- Rationale ---
Glyphs in the GDEF mark glyph class become non-spacing and may be repositioned
if they have mark anchors.
Only combining mark glyphs should be in that class. Any non-mark glyph must not
be in that class, in particular spacing glyphs.
  • WARN The following non-mark characters should not be in the GDEF mark glyph class:
    U+00B7, U+00C7, U+00E7, U+0163, U+0172 and U+01EB [code: non-mark-chars]

Summary

💔 ERROR 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 1 8 52 8 149 0
0% 0% 4% 24% 4% 68% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • INFO
  • PASS
  • DEBUG

@RosaWagner
Copy link
Contributor

It looks good to me!
cc @davelab6 to confirm that it's okay to onboard this 2 with vertical metrics different from the CJK ones.

@RosaWagner RosaWagner merged commit d0cbdac into main Sep 30, 2021
@RosaWagner RosaWagner deleted the gftools_packager_mplus_code branch September 30, 2021 15:03
@davelab6
Copy link
Member

Yes, since these are coding fonts, I think its OK

@RosaWagner
Copy link
Contributor

As rod mentioned in #3892 chinese subset has invited itself again.. I thought I checked for it but apparently I didn’t catch it. We need a check for that or to refactor add-font

@aaronbell
Copy link
Collaborator Author

Dave fixed with b58a08e
Thanks Dave!

@RosaWagner
Copy link
Contributor

Ah now that I see it in sandbox… @davelab6 is it actually ok that the latin version has Latin in its name?

@davelab6
Copy link
Member

davelab6 commented Nov 4, 2021

Yes, since Unicode Range provides all the scripts available, we can put scripts in the family name. In this case, the M+ project is well known as a JP project, so adding Latin makes sense.

@davelab6 davelab6 removed the -- Needs manager's opinion from upper level label Nov 4, 2021
@RosaWagner RosaWagner added --- to_production --- Live Font is visible on API and removed --- In sandbox labels Nov 4, 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 II CJK Chinese, Japanese, Korean scripts
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add MPLUS
4 participants