Google Fonts Guide

Overall font files requirements

🦥 The following guidelines apply to all fonts, regardless of their format. Then, depending on the format, we have different specifications for static and variable fonts. Please read the guidelines for static fonts and the guidelines for variable fonts. It is recommended to read the guidelines to add or upgrade font in Google Fonts before continuing.

These font info parameters are not optional and should follow the same scheme within the entire GF library.

Trademarks

Typically libre fonts are not subject to any trademarks.

If you do not trademark your project name:

If you do trademark your project name:

Font versioning

Every new version onboarded to GF should have an increased version number compared to the precedent. This is explained in the Main contribution cases.

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

Font Embedding (fsType)

fsType parameter should be set to 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.

Font Vertical Metrics

Please read the following pages about vertical metrics for setting vertical metrics.

Monospace fonts

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.

Developers can set these automatically by using the following gftools command: gftools fix-isfixedpitch

Glyphsets

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.

Stylistic Sets

The Google Fonts API currently does not support the inclusion of OpenType Stylistic Set features. Fonts that absolutely need them need to be published as a separate family with the stylistic feature added to the family name.