Naming a font is pretty difficult, and not only because of the need of originalty and creativity. Google Fonts expects font names to comply with basic SEO and tooling limitations.
For example, the hyphen is used to separate the family name from the style name in the file path; adding a hyphen to your family name may cause the QA tool to think that your style name is unconventional, and therefore fail the font. It will also break the file naming convention put in place across the entire collection (no foundy likes that). And finally, a user searching for the font in Google Fonts may not find it if they forget about the hyphen.
Any exception to these rules shall be discussed and validated prior to onboarding, and listed in Fontbakery’s exceptions lists to avoid FAILS.
Every new version onboarded to GF should have an increased version number compared to the precedent. This is explained in the Main contribution cases chapter under the Font Upgrades section.
Versioning is based on semver, apart from we use MAJOR.SIGNIFICANTMINORPATCH
, instead of MAJOR.MINOR.PATCH
.
Examples:
If a breaking change is made e.g. converting a static font family to a variable font family, the MAJOR must be incremented by 1, and the others reset, e.g.:
Current 1.230
, new 2.000
If a new character set is inserted, SIGNIFICANT should be incremented, e.g.:
Current 1.230
, new 1.330
If a few new glyphs are added, MINOR should be incremented, e.g.:
Current 1.230
, new 1.240
If a name table record is updated such as the copyright string, PATCH should be incremented, e.g.:
Current 1.230
, new 1.231
fsType is one of the parameters of the OS/2
table in which the embeding permissions of a font are declared. For Libre Fonts it should be set to bit 0
(Installable embedding).
This is how it should look like in the OS/2 table: <fsType value="00000000 00000000"/>
If you are using the Glyphs font editor, create a new custom parameter called “fsType” in the “Font” tab of the Font Info pane. Change the Embedding drop-down to “Installable” and leave the “Subsetting Forbidden” checkbox unchecked.
Please read the following pages about vertical metrics for setting vertical metrics.
These font info parameters are not optional and should follow the same scheme within the entire GF library.
The font must contain a copyright string within the name table with the following format:
Copyright { year } The { family } Project Authors ({ git_url })
E.g. Copyright 2011 The Montserrat Project Authors (https://github.com/JulietaUla/Montserrat)
If you are using the Glyphs font editor, add a “Copyright” entry under the “Font” tab of the Font Info panel.
The first line of the OFL.txt file should be identical to the font copyright string detailed above.
The license string must be the same for all GF font projects:
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
If you are using the Glyphs font editor, add this string to a “License” entry in the “Font” tab of the Font Info panel.
The license URL must be the same for all GF fonts projects:
https://scripts.sil.org/OFL
If you are using the Glyphs font editor, add this string to a “License URL” entry in the “Font” tab of the Font Info panel.
Typically libre fonts are not subject to any trademarks.
If you do not trademark your project name:
If you do trademark your project name:
License your trademarks for redistribution in a TRADEMARKS.md
file.
Example:
Font Name is a trademark of Company Name.
Explicitly permit Google to use the trademarks. Email fonts@google.com with an email like this:
Dear Google Fonts
We would like our font project “Font Family Name” to be included in Google Fonts and other Google products.
I hereby grant permission in perpetuity to Google LLC and affiliates to use the following trademarks, and Reserved Font Names declared in the SIL Open Font License notices, for the following font family names:
Font Family Name Font Family Name Mono Font Family Name Sans
Best regards,
Firstname Othername
Job Title, Organization
We require the post table isFixedPitch
to be set and the OS/2 panose
table to have OS/2.panose.bProportion
(bit 4) set correctly. If either of these is set incorrectly, users may get fallback glyphs that are not monospaced if they type a character that doesn’t exist in the font.
post.isFixedPitch
to 1OS/2.panose.bFamilyType
is 2 (Latin Text), set OS/2.panose.bProportion
to 9.OS/2.panose.bFamilyType
is 3 (Latin Script), set OS/2.panose.bProportion
to 3.OS/2.panose.bFamilyType
is 5 (Latin Picture), set OS/2.panose.bProportion
to 3.OS/2.panose.bFamilyType
to, use 2 for “normal” fonts.OS/2.panose.bFamilyType
is 4, you do not need to worry about OS/2.panose.bProportion
.Developers can set these automatically by using the following gftools command: gftools fix-isfixedpitch
GF Glyphsets provides the glyph set definition standards that Google Fonts fonts must adhere to.
The structure of these sets is based on a modular scheme that allows the use of different blocks of information to be combined to build sets of glyphs with different levels of complexity according to the needs of each project.
This system aims to give enough flexibility to define the intended scope of each project as well as a way to better assess the font development status and quality analysis.
Currently, the most used ones are:
Find all the glyphsets definition and filter lists in the Glyphsets repository. Be aware that these glyphsets are still a work in progress and any advise or recommendation can be submitted using the Glyphsets’ issue tracker.
The Google Fonts API currently has limited support for some “required” or “always on” OpenType features, such as number sets like Tabular Numbers (tnum
).
The default numerals (ASCII 0 to 9) should be proportional, and complemented by a Tabular Numbers (tnum
) feature.
The Google Fonts API currently does not support requesting the inclusion of optional (also known as discretionary, or opt-in) OpenType Features, such as Stylistic Sets (salt
) or Small Caps (smcp
, c2sc
).
Instead the glyphs contained in these features may be published as a separate family, as follows:
The vertical metrics should be the same in each sibling family, and the “Use of Typo Metrics” flag should be set. Please refer to the Vertical Metrics section for further details.
FamilyNameSC-Style.ttf
E.g. CormorantSC-Regular.ttf
FamilyNameSC-StyleName.ttf
E.g. CormorantSC-Infant.ttf