Google Fonts Guide TL;DR
🦉 This document aims to specify all the requirements to contribute to Google Fonts. It ranges from the general knowledge required to contextualize the what and why of some of the requirements and the specifics regarding technical aspects with some suggestions on how to comply with them. Therefore, it covers different levels of information for both newcomers and more experienced contributors. If you are already familiar with some of the concepts, please feel free to jump to the other bits that you may be looking for.
Introduction
-
Libre Fonts Culture
You are contributing to an open-source based platform. It’s important for you to get familiar at least with the basics about Libre Fonts Culture
-
Typography & Fonts
Google Fonts expect font developers to understand the following:
- Overall type design knowledge.
- Basic understanding of how fonts and OpenType Specification works (skim read! focus on what each table does).
- Proficiency in a fully featured font editor such as Fontlab 7, Glyphsapp, Robofont, or Fontforge; not a toy editor like a “handwriting page scan to font” tool fix.
- Tools & Dependencies needed
-
GitHub the required Version Control System (VCS)
Since we only release Open Source fonts, we expect projects to be kept in a VSC like GitHub. Every family we release must have its own upstream GitHub repository (or similar).
Production Requirements
Fonts Requirements
-
New fonts
Includes:
- Originality
- OFL license
- No RFN
- CLA
- Font family name conditions
- Minimum Glyphsets required
- New fonts VM
- Following the Overall font files requirements
- Following the Production Requirements
- Fonts Upgrades
- matching family + stylename
- Version number increased
- No visual regressions
- matching encoded glyphs
- same instances included
- same glyphs visual thickness + width
- Line length equivalence
- Line height (interline) equivalence - Link to upgrading fonts VM
- Same render quality (manual hinting re-applied)
- No contributions from forks
- Overall fonts files requirements
- binaries must be in TTF format
- Copyright & license strings
- Font versioning
- fsType
- Vertical Metrics
- General VM schema
- VM consistency across family + sibling families
- New Fonts VM
- Upgrading fonts VM
- fsSelection / Use of Typo Metris
- CJK VM
- Monospaced Fonts
- Glyphsets
- Static fonts specifics
- Supported Styles
- Style Linking
- Unsupported styles
- Static font filenames
- Single weight families
- Hinting
- Variable Fonts specifics
- New Vs. Upgrading static to a VF
- VF filenames
- VF (zero) origin
- Supported Axes
- Unsupported axes
- Axis registry mention
- Designspace
- Axis Mapping
- Avar table
- fvar instances
- Stat table
- Name-table specific entries required
- Instantiated Static Fonts
- VF Hinting
- Font Mastering (~to do)
- Refining your typeface
- Spacing
- Kerning
- Outlines compatibility + interpolation
- Open Type features
- Script specific guidance
- Outline Quality
- “Rubric” (to do)
Onboarding process