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:

  1. Navigate to Element > Validate Font.
  2. Review the output to ensure there are no warnings regarding missing name table entries or invalid PostScript name formatting.
  3. When navigating to File > Generate Fonts, ensure that OpenType (CFF) or TrueType output is selected so that FontForge builds the proper name table structure adhering to the specified parameters.