How to emoji removal edge cases and implementation quirks
- Step 1Identify ZWJ sequences — Family emoji like 👨👩👧 are ZWJ sequences (man + ZWJ + woman + ZWJ + girl). Removing the individual codepoints removes the sequence. The ZWJ character itself (U+200D) is in General Punctuation — preserved by default.
- Step 2Handle skin tones — Skin-tone modifiers (Fitzpatrick scale U+1F3FB–U+1F3FF) are in the emoji range and removed. After removal, base emoji (which were also removed) wouldn't render. No harm done if you wanted them all gone.
- Step 3Check PUA usage — U+E000–U+F8FF is the Private Use Area, used for both emoji and custom icon font glyphs. The default Emoji Remover treats this range as emoji. If your font has icon glyphs in PUA, use the Whitelist Builder instead.
Frequently asked questions
Why would removing emoji break my icon font?+
If your icon font uses PUA codepoints (U+E000–U+F8FF), the default Emoji Remover ranges include them. Adjust the script to exclude PUA, or use the Whitelist Builder to keep specific codepoints explicitly.
What about flag emoji?+
Flags are pairs of regional indicator symbols (U+1F1E6–U+1F1FF). The pair forms a flag via OS shaping. Both indicators are in the emoji range and removed together — flags vanish as expected.
Does removal affect text-mode emoji?+
Some emoji have text-mode variants (☺ vs 😊). The text-mode codepoints are in Misc Symbols (U+2600–U+27BF) which is also removed. If you need text-mode emoji preserved, use the Whitelist Builder with explicit codepoints.
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.