Fix FontForge OpenType Features Ignored by Software

Designing custom typography in FontForge and exporting it only to find that your ligatures, kerning, or alternate glyphs do not work in target applications is a common issue. This problem typically stems from improper script and language tagging, missing OpenType layout tables during export, incorrect lookup configurations, or font caching conflicts within the host operating system. This guide covers the root causes behind ignored OpenType features and how to fix them directly within FontForge and your testing environment.

1. Missing Script and Language System Tags

The most frequent reason software ignores OpenType features is missing metadata. OpenType shaping engines (such as HarfBuzz, DirectWrite, or Core Text) require features to be assigned to specific scripts and languages.

  • Open Element > Font Info > Lookups.
  • Select your lookup and click Edit Metadata.
  • Ensure your lookup is assigned to the correct script (such as latn for Latin) and language system (such as dflt for Default). If a feature is not mapped to dflt or the specific language of the text being typed, the rendering engine will skip the lookup entirely.

2. Exporting Without OpenType Layout Tables

When generating your font file, FontForge allows you to customize which tables are compiled into the binary. If the OpenType substitution (GSUB) and positioning (GPOS) tables are omitted, your features will not exist in the final file.

  • Go to File > Generate Fonts.
  • Click the Options button in the file dialog.
  • Ensure that OpenType is checked.
  • Confirm that options such as Old style kern are unchecked if you rely on modern OpenType kern feature tables, as legacy tables can conflict with modern layout engines.

3. Using Non-Standard Feature Tags

Layout engines only automate features registered with standard four-character OpenType tags.

  • Standard discretionary ligatures must use dlig, standard ligatures must use liga, contextual alternates must use calt, and kerning must use kern.
  • If you create custom or misspelled tags (e.g., naming a ligature lookup custom_liga instead of liga), software will not execute the substitution automatically unless the host program explicitly supports custom feature calls.

4. Application-Level OpenType Defaults

Even if the font is built correctly, many target applications disable advanced OpenType features by default:

  • Web Browsers: Features like liga and kern are typically enabled by default, but discretionary ligatures (dlig) or stylistic sets (ss01) require explicit activation using the CSS property font-feature-settings.
  • Adobe Creative Cloud: InDesign and Illustrator usually enable standard ligatures, but contextual alternates and stylistic sets must be turned on via the OpenType panel.
  • Microsoft Word: Advanced typography features are disabled by default. You must navigate to Font > Advanced > OpenType Features and set ligatures to "All" and enable kerning.

5. Operating System Font Caching

Operating systems (especially Windows and macOS) aggressively cache font files. If you export a font, test it, find an error, and re-export it under the exact same family name and version, the operating system may continue serving the cached version that lacked the OpenType tables.

  • Change the font's Version number under Element > Font Info > TTF Names before re-exporting.
  • Alternatively, test your exported .otf or .ttf files in a private or incognito web browser window using a dedicated HTML test page, which bypasses the system-level font manager cache.