How to Set Up Case-Sensitive Forms in FontForge
Yes, you can set up case-sensitive forms in FontForge by utilizing
OpenType layout features. Case-sensitive forms allow fonts to swap
standard punctuation marks—such as hyphens, parentheses, brackets, and
colons—for vertically shifted variants designed to align with all-caps
text. This guide explains how to create the alternate glyphs, configure
the OpenType case feature via FontForge's Lookup tables,
and map the substitutions directly in your font project.
Step 1: Design Alternate Glyphs
Standard punctuation is typically centered relative to the lowercase x-height. For all-caps settings, these glyphs appear too low. You must first create raised versions:
- Open your font project in FontForge.
- Select an empty glyph slot or go to Encoding > Add Encoding Slots to create space for your alternates.
- Draw or copy the glyphs you want to adjust (such as
hyphen,parenleft,parenright,bracketleft,bracketright,colon, orguillemotleft). - Shift the contours upward so they vertically align with the cap height.
- Rename each alternate glyph using a standardized suffix. Right-click
the glyph, select Glyph Info, and change the name (for
example,
hyphen.case,parenleft.case, orcolon.case).
Step 2: Create the
OpenType case Lookup
FontForge manages OpenType features through the Lookups menu in the Font Info dialog.
- Navigate to Element > Font Info (or press
Ctrl+Shift+F/Cmd+Shift+F). - In the left sidebar, select the Lookups tab.
- Click the GSUB (Glyph Substitution) tab at the top.
- Click Add Lookup.
- Set the Type dropdown to Single Substitution.
- Under the Feature column, select or type
case(Case-Sensitive Forms). - Select the appropriate script and language systems (typically
latnwith<Default>language). - Click OK to create the lookup.
Step 3: Add and Populate the Subtable
With the lookup created, you need to define which base glyphs are replaced by your new alternates.
- Select your newly created
caselookup in the list and click Add Subtable. - Accept the default subtable name or provide your own, then click OK.
- In the subtable editor, populate the substitution list:
- Click the field under the Base Glyph Name column
and enter the standard glyph name (e.g.,
hyphen). - Click the field under the Replacement Glyph Name
column and enter the corresponding alternate name (e.g.,
hyphen.case). - Alternatively, if you named your glyphs systematically with a
.caseextension, click the Populate or Default button to have FontForge automatically detect and pair the glyphs.
- Click the field under the Base Glyph Name column
and enter the standard glyph name (e.g.,
- Add rows for all punctuation marks you have created alternate forms for.
- Click OK to close the subtable, then click OK again to apply the changes in Font Info.
Step 4: Validate and Export
Once configured, test the substitutions before finalizing the font:
- Open the Metrics window by going to Metrics > New Metrics Window.
- Type an uppercase word flanked by punctuation (e.g.,
(TEST)). - Open the Features menu in the Metrics window and
toggle Case-Sensitive Forms (
case) on and off to confirm that the punctuation shifts into alignment with the capital letters. - Once verified, go to File > Generate Fonts to
export your OpenType font file (
.otfor.ttf). Modern design applications like Adobe InDesign, Illustrator, and CSS-supported web browsers will now automatically apply these alternates when all-caps formatting or thefont-feature-settings: "case"property is used.