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.

  1. Open your font project in FontForge.
  2. Scroll to an unassigned glyph slot, or click Encoding > Add Encoding Slots to create new spaces at the end of your font.
  3. Select the empty slot, right-click, and choose Glyph Info.
  4. 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, or ampersand.ss01.
  5. 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.

  1. Go to Element > Font Info (or press Ctrl+Shift+F / Cmd+Shift+F).
  2. Select the Lookups tab in the left-hand sidebar.
  3. Click the GSUB (Glyph Substitution) sub-tab at the top.
  4. Click Add Lookup.
  5. Set the Type dropdown to Single Substitution.
  6. In the Feature column, click the dropdown or type the desired set tag (e.g., ss01 for Stylistic Set 1).
  7. Under the script/language list, click New to select your target scripts (typically latn with dflt language).
  8. 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.

  1. Select the newly created lookup and click Add Subtable.
  2. Accept the default name and click OK.
  3. 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.
  4. Click OK to close the subtable, then click OK again to apply the changes in Font Info.

Step 4: Generate and Test the Font

  1. Go to File > Generate Fonts.
  2. Select OpenType (CFF) or TrueType as the output format.
  3. Save the font file.
  4. 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;
}