OpenType Name Table Requirements in FontForge
Configuring a valid OpenType font requires meeting the structural
naming standards defined by the OpenType specification to ensure
compatibility across operating systems, design applications, and web
browsers. In FontForge, these values are managed primarily through the
font metadata dialogs and written directly to the font's
name table upon export. This guide details the mandatory
Name IDs required for an OpenType name table to pass
validation in FontForge, explains what each field represents, and
outlines the formatting rules necessary for cross-platform
compatibility.
Mandatory Name IDs in the OpenType Specification
The OpenType specification requires six primary Name IDs (IDs 1 through 6) for any valid font. When generating an OpenType font (.otf or .ttf) in FontForge, these fields must be present and correctly formatted:
- Name ID 1: Font Family Name
The family name used to group related styles together (e.g., "MyFont"). This is the name displayed in standard font menus. - Name ID 2: Font Subfamily Name
The style variant of the font within the family (e.g., "Regular", "Bold", "Italic", or "Bold Italic"). Standard 4-style families rely heavily on this field for style linking. - Name ID 3: Unique Font Identifier
A unique string that identifies this specific build of the font. It often combines the manufacturer/creator, font name, and version (e.g.,1.000;NONE;MyFont-Regular). FontForge can auto-generate this value based on your settings. - Name ID 4: Full Font Name
The complete human-readable name of the font, typically formed by concatenating the Family Name and Subfamily Name (e.g., "MyFont Regular"). An exception applies when the subfamily is "Regular," where some implementations use only the family name, but FontForge usually combines them. - Name ID 5: Version String
A human-readable version string indicating the release version of the font file. To pass validation, it must begin with the word "Version " followed by the version number and build metadata (e.g.,Version 1.000;build 001). - Name ID 6: PostScript Name
The technical name used by PostScript interpreters, PDF generators, and system font caches. This name must strictly contain only printable ASCII characters excluding spaces, brackets, parentheses, slashes, and percent signs. It must not exceed 63 characters (e.g.,MyFont-Regular).
Configuring Required Fields in FontForge
FontForge divides these required fields between two main sections in the Element > Font Info menu:
1. The "PS Names" Panel
FontForge maps several core metadata fields directly from the
PS Names tab into the generated name
table:
- Fontname: Populates Name ID 6 (PostScript Name). Ensure this contains no spaces.
- Family Name: Populates Name ID 1 (Font Family Name).
- Weight: Informs the style weight and helps populate Name ID 2 (Subfamily Name).
- Version: Automatically formatted to create the required string for Name ID 5.
2. The "TTF Names" Panel
The TTF Names tab provides direct access to the raw
entries of the OpenType name table for both Macintosh and
Windows platforms:
- FontForge automatically synchronizes the entries in this panel with the fields set in the "PS Names" panel.
- If any of the required IDs (1 through 6) are missing, click Add or edit existing entries to ensure platforms targeting both Windows (Unicode BMP) and Macintosh (Roman) contain valid strings.
- For typographic font families containing more than the standard four styles (Regular, Italic, Bold, Bold Italic), Name ID 16 (Typographic Family Name) and Name ID 17 (Typographic Subfamily Name) should also be defined to prevent style collision in modern applications.
Validation and Export Checks
Before generating the final font file, verify your metadata using FontForge's built-in validator:
- Navigate to Element > Validate Font.
- Review the output to ensure there are no warnings regarding missing
nametable entries or invalid PostScript name formatting. - When navigating to File > Generate Fonts, ensure
that OpenType (CFF) or TrueType output is selected so that FontForge
builds the proper
nametable structure adhering to the specified parameters.