Skip to main content
☀️ Summer Founder's Deal: FontCreator lifetime license $49 (normally $199). Limited time — ends July 14. Get the deal →

FontCreator Tutorials

Optimizing Webfonts by Reducing Character Sets

written by Erwin Denissen, published June 26, 2026

You'll need: FontCreator (Windows or macOS), a font you want to optimize for the web, and a clear idea of which characters your site actually uses.

Why subset a webfont's character set?

A font editor like FontCreator can hold thousands of glyphs — characters for dozens of languages, symbols, currency signs, arrows, and punctuation. On a website, every byte of that travels down the wire before text can render. Subsetting means keeping only the glyphs you need and removing the rest, so the exported file is smaller, loads faster, and feels snappier to visitors.

There are three practical reasons to do it:

  1. File size reduction. Most of a font's weight is glyphs you will never use on a given site. Removing them can shrink the file dramatically.
  2. Optimized web performance. A smaller font file means quicker load times, which is essential for web and app performance. Subsetting to only the characters you need improves the overall user experience and helps avoid the flash of unstyled text while a heavy font downloads.
  3. Tailored character usage. If a project only needs a limited set — a single language, a brand wordmark, or a specific group of symbols — you can tailor the font to include exactly those characters and nothing more.

FontCreator's Include in Exports controls give you precise, glyph-level command over exactly what ships — switch whole categories or individual glyphs in and out, and the export writes only what you kept. The same workflow applies to both regular (static) and variable fonts, and it works the same way on Windows and macOS.

FontCreator showing a full glyph set in the font overview, with the categories tree visible on the left.

How to subset the character set in FontCreator

The approach is to mark every glyph as not exported, then switch back on only the categories you want — plus the glyphs that those characters quietly depend on. Working category-by-category from the tree keeps the selection deliberate and easy to audit.

Step 1: Open the font

Open your font in FontCreator. This loads the entire glyph set into the editor, where you can view and adjust which glyphs ship.

Step 2: Exclude every glyph first

In the font overview window, select all glyphs by pressing Ctrl + A (Windows) or Cmd + A (macOS). Right-click the selection and choose Include in Exports ▸ None. Every glyph is now flagged as not exported — a clean baseline to build up from.

Step 3: Keep the unmapped glyphs that features rely on

In the categories tree on the left, open Glyphs ▸ Unmapped. Select all glyphs there, right-click, and choose Include in Exports ▸ All Exports. Unmapped glyphs are the alternates, ligature targets, and component parts that OpenType layout features point to even though they have no Unicode code point of their own. Keeping them is what stops your features from breaking later (see the caution below).

Unmapped glyphs selected in FontCreator with the Include in Exports context menu showing All Exports.

Then open the Options dialog and, on its Font page, enable the option to exclude all unused glyphs, so any unmapped glyph that nothing actually references is still dropped from the export.

Step 4: Include the Unicode categories you need

Still in the categories tree, select a Unicode block you want to keep — for example Basic Latin. Select all glyphs in that block, right-click, and choose Include in Exports ▸ All Exports. Repeat for each block your site uses, such as Latin-1 Supplement for accented Western European letters or General Punctuation for typographic quotes and dashes.

For an English-only site, Basic Latin plus a handful of punctuation glyphs is often all you need. The more blocks you add, the larger the file — so add deliberately.

Step 5: Fine-tune individual glyphs

If you need to keep or drop a few extra glyphs outside the blocks you chose — a brand symbol, a specific currency sign, a fraction — select them individually and set Include in Exports to All Exports or None as appropriate. This gives you complete, glyph-level control over the final character set, on both static and variable fonts.

Step 6: Export as WOFF2

Open the export settings and export the font as WOFF2 for the web. The resulting file contains only the glyphs you kept, so it is markedly smaller than the full font.

WOFF2 is the format to reach for on the web: it adds Brotli compression on top of the OpenType data, so a WOFF2 file is typically much smaller than the same font as TTF or even WOFF. Subsetting and WOFF2 compound — fewer glyphs and tighter compression — which is where the biggest, most noticeable load-time wins come from. For the full export walkthrough and format choices, see Export a Font (Export Fonts Correctly).

FontCreator export settings showing WOFF2 chosen as the webfont export format.

Watch out: don't break OpenType features by removing referenced glyphs

This is the trap that catches people. Subsetting is not just "delete the characters I can't see in my text." Many glyphs are referenced by other glyphs or by OpenType layout features:

  • Composites (accented letters, for instance) are built from component glyphs such as the base letter and the accent mark. Drop the component and the composite renders wrong or empty.
  • Ligatures, small caps, alternates, and other features map visible characters to unmapped target glyphs. Remove the target and the feature silently stops working when triggered.

That is exactly why Step 3 keeps the unmapped glyphs: it preserves the parts that features and composites depend on, while the "exclude unused glyphs" option still trims anything genuinely orphaned. Rather than hunting for these dependencies by hand, let the export logic keep them and prune the truly unused.

> Tip: After exporting, install or test the subsetted WOFF2 and type the real text from your site — including any text that triggers ligatures, fractions, or small caps. If a feature looks broken, a referenced glyph was likely excluded; go back and include the relevant unmapped glyphs.

> Note: Subsetting a variable font's character set is only one way to slim it down. You can also reduce a variable font by removing axes or narrowing their ranges — a separate technique covered in Subsetting Variable Fonts.

Troubleshooting

SymptomLikely causeFix
Accented letters render empty or wrongComponent (base/accent) glyphs were excludedInclude the relevant unmapped/component glyphs (Step 3) and re-export
A ligature or small-caps feature stopped workingThe feature's target glyph was removedInclude the unmapped target glyphs the feature references, then re-export
File is still largeToo many Unicode blocks kept, or unused glyphs not excludedKeep fewer blocks; enable "exclude unused glyphs" on the Options ▸ Font page
Some intended characters are missingTheir Unicode block was never includedAdd that block via the categories tree and set Include in Exports ▸ All Exports

Frequently asked questions

How do I subset a font in FontCreator? Use the Include in Exports controls together with the categories tree for precise, glyph-level control over exactly what ships — the same workflow handles static and variable fonts on Windows and macOS.

Will subsetting change my original font? No. The include/exclude flags affect what gets written at export time. Save a copy of your project if you want to keep the full character set for future edits.

Which web format gives the smallest file? WOFF2. Its Brotli compression makes it smaller than TTF or WOFF, and combining it with a reduced character set produces the biggest load-time savings.

How do I know which glyphs my site actually uses? List the languages and the exact text (logos, headings, body copy) you display. Map those to Unicode blocks — Basic Latin and Latin-1 Supplement cover most Western European text — and keep the unmapped glyphs so dependent features survive.

Can I subset a variable font this way too? Yes — the character-set steps are identical. To also reduce a variable font by axis, see Subsetting Variable Fonts.

What to read next