How to Create Ligature Substitutions in FontForge

This guide explains how to create standard ligature substitutions (such as "fi" and "fl") in FontForge using OpenType features. You will learn how to design the combined glyph, configure an OpenType lookup table using the standard ligature (liga) feature tag, map the individual characters to the new glyph, and verify that the substitution functions properly.

Step 1: Create the Ligature Glyph

  1. Open your font project in FontForge.
  2. Navigate to an empty glyph slot or go to Encoding > Add Encoding Slots if you need extra room.
  3. Select the empty slot, right-click, and choose Glyph Info.
  4. In the Glyph Name field, assign a standard ligature name. By convention, ligatures are named by joining the component names with an underscore (for example, f_i for an "fi" ligature or f_f_l for an "ffl" ligature).
  5. Click OK.
  6. Double-click the slot to open the glyph canvas and draw or paste your combined ligature artwork. Ensure the advance width and side bearings are set correctly.

Step 2: Set Up the OpenType Lookup

  1. Go to the top menu and select Element > Font Info.
  2. In the sidebar of the Font Info dialog, click on Lookups.
  3. Select the GSUB (Glyph Substitution) tab at the top.
  4. Click Add Lookup.
  5. Set the Type dropdown to Ligature Substitution.
  6. In the feature list, select or type liga (Standard Ligatures).
  7. Ensure the lookup is set for the appropriate script and language systems (typically latn for Latin and dflt for default).
  8. Click OK to create the lookup.

Step 3: Add a Subtable

  1. With the newly created lookup selected in the Lookups list, click Add Subtable.
  2. Accept the default name generated by FontForge or provide your own, then click OK.
  3. A subtable editing window will appear.

Step 4: Map the Component Glyphs

  1. In the subtable dialog, locate the list of ligature mappings.
  2. In the Ligature Glyph Name field, enter the name of your ligature glyph (e.g., f_i).
  3. In the Source Glyphs field, enter the individual components separated by spaces (e.g., f i).
  4. Repeat this process on new rows for any additional ligatures you wish to include in this lookup.
  5. Click OK to close the subtable dialog, then click OK in the Font Info dialog to save your changes.

Step 5: Test the Substitution

  1. Open the Metrics window by going to Metrics > New Metrics Window.
  2. Type the individual characters (such as f followed by i).
  3. Toggle the OpenType feature view to ensure that the individual letters automatically collapse into your custom ligature glyph.
  4. If the glyphs do not substitute, return to the Lookups panel to verify that the glyph names in the subtable match the exact names of your source and target glyphs.