Что не так с эмоджи
Решаем проблему, попутно разбираясь в спецификациях Emoji и Unicode.
👨💻 О себе
- 👨 Алексей Авдеев
- 🏙️ Из Нижнего Новгорода, работаю в Москве
- 🌐 Neuron.Digital
- 👔 Руковожу командой из 10 фронтенд-разработчиков
- 👴 Программирую с 2002 года
- 🤹 Сейчас активно использую React/Redux
Эмотиконы (каомодзи)
(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻
¯\_(ツ)_/¯
Язык идеограм и смайликов
👶🚿
😡📊
Язык идеограм и смайликов
🎣🔛🐑
👉👌
Родина эмоджи
🙇😷💮🍜🍡
🍙🍛🍣🌸👹
Клавиатуры emoji ⌨️
- 📱 Android 4.3
- 🖥️ Windows 8.1
- 📱 iOS 5
- 🖥️ OS X 10.7 Lion
- 🤔 Не очень трудно самому написать такую клавиатуру
⬆️ Unicode version history
Unicode version |
Single emoji count |
delta |
1.0.0 |
78 |
(+78) |
... |
... |
... |
5.2 |
80 |
(+2) |
6.0 |
858 |
(+716) |
... |
... |
... |
10.0 |
1,144 |
(+56) |
Unicode® Technical Standard #51
Unicode® Technical Standard #51
Мод Фитцпатрика 🏻 🏼 🏽 🏾 🏿
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 |
👩 |
👩🏻 |
👩🏼 |
👩🏽 |
👩🏾 |
👩🏿 |
🏳️ Флаги
🇧 + 🇾 = 🇧🇾
🇷 + 🇺 = 🇷🇺
Multi-Person Groupings
👩 + ❤️ + 💋 + 👨 = 👩❤️💋👨
👩 + ❤️ + 💋 + 👩 = 👩❤️💋👩
Multi-Person Groupings
👨 + 👩 + 👧 = 👨👩👧
👩 + 👩 + 👧 + 👧 = 👩👩👧👧
Multi-Person Groupings
🏳 + 🌈 = 🏳🌈
🔣 Шрифты
font-family:
"Apple Color Emoji",
"NotoColorEmoji",
"Segoe UI Emoji",
"Segoe UI Symbol",
"EmojiSymbols";
🖼️ Или наборы картинок
- Facebook
- Twemoji (Twitter Emoji for Everyone)
- ВК
- emojidex (emojidex emoji-as-a-service)
- можно разобрать шрифт по символам
🤷 Проблемы совместимости
А
А
А
А
А
- Angry
- Heart Eyes
- Grimacing
- Scream
📝 Design Guidelines
👌 Решение
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" />
https://github.com/Julia-Lavrova/emoji-js
1️⃣ Для одиночных эмоджи
'🤙'.charCodeAt(0).toString(16);
'🤙'.charCodeAt(0).toString(16);
'🤙'.charCodeAt(0).toString(16);
*️⃣ Универсальное
'👩🏿'
.split('')
.reduce((result, currentChar) => {
const code = currentChar.charCodeAt(0).toString(16);
const code4 = `000${code}`.substr(-4);
return `${result}\\u${code4};`
}, ''); //
👨💻 Разработчикам
- Поддерживает ли Ваш проект эмоджи
- Системные шрифты или свой набор
- Какую версию эмоджи поддерживать
👨🎨 Дизайнерам
- Не придумывать свою реализацию эмоджи
- Развивать существующие реализации
- Следить за совместимостью