Алексей Авдеев, Neuron.Digital
Решаем проблему, попутно разбираясь в спецификациях Emoji и Unicode.
Unicode version | Single emoji count | delta |
---|---|---|
1.0.0 | 78 | (+78) |
... | ... | ... |
5.2 | 80 | (+2) |
6.0 | 858 | (+716) |
... | ... | ... |
10.0 | 1,144 | (+56) |
Code point | default | FITZ-1-2 | FITZ-3 | FITZ-4 | FITZ-5 | FITZ-6 |
---|---|---|---|---|---|---|
U+1F466: BOY | 👦 | 👦🏻 | 👦🏼 | 👦🏽 | 👦🏾 | 👦🏿 |
U+1F467: GIRL | 👧 | 👧🏻 | 👧🏼 | 👧🏽 | 👧🏾 | 👧🏿 |
U+1F468: MAN | 👨 | 👨🏻 | 👨🏼 | 👨🏽 | 👨🏾 | 👨🏿 |
U+1F469: WOMAN | 👩 | 👩🏻 | 👩🏼 | 👩🏽 | 👩🏾 | 👩🏿 |
U+200D ZERO WIDTH JOINER (HTML ‍ ‍)
Code point | default | ⚕️ | 🏫 | 🔧 | 🏭 | 💼 | 💻 |
---|---|---|---|---|---|---|---|
U+1F468: MAN | 👨 | 👨⚕️ | 👨🏫 | 👨🔧 | 👨🏭 | 👨💼 | 👨💻 |
U+1F469: WOMAN | 👩 | 👩⚕️ | 👩🏫 | 👩🔧 | 👩🏭 | 👩💼 | 👨💻 |
font-family:
"Apple Color Emoji", /* iOS, macOS - 34.3 МБ */
"NotoColorEmoji", /* Google (Android, Linux) - 6.92 МБ */
"Segoe UI Emoji", /* Windows - 660.45 КБ */
"Segoe UI Symbol", /* Windows */
"EmojiSymbols"; /* Open Source - 231 КБ */
design guidelines for improving interoperability across platforms and implementations
While the shape of the character can vary significantly, designers should maintain the same “core” shape, based on the shapes used mostly commonly in industry practice. For example, a U+1F36F HONEY POT encodes for a pictorial representation of a pot of honey, not for some semantic like "sweet". It would be unexpected to represent U+1F36F HONEY POT as a sugar cube, for example. Deviating too far from that core shape can cause interoperability problems: see accidentally-sending-friends-a-hairy-heart-emojiexternal link.
Hello, world! 👋, 🌎!
Hello, world!
<img alt="👋" src="/apple40/1f44b.png">,
<img alt="🌎" src="/apple40/1f30e.png">!
parseEmoji('😍🍕👉👿💖');
<img alt="😍" src="/apple40/1f60d.png" />
<img alt="🍕" src="/apple40/1f355.png" />
<img alt="👉" src="/apple40/1f449.png" />
<img alt="👿" src="/apple40/1f47f.png" />
<img alt="💖" src="/apple40/1f496.png" />
'🤙'.charCodeAt(0).toString(16); // d83e
'🤙'.charCodeAt(0).toString(16); // d83e
'🤙'.charCodeAt(0).toString(16); // d83e
'👩🏿'
.split('')
.reduce((result, currentChar) => {
const code = currentChar.charCodeAt(0).toString(16);
const code4 = `000${code}`.substr(-4);
return `${result}\\u${code4};`
}, ''); // \ud83d\udc69\ud83c\udfff