How to Add Small Caps in FontForge

Adding small caps to a font in FontForge involves two primary processes: designing the reduced-height capital glyphs and configuring the OpenType layout substitutions so design software can display them automatically. By creating uniquely named glyphs (such as a.sc) and binding them to the smcp (Small Capitals) and c2sc (Capitals to Small Capitals) lookup tables, you can integrate native, professional small capitals into any TrueType or OpenType font.

Step 1: Create the Small Cap Glyphs

True small caps are not merely scaled-down uppercase letters; they require proportional stroke weight adjustments to match the visual weight of standard lowercase letters.

  1. Open your font file in FontForge.
  2. Select Encoding > Add Encoding Slots... from the top menu, enter the number of glyphs you need (e.g., 26 for basic Latin), and click OK.
  3. Scroll to the new empty slots at the end of the font view.
  4. Select an empty slot, right-click, and choose Glyph Info.
  5. Name the glyph using a consistent suffix, such as a.sc for lowercase "a", b.sc for "b", and so on.
  6. Draw or paste your small cap designs into these slots. If generating them from existing uppercase glyphs, copy the capital letter, paste it into the .sc slot, scale it to approximately the x-height (often 70% to 80% of cap height), and adjust horizontal stem widths so they do not appear noticeably thinner than surrounding letters.

Step 2: Set Up the Lowercase to Small Caps Feature (smcp)

Once your .sc glyphs are drawn and named, you must link them to regular lowercase characters using OpenType features.

  1. Navigate to Element > Font Info.
  2. Select Lookups from the left-hand navigation, then ensure the GSUB (Glyph Substitution) tab is active.
  3. Click Add Lookup.
  4. In the lookup configuration dialog:
    • Set Type to Single Substitution.
    • Under Feature, select or type smcp (Small Capitals).
    • Under Script/Language, add your targeted scripts (e.g., latn with default).
    • Click OK.
  5. Select the newly created lookup in the list and click Add Subtable.
  6. Accept the default name and click OK.
  7. In the subtable window, choose the option Default with Suffix and enter .sc (or your chosen suffix) into the field.
  8. FontForge will automatically pair standard characters to their .sc equivalents (e.g., a maps to a.sc). Click OK.

Step 3: Set Up the Capitals to Small Caps Feature (c2sc)

To allow uppercase letters to convert to small caps alongside lowercase letters, add the companion c2sc feature.

  1. In the GSUB tab of Font Info, click Add Lookup again.
  2. Set Type to Single Substitution.
  3. Under Feature, select or type c2sc (Capitals to Small Capitals).
  4. Add the appropriate script and language systems (e.g., latn > default), then click OK.
  5. Highlight this lookup, click Add Subtable, and accept the default name.
  6. Manually map the capital characters to the corresponding small cap glyphs (e.g., A maps to a.sc), or use a suffix match if your naming scheme distinguishes them (such as uppercase-derived naming rules).
  7. Click OK to close the subtable, then click OK to close the Font Info window.

Step 4: Validate and Export

  1. Navigate to File > Generate Fonts....
  2. Choose OpenType (CFF) or TrueType format.
  3. Save the font file under a new version name.
  4. Test the generated font in OpenType-compatible software (such as Adobe InDesign, web browsers using CSS font-variant: small-caps;, or LibreOffice) to ensure lowercase and uppercase characters switch to the proper small capital forms.