How to cjk font glyph count considerations
- Step 1Source full CJK font — Noto Sans CJK is the canonical free choice — covers all four CJK scripts. ~25 MB per weight uncompressed; ~5 MB after WOFF2.
- Step 2Subset by common-character set — JIS Level 1 (~3,000 Japanese kanji): 1.5 MB. GB2312 (~6,800 Simplified Chinese): 2 MB. KS X 1001 (~2,300 Korean): 1 MB. Each cuts 70–90% off the full font.
- Step 3Apply unicode-range fallback — Multiple @font-face blocks: subset for common characters, full font for the rare-character long tail. Browser fetches the rare-character font only when content includes those codepoints.
Frequently asked questions
What about modern Chinese vs traditional?+
Simplified (mainland China): GB2312 (6,800) or GB18030 (27,000+). Traditional (Taiwan, Hong Kong): Big5 (13,000+). Different subsets — Simplified content needs Simplified font; Traditional needs Traditional. Don't mix.
Can I lazy-load CJK fonts?+
Effectively yes via unicode-range. The rare-character WOFF2 only fetches when needed. Most page loads only fetch the common-character subset (1–2 MB), then add the rare characters lazily as needed.
What's a reasonable CJK page budget?+
300 KB–2 MB depending on audience. 5G mobile audiences tolerate 2 MB; older Android on 3G needs <500 KB. Subsetting down to JIS Level 1 / GB2312 / KS X 1001 hits the latter target.
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.