Single vs Multiple Substitution in FontForge

This article explains the fundamental differences between single substitution and multiple substitution in FontForge's OpenType layout tables. While both mechanisms modify how glyphs are displayed during text layout, they serve opposite structural purposes. You will learn how each substitution type works, their underlying OpenType specifications, and the practical font development scenarios where each should be used.

What is Single Substitution?

Single substitution (OpenType Glyph Substitution lookup type 1, or GSUB Type 1) replaces an individual glyph with another single glyph. It is a strict one-to-one mapping mechanism.

In FontForge, single substitutions are configured in the Lookups section of the Font Info dialog (Element > Font Info > Lookups). This lookup type does not change the total number of characters on the line; it merely alters the visual design of the specific character.

Common use cases for single substitution include:

  • Small Capitals (smcp): Replacing standard lowercase glyphs with small capital forms (e.g., a → a.sc).
  • Number Variants (tnum, onum): Swapping proportional figures for tabular figures, or lining figures for oldstyle figures.
  • Stylistic Alternates (salt / ss01-ss20): Swapping standard letterforms with decorative swashes or alternate character designs.

What is Multiple Substitution?

Multiple substitution (OpenType Glyph Substitution lookup type 2, or GSUB Type 2) replaces a single glyph with an ordered sequence of two or more glyphs. It is a one-to-many mapping mechanism.

In FontForge, setting up a multiple substitution involves mapping one source glyph to a space-separated list of target glyphs. The rendering engine decomposes the single glyph and renders the defined components sequentially, increasing the total glyph count in the text run.

Common use cases for multiple substitution include:

  • Ligature Decomposition: Breaking down a pre-composed ligature glyph into its constituent single glyphs (e.g., ffi → f + f + i).
  • Typographic Expansions: Expanding certain abbreviations, symbols, or phonetic signs into distinct structural components.
  • Complex Scripts: Rendering individual base characters that must display as a multi-component visual sequence in scripts such as Arabic, Devanagari, or Thai.

Key Differences

  • Mapping Ratio: Single substitution strictly maps one glyph to one glyph (1:1). Multiple substitution maps one glyph to a sequence of multiple glyphs (1:N).
  • Glyph Count: Single substitutions preserve the total glyph count and horizontal string length of the original text. Multiple substitutions increase the glyph count.
  • OpenType Lookup Types: Single substitution maps to GSUB Type 1, whereas multiple substitution maps to GSUB Type 2.
  • Application Scope: Single substitution is the most widely supported and commonly used feature for stylistic variants. Multiple substitution is specialized, primarily used for linguistic decomposition, fallback scenarios, or complex non-Latin scripts.