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
latnfor Latin) and language system (such asdfltfor Default). If a feature is not mapped todfltor 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
kernfeature 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 useliga, contextual alternates must usecalt, and kerning must usekern. - If you create custom or misspelled tags (e.g., naming a ligature
lookup
custom_ligainstead ofliga), 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
ligaandkernare typically enabled by default, but discretionary ligatures (dlig) or stylistic sets (ss01) require explicit activation using the CSS propertyfont-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
.otfor.ttffiles in a private or incognito web browser window using a dedicated HTML test page, which bypasses the system-level font manager cache.