How to ttf to woff2 edge cases and troubleshooting reference
- Step 1Spot oversized CJK output — If your CJK WOFF2 is over 5 MB, the input probably contains 50,000+ glyphs. Subset to commonly-used JIS Level 1 (Japanese) or GB2312 (Simplified Chinese) before WOFF2 conversion to drop to under 1 MB.
- Step 2Handle TTC collections — TTC files (TrueType Collections) bundle multiple faces. The JAD converter rejects TTC inputs with a clear error — split into individual TTFs first using a desktop tool like fonttools' ttx, then convert each separately.
- Step 3Preserve colour glyphs — WOFF2 preserves COLR/CPAL, sbix, and SVG colour tables losslessly. If your converted font appears monochrome, the issue is renderer support — Safari renders sbix, Chrome renders COLRv1, etc. The data is in the WOFF2 regardless.
Frequently asked questions
Why is my converted CJK font still huge?+
WOFF2 saves 30–35% on CJK fonts (less than the 60% it saves on Latin) because most of the size is glyph data that's already efficiently packed. To dramatically shrink CJK fonts, subset to your target locale's commonly-used characters (the JAD Subsetter tool covers this).
Can I convert variable fonts?+
Yes. The fvar/gvar tables survive the WOFF2 round-trip exactly. The font-variation-settings CSS still works after conversion. Variable fonts compress especially well to WOFF2 because gvar deltas compress much better than glyf outlines.
What if my conversion fails silently?+
Check the browser console — the error message will name the issue (corrupt TTF header, unsupported table, file too large for tier). The most common cause is a TTC collection mistakenly renamed to .ttf; running the Format Identifier first confirms the input format.
Does WOFF2 handle Apple's sbix table?+
Yes. WOFF2 is format-agnostic — it preserves any OpenType table, including sbix (Apple bitmap), CBDT/CBLC (Google bitmap), and CPAL/COLR (chromatic). Renderer support for those tables is a separate question, but the data is preserved.
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.