FontCreator Tutorials
Enrich Your Fonts with OpenType Features
written by Erwin Denissen, published June 26, 2026
You'll need: FontCreator (Windows and macOS), a font with its base characters drawn, and the extra glyphs (ligatures, alternates, swashes) you want to wire up.
A font can be so much more than just a bunch of characters. To enrich your fonts with OpenType features you add gems like swashes, ligatures, and stylistic sets — and in this font editor most of them are generated for you, automatically, from the names you give your glyphs. This tutorial is not about using fonts; it's about how font designers add these layout features, which can add a real boost to your font's appeal.
Nowadays all professional fonts come with OpenType layout features. We'll cover the most common and popular substitution features:
- Standard Ligatures
- Stylistic Sets
- Slashed Zero
- Alternate Figures
- Swashes
- Contextual Alternates
These features all substitute one or more characters with a replacement. We won't discuss positioning features (kerning and mark attachment) here — those are covered in the spacing, kerning, and anchors tutorials.
With FontCreator, every feature on the list except contextual alternates can be added automatically. The one thing you have to get right is glyph naming: add the extra glyphs and name them according to FontCreator's glyph name convention. The feature generator reads those names and their suffixes to decide which lookups to build.
Generate features from glyph names
The whole workflow hinges on one idea: a variant glyph carries the name of the original character plus a feature suffix. A stylistic-set-4 variant of g is named g.ss04; a swash A is A.swsh; an old-style zero is zero.onum. FontCreator scans for these suffixes and wires up the right lookups in the right features.
To run the generator:
- Open the OpenType Designer (from the font's toolbar or menu).
- Click the first icon in the upper-left corner (Generate features) to open the Generate and Update OpenType Features window.
- Tick the features you want to generate and/or update, and click OK.
The Generate and Update OpenType Features window with feature checkboxes
Note: Generated lookups and classes are named with a script prefix — for example latn_liga for standard Latin ligatures. Greek and Cyrillic characters are grouped with Latin (latn). Unless noted otherwise, automatic generation is limited to Latin, Greek, and Cyrillic scripts.
Watch out: When you update features, the existing generated lookups and classes are deleted and rebuilt. If you write custom features by hand, keep them separate from the generated ones so an update doesn't wipe your work.
Below are the glyph names required per feature.
Standard Ligatures (liga)
Use this feature for letter combinations that look better as a single custom-designed glyph, such as fi, fl, and ffl. They improve the appearance of letters that would otherwise overlap. Applications process liga by default, but the user can switch it off.
A standard fi ligature shown next to the separate f and i
FontCreator instructions: the common ligatures (ff, fi, fl, ffi, ffl) are detected automatically, so you don't have to do anything for those. To add an extra ligature, use the ligature name convention with a .liga suffix. For a three-character ligature of "f f b", name the glyph f_f_b.liga.
Note: If a ligature should be formed all the time and not be switchable by the user, define it in the Required Ligatures (rlig) feature instead of liga.
Stylistic Sets (ss01–ss20)
There are 20 stylistic-set features. Each holds a set of stylistic variant glyphs for part of the character set — for example closed alternatives for open letters.
A row of letters shown in their default and stylistic-set variants
FontCreator instructions: give the variant the name of the original character plus the matching set suffix. A variant of g for stylistic set 4 is named g.ss04. FontCreator also supports feature parameters for stylistic sets, so you can give each set a friendly name that shows up in applications.
Tip: Stylistic Alternates (salt) links to the same lookup as stylistic set 01, so a .ss01 set automatically feeds salt too. Add .salt glyphs only if you want an additional, separate alternates lookup.
Slashed Zero (zero)
This one is easy — it needs a single extra glyph. It lets the user replace the default zero with an alternative form, typically with a diagonal slash through the counter so 0 (zero) is easy to tell apart from O (capital O).
A slashed zero beside the default zero
FontCreator instructions: name the slashed zero zero.zero.
Alternate Figures (onum, tnum, lnum, pnum)
We highly recommend adding several variants of the digits, because some users will only choose fonts that come with alternate figures. Tabular figures matter most for financial and research documents; old-style figures suit brochures and advertisements because they're designed to read more like lowercase letters.
Lining, old-style, tabular and proportional digits compared
FontCreator instructions: add the matching suffix to each digit variant — .onum for old-style figures (e.g. zero.onum), .tnum for tabular figures (e.g. zero.tnum), .lnum for lining figures, and .pnum for proportional figures. You only need a feature when its style isn't the default; if your default digits are already lining and tabular, there's nothing to add for lnum/tnum. Suffixes can be combined when styles overlap — for example zero.onum.tnum for old-style tabular figures.
Tip: Need fractions too? FontCreator can generate the frac feature from your digits plus slash/fraction (and optional .numr/.dnom variants). See the Fractions tutorial.
Swashes (swsh)
This feature lets the user replace default characters with decorative swash glyphs. You can provide more than one swash alternate for a given character.
A capital letter shown with one or more swash alternates
FontCreator instructions: add the .swsh suffix to each decorative glyph. If you have more than one swash for the same character, add a further descriptive suffix after .swsh (the same approach used for character variants).
Contextual Alternates (calt)
The last feature is more complex because it adds smart substitutions — replacements that depend on which characters come before and/or after the character being considered. For example, you might use an alternative l when it is preceded by another l. Unlike the features above, calt needs two manual steps; it isn't generated from a suffix.
- Add a substitution lookup (name it
mirror) with one item:l -> l.mirrored.
> [Screenshot: A single substitution lookup named "mirror" mapping l to l.mirrored] > Alt: A single glyph-substitution lookup in the FontCreator OpenType Designer mapping l to l.mirrored.
- Add a chained context substitution lookup to the Contextual Alternates feature with this item: Backtrack
l, Inputl, and attach the substitution tablemirrorto it.
> [Screenshot: A chained context substitution with backtrack l, input l, referencing the mirror lookup] > Alt: A chained context substitution lookup in FontCreator referencing the mirror substitution table.
Tip: Use the interactive proofing tool to confirm calt fired exactly where you expected and nowhere else.
Test your features
With FontCreator it's easy to add advanced OpenType layout features. But not every application fully supports every feature, so test your fonts and tell your customers where each feature works.
Illustrator, InDesign, CorelDRAW, and Affinity Designer support all the substitution features shown here. Word 2010 and higher support almost all of them (no support for slashed zero and swashes yet), reachable via Format → Font → Advanced.
An application's advanced typography panel with OpenType feature toggles
Inside FontCreator, test as you go with the OpenType Designer's preview area (type text, or a slash followed by a glyph name) and confirm each feature in the proofing window.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| A feature isn't generated | Variant glyph misnamed or missing its suffix | Follow the glyph name convention exactly (e.g. g.ss04, zero.onum) and re-run Generate features |
| Custom lookups disappeared after generating | Update deletes and rebuilds generated lookups | Keep hand-written features separate from the generated set |
| Ligatures don't apply | Wrong suffix, or liga switched off in the app | Name extra ligatures x_y.liga; enable ligatures in the application |
| Swash/slashed zero not working in Word | Word doesn't support swsh/zero | Test in Illustrator, InDesign, CorelDRAW or Affinity instead |
| Contextual alternate never fires | calt not wired, or backtrack/input wrong | Add the mirror lookup and a chained context substitution; verify in proofing |
| Stylistic set has no name in apps | Feature parameters not set | Add a feature-parameter name to the set in the OpenType Designer |
Frequently asked questions
How do I add OpenType features in FontCreator automatically? Add and correctly name your variant glyphs (original character name plus a feature suffix such as .ss04, .swsh, .onum), open the OpenType Designer, click the first toolbar icon to open Generate and Update OpenType Features, tick the features you want, and click OK. FontCreator reads the suffixes and builds the lookups and classes for you.
Which features can't be generated automatically? Contextual alternates (calt) require two manual steps — a substitution lookup plus a chained context substitution — because the replacement depends on surrounding characters rather than on a glyph suffix.
Why did my custom feature code vanish after I regenerated features? Updating generated features deletes and rebuilds the generated lookups and classes. Always keep features you write by hand separate from the generated set so an update can't overwrite them.
Do these features work in every application? No. Illustrator, InDesign, CorelDRAW and Affinity Designer support all the substitutions shown here; Word 2010+ supports most but not slashed zero or swashes. Always test and document where your features work.
What to read next
- Glyph Name Convention — the naming rules every automatic feature depends on.
- OpenType Layout Features Unleashed — use interactive proofing to see exactly which feature and lookup shaped your text.
- Fractions — generate the
fracfeature from your digits and slash. - Font Inspection — catch missing glyphs and naming problems before you ship.