How to Create Stylistic Sets in FontForge
Stylistic sets are OpenType features that allow type designers to package alternate glyph designs—such as a single-story "a" or a decorative ampersand—into toggleable groups within a font. This guide explains the function of stylistic sets and provides a step-by-step walkthrough for creating alternate glyphs, configuring substitution lookups, and compiling stylistic sets using the open-source FontForge font editor.
What Are Stylistic Sets?
In OpenType typography, stylistic sets are identified by
four-character feature tags ranging from ss01 to
ss20. They allow users to activate predefined groups of
alternate glyphs in design software (like Adobe InDesign and
Illustrator) or via CSS on the web (using
font-feature-settings: "ss01"). Instead of replacing one
character at a time, a stylistic set can alter multiple related glyphs
simultaneously to shift the overall aesthetic tone of the typeface.
Step 1: Create the Alternate Glyphs
Before configuring the OpenType feature, you must draw or import the alternate glyphs into FontForge.
- Open your font project in FontForge.
- Scroll to an unassigned glyph slot, or click Encoding > Add Encoding Slots to create new spaces at the end of your font.
- Select the empty slot, right-click, and choose Glyph Info.
- Set the Glyph Name to follow standard naming
conventions: use the base character name followed by a dot suffix, such
as
a.ss01,g.ss01, orampersand.ss01. - Draw or paste your alternate artwork into this new glyph slot.
Step 2: Create a Stylistic Set Lookup
OpenType features rely on lookup tables to replace base glyphs with alternates.
- Go to Element > Font Info (or press
Ctrl+Shift+F/Cmd+Shift+F). - Select the Lookups tab in the left-hand sidebar.
- Click the GSUB (Glyph Substitution) sub-tab at the top.
- Click Add Lookup.
- Set the Type dropdown to Single Substitution.
- In the Feature column, click the dropdown or type
the desired set tag (e.g.,
ss01for Stylistic Set 1). - Under the script/language list, click New to select
your target scripts (typically
latnwithdfltlanguage). - Click OK to create the lookup.
Step 3: Add a Subtable and Map Glyphs
Once the lookup is registered, you must link the default characters to their alternate counterparts.
- Select the newly created lookup and click Add Subtable.
- Accept the default name and click OK.
- In the subtable configuration window, choose how to map the glyphs:
- Manual Entry: In the mapping list, enter the base
glyph name in the first column (e.g.,
a) and the alternate glyph name in the replacement column (e.g.,a.ss01). - Automated Mapping: If you used standard naming
conventions (like
.ss01), click the Populate button. FontForge will automatically detect pairs sharing the suffix and fill in the substitution fields.
- Manual Entry: In the mapping list, enter the base
glyph name in the first column (e.g.,
- Click OK to close the subtable, then click OK again to apply the changes in Font Info.
Step 4: Generate and Test the Font
- Go to File > Generate Fonts.
- Select OpenType (CFF) or TrueType as the output format.
- Save the font file.
- Test the generated font in desktop design software supporting OpenType features, or embed it in a web page and activate the set using CSS:
.custom-style {
font-feature-settings: "ss01" 1;
}