How to subset a font
- Load a supported font with Drop a font here or browse files.
- Enter at least one request in Text / characters to keep, Unicode ranges / code points, or Glyph names.
- Optionally select Also strip GSUB/GPOS/kern layout tables to save extra space. This can break typographic features.
- The subset builds automatically as soon as the font and a selection request are ready.
- Download each output separately with Download subset font and Download report.
Choose the glyphs to keep
- In Text / characters to keep, paste text. The tool requests each unique non-control character; newline, carriage return, and tab characters are ignored.
- In Unicode ranges / code points, enter comma-separated values such as
U+0041-005AorU+20AC. Invalid entries, reversed ranges, and ranges over 20,000 code points appear as Unrecognized range entries after building. - In Glyph names, enter comma-separated names such as
dollar,at, orampersand. Selecting a name keeps that glyph but does not add a Unicode mapping for it.
Missing requested characters and glyph names appear in the results warnings. Building requires at least one non-empty selection request.
What the subset keeps and changes
Composite glyph dependencies are added automatically. For example, a composite glyph can bring in the component glyphs it needs. The tool keeps every glyph slot and empties unused glyf outlines instead of deleting or renumbering slots, so the glyph count can stay unchanged.
Layout tables are preserved by default. This does not guarantee that every kerning, ligature, or other feature will work for every subset because the tool does not rewrite layout lookups. If you select Also strip GSUB/GPOS/kern layout tables to save extra space, the tool removes existing GSUB, GPOS, kern, and GDEF tables.
Supported formats and limitations
TTF and TrueType-outline OTF files that use glyf outlines are supported. CFF OTF files can show coverage information, but Build subset is disabled, so the normal subset font and report downloads are unavailable. WOFF and WOFF2 files are unsupported.
Read the results and validation messages
The results show original size, subset size, reduction, characters kept, glyph names kept, dependency glyphs auto-added, and which layout tables were preserved or stripped. The warning area lists missing characters, missing glyph names, and unrecognized range entries.
Validation is a structural check. It reparses the output, checks the glyph count, checks loca ordering and bounds, and checks table checksums. A successful check does not prove that every font layout feature will behave as intended.
Local processing and font permissions
The font is read, parsed, subsetted, and validated in your browser with JavaScript and FileReader. The script does not rewrite the name or OS/2 tables.
If the checked OS/2 fsType bit indicates an embedding/installing restriction, the tool displays a warning in the font summary. This is not a license determination, so verify the font license before distributing a modified copy.
Frequently asked questions
How do I subset a font?
Load a supported font and enter a request in at least one selection field; the subset builds automatically, then use Download subset font and Download report as separate downloads.
Why is Build subset disabled?
The loaded font may use CFF outlines. CFF files can show coverage information, but this workflow does not build a subset for them.
Why didn't the glyph count go down?
Glyph slots are not removed or renumbered. The tool empties unused outlines, so the slot count stays unchanged even when the file becomes smaller.
What happens when a requested character or glyph name is missing?
It is listed in the results warnings instead of being silently treated as found.
Does the tool upload the font?
Font handling occurs in your browser: the script reads, parses, subsets, and validates the font locally.