How to Create Historical Ligatures in FontForge

Creating historical ligatures in FontForge allows modern OpenType fonts to include archaic typographic connections, such as the long s combinations (ſi, ſt) or ct ligatures, accessed via the hlig feature tag. This guide explains how to design the ligature glyph, configure an OpenType Ligature Substitution lookup, map the source components to your target glyph, and export the font for use in modern design applications.

1. Design and Name the Ligature Glyph

First, add the glyph slot for your historical ligature:

  1. Open your project in FontForge.
  2. Go to Encoding > Add Encoding Slots if you do not have an empty slot available, or locate an unused glyph slot.
  3. Double-click the slot to open the glyph drawing window and draw or paste your combined ligature shape (e.g., the historical "ct" or "ſt").
  4. Open the glyph properties by going to Element > Glyph Info.
  5. Assign a standard semantic name to the glyph, such as c_t or longs_t. Click OK.

2. Create the Historical Ligatures Lookup

FontForge uses OpenType tables to tell text engines when to replace standard letter combinations with your custom glyph:

  1. Navigate to Element > Font Info from the main menu.
  2. Select the Lookups tab on the left sidebar.
  3. Ensure the GSUB (Glyph Substitution) sub-tab is active.
  4. Click Add Lookup.
  5. In the Type dropdown, select Ligature Substitution.
  6. In the Feature column, select or type hlig (Historical Ligatures).
  7. Keep the default lookup flags or adjust them as needed for right-to-left or mark-filtering needs, then click OK.

3. Add and Populate the Subtable

After establishing the lookup, you must define the specific character mapping:

  1. Select the newly created hlig lookup line in the list.
  2. Click Add Subtable. Accept the default name and click OK.
  3. In the subtable editor, click the Add or Populate button to map your glyphs:
    • Ligature Glyph Name: Enter the name of your target glyph (e.g., longs_t).
    • Source Glyph Names: Enter the sequence of glyphs that will trigger the ligature, separated by spaces (e.g., longs t or s t).
  4. Repeat this step for each historical ligature you wish to include within the feature.
  5. Click OK on the subtable window, and then click OK in the Font Info window to save your changes.

4. Test the Ligature in the Metrics Window

Before exporting, confirm that the OpenType feature executes properly:

  1. Open the metrics view by going to Metrics > New Metrics Window.
  2. Type the source character sequence (e.g., st).
  3. Click on the Features menu inside the Metrics window and enable Historical Ligatures (hlig).
  4. The individual glyphs should automatically snap into your custom ligature glyph.

5. Generate the Font

To apply the changes permanently, go to File > Generate Fonts. Choose an OpenType format such as OpenType (CFF) (.otf) or TrueType (.ttf) to ensure full support for the hlig OpenType layout table.