Some Unicode characters can be drawn two ways: as flat monochrome text or as a colour emoji. Which one you get depends on the character's default presentation and on whether an invisible variation selector follows it.
One character, two appearances
Symbols like ⚠, ☀ and ✉ predate emoji by decades. When emoji were folded into Unicode, many existing symbols gained an emoji presentation alongside their original text form. The character did not change; what changed is that systems now have two ways to draw it.
The variation selectors
U+FE0E requests the text presentation and U+FE0F requests the emoji presentation. Both are invisible and zero-width, and both follow the character they modify. ✉ is U+2709 alone; ✉️ is U+2709 followed by U+FE0F. The visible difference can be dramatic even though only an invisible character was added.
Defaults differ per character
Unicode assigns each dual-presentation character a default. Some default to text, some to emoji. This is why a row of weather symbols can come out with the umbrella in colour and the cloud in black — not a font bug, but two different defaults sitting side by side.
Why it matters beyond looks
The selector is a real character. It counts against field length limits, it can be stripped by services that filter unusual characters, and it can be lost when text passes through systems that normalise input. Text that arrives as colour emoji in one place may arrive as monochrome elsewhere simply because the selector did not survive.
Controlling it
You cannot reliably force a presentation across every platform, because ultimately the rendering system decides what fonts it has. If monochrome matters, prefer characters that default to text and avoid supplementary-plane emoji, which have no text form at all.
References
Related tools and guides
Last updated September 2026 · Editorial policy · How we verify Unicode claims