Why do the same characters show up with a ‘text presentation’ in some situations and an ‘emoji presentation’ in others?
There is both a ‘text style’ and ‘emoji style’ for
U+25B6 BLACK RIGHT-POINTING TRIANGLE (▶). Whichever style you get depends on whatever style the font you’re currently using has. For example, the font Apple Color Emoji has an ‘emoji style’ glyph for
U+25B6 BLACK RIGHT-POINTING TRIANGLE while the font Lucida Grande has a ‘text style’ glyph for
U+25B6 BLACK RIGHT-POINTING TRIANGLE. This is fine in a text editor, where you have control over whatever font you’re using for each character, but not in contexts where you don’t.
How can I specify whether or not I want the ‘text presentation’ or ‘emoji presentation’ for a codepoint in contexts where I have no control over the font?
The Unicode Consortium actually provided a solution for this issue in Unicode 6.1, detailed in this Unicode Technical Report.
Essentially, they’ve designated two codepoints as emoji variation selectors:
U+FE0E VARIATION SELECTOR-15 (for a text presentation) and
U+FE0F VARIATION SELECTOR-16 (for an emoji presentation).
Let me explain how they work. Whenever you enter one of those two variation selectors in a text field (whether through copy-pasting or other means), the text rendering system of your operating system—one conforming to the Unicode Standard, v6.1+—will change the glyph (through font substitution, if necessary) for the character immediately preceding the variation selector you just entered to one matching either ‘text style’ or ‘emoji style’ (depending on which variation selector you entered after the emoji).
Here’s a demonstration:
For people viewing this page on older operating systems, I’ve included some images below demonstrating the behaviour in a normal text box on OS X v10.11 El Capitan.
The system font on OS X v10.11 (which is San Francisco), has no glyph for
U+25B6 BLACK RIGHT-POINTING TRIANGLE, so OS X’s text rendering system automatically performs font substitution and ends up using the Lucida Grande UI font instead, which happens to have a 'text style' glyph for
U+FE0E VARIATION SELECTOR-15 immediately after it forces it to be ‘text style’, so the result is the same:
U+FE0F VARIATION SELECTOR-16 immediately after it instead results in OS X’s text rendering system using a font with an ‘emoji style’ glyph for
U+25B6 BLACK RIGHT-POINTING TRIANGLE instead, which happens to be the Apple Color Emoji font:
(For the curious, the screenshots are showing the indispensable Split Up utility in UnicodeChecker).