Supported formats
File formats: WOFF, WOFF2, TTF, OTF Font types:- Static fonts — One file per weight (e.g.,
MyFont-Regular.woff2,MyFont-Bold.woff2) - Variable fonts — Single file with weight range support
Custom fonts require a Pro plan. Free plans show Google Fonts only.
Uploading fonts

- Navigate to Theme > Typography
- Click Upload font
- Select or drag font files into the dialog
- Review and edit font metadata:
- Font family name — Editable per font group
- Weight — Dropdown for static fonts, range display for variable fonts
- Click Add fonts
Font validation
Subframe groups uploaded files by font family. Follow these rules:- Same file format — All files in a family must use the same format (don’t mix WOFF and TTF)
- Same font type — Static and variable fonts cannot be mixed in one family
- Unique weights — Each weight must be unique within the family
- No Google Font conflicts — Custom font names cannot match existing Google Font names
Using custom fonts
After uploading:- Go to Theme > Typography
- Click the font name card or any text token to edit
- Select your custom font from the picker
Installing fonts in your codebase
Custom fonts require additional setup in your project to load correctly. See Loading fonts for instructions.Updating fonts
To add weights to an existing custom font:- Upload additional font files with matching family name
- Subframe adds new weights to existing font asset
- Existing typography tokens gain access to new weights
Overwriting existing font files requires a browser refresh to see changes.
Troubleshooting
Font not appearing in picker
Font not appearing in picker
Check that:
- Upload completed successfully (toast notification appeared)
- Font family name doesn’t conflict with Google Fonts
- File format is supported (WOFF, WOFF2, TTF, OTF)
Font not loading in codebase
Font not loading in codebase
Verify:
- Font files synced via
npx @subframe/cli sync --all @font-facedeclarations are in your CSS- File paths match actual font file locations
- No CORS errors in browser console
Weight slider not showing all weights
Weight slider not showing all weights
For static fonts, the slider only shows uploaded weights. Upload additional font files to enable more weight options.For variable fonts, the slider shows the full supported range from the font file metadata.
Can't mix fonts in same family
Can't mix fonts in same family
Remove existing font files or use a different family name. Subframe requires consistent format and type (static vs variable) within each font family.

