How to whitelist builder edge cases and common mistakes
- Step 1Always include the space — U+0020 (space) is required for almost all rendered text. Forgetting it produces words crammed together.
- Step 2Watch for combining characters — à might be encoded as U+00E0 (single character) or U+0061 + U+0300 (a + combining grave). Same visible result, different codepoints. Whitelist both forms if your text uses either.
- Step 3Test against the actual rendered text — Render your real text in the subsetted font. Tofu boxes signal missing characters. Add them to the whitelist and regenerate.
Frequently asked questions
Why does my whitelist with 'cafe' show tofu for 'café'?+
The whitelist has c, a, f, e but not é (U+00E9). Add é to the whitelist explicitly. Or use latin-1 charset preset which covers all common European accents in one go.
Will OpenType ligatures still work?+
Only if both ligature glyphs and their constituent characters are in the whitelist. The 'fi' ligature requires f, i, AND the fi glyph. Whitelisting f and i but not fi means the ligature feature can't activate.
How do I handle text I can't predict?+
You can't — whitelist is for known text. For unpredictable text (UGC, dynamic content), use charset subsetting (latin, latin-ext) which covers all characters in a Unicode block.
Privacy first
Every JAD Font tool runs entirely in your browser using opentype.js and the wawoff2 WASM Brotli encoder. Your fonts never leave your device — verified by zero outbound network requests during processing.