How to Create Swash Glyphs in FontForge

This guide provides a straightforward walkthrough on creating swash glyph variants in FontForge and linking them using OpenType features. You will learn how to design the extended decorative glyph, apply standard naming conventions, configure the OpenType swsh substitution lookup, and export a fully functional font compatible with design software that supports swash alternates.

1. Design the Swash Glyph

  1. Open your font project in FontForge.
  2. Scroll to an empty, unencoded glyph slot at the bottom of the font view, or go to Encoding > Add Encoding Slots to create new spaces.
  3. Double-click the empty slot to open the glyph drawing window.
  4. Draw your swash variant from scratch, or copy the base character (e.g., standard uppercase "R"), paste it into the new slot, and extend the tails, serifs, or flourishes into your desired swash design.

2. Rename the Variant Glyph

OpenType features rely on systematic glyph names to manage substitutions.

  1. In the font view, select your newly drawn swash glyph.

  2. Go to Element > Glyph Info (or press Ctrl+Shift+I / Cmd+Shift+I).

  3. Under the Glyph tab, enter a name following standard OpenType suffix conventions. For a swash variant of R, name it:

    R.swsh

    (Alternatively, R.swash is acceptable, but .swsh aligns directly with the OpenType feature tag).

  4. Click OK.

3. Set Up the OpenType Swash Feature

To make applications recognize the glyph as an alternate, you must add a GSUB (Glyph Substitution) table.

  1. Navigate to Element > Font Info.
  2. In the left sidebar, select Lookups.
  3. Click the GSUB tab at the top.
  4. Click Add Lookup.
  5. Configure the lookup parameters:
    • Type: Select Single Substitution.
    • Feature: Select or type swsh (Swash).
    • Leave flags at their defaults unless your design requires specific right-to-left or mark filtering.
  6. Click OK.

4. Create the Lookup Subtable and Map Glyphs

  1. Highlight the lookup you just created in the list and click Add Subtable.
  2. Accept the default subtable name and click OK.
  3. In the subtable editor window, select the Populate button to automatically detect pairs if you used standard suffix naming (such as R and R.swsh).
  4. If FontForge does not automatically populate the list, enter the mappings manually:
    • Base Glyph Name: R
    • Replacement Glyph Name: R.swsh
  5. Click OK to close the subtable editor, then click OK to close the Font Info dialog.

5. Test and Generate the Font

  1. Open the metrics window via Metrics > New Metrics Window.
  2. Type the base character you modified.
  3. Go to the Features menu in the metrics window and ensure the swsh feature toggle switches the base glyph to your swash design.
  4. Once verified, go to File > Generate Fonts, choose OpenType (CFF) or TrueType, and export your finished font.