How to automate emoji removal in your font build pipeline
- Step 1Walk fonts directory — fs.readdir(input). For each font, parse with opentype.js, build the keep-set (every codepoint NOT in the emoji ranges), emit a fresh subset Font.
- Step 2Compress to WOFF2 — Pipe each emoji-stripped TTF through wawoff2. Final output ships in /public/fonts/.
- Step 3Validate via screenshot test — Take a Playwright screenshot of a page with emoji content. Compare against a baseline (OS emoji rendering). Catches regressions where the fallback chain breaks.
Frequently asked questions
Should I run this for system fonts?+
No — system fonts aren't part of your bundle. The script only applies to custom web fonts you ship as @font-face.
What about colour emoji in my brand identity?+
Don't run this script on a branded-emoji font. Skip it entirely or use a more selective Whitelist Builder approach to keep just the branded emoji.
Can I exclude specific ranges?+
Yes — modify the emoji ranges array in the script. Default covers U+1F000–U+1FFFF, U+2600–U+27BF, U+E000–U+F8FF. Customise per your font's needs.
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.