Что не так с Emoji

Алексей Авдеев, Neuron.Digital

Что не так с Emoji

Алексей Авдеев, Neuron.Digital

FrontendConf Background

👨‍💻 О себе

  1. 👨 Алексей Авдеев (https://github.com/avdeev)

Эмоджи —
это круто! 💖

Эмоджи
vs
Эмотикон

Эмотиконы

Эмотиконы (каомодзи)

Язык идеограмм

Язык идеограмм

🙆 👑

Угадай песню

Угадай песню

Эмоджи
vs
Эмодзи

Родина эмоджи

❓Первые эмоджи

Первые эмоджи

⬆️ Unicode version history

Unicode version Single emoji count delta
1.0.0 (1991) 78 (+78)
... ... ...
5.2 (2009) 142 (+27)
6.0 (2010) 858 (+716)
... ... ...
11.0 (2018) 1,212 (+66)

The Unicode Emoji Subcommittee 👨‍💼

The Unicode Emoji Subcommittee 👨‍💼

Mark Davis
Mark Davis (Google)
Jeremy Burge
Jeremy Burge (Emojipedia)
Jennifer 8. Lee
Jennifer 8. Lee (Emojination)

📄 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 👩 👩🏻 👩🏼 👩🏽 👩🏾 👩🏿

Группировки

U+200D ZERO WIDTH JOINER (HTML ‍ ‍)
Code point default ⚕️ 🏫 🔧 🏭 💼 💻
U+1F468: MAN 👨 👨‍⚕️ 👨‍🏫 👨‍🔧 👨‍🏭 👨‍💼 👨‍💻
U+1F469: WOMAN 👩 👩‍⚕️ 👩‍🏫 👩‍🔧 👩‍🏭 👩‍💼 👨‍💻

http://unicode.org/emoji/charts/emoji-zwj-sequences.html

Группировки

👩 + ❤️ + 💋 + 👨 = 👩‍❤️‍💋‍👨

Группировки

👨 + 👩 + 👧 = 👨‍👩‍👧

Группировки

👨 + 👨 + 👧 = 👨‍👨‍👧

Группировки

🏳 + 🌈 = 🏳‍🌈

Клавиатуры emoji ⌨️

keyboard_ios
keyboard_galaxy
keyboard_windows
emoji-ios-ox-x-beta

Новинки 2018 🆕

Новинки 2018 🆕

EMOJI COMPONENT RED HAIR
EMOJI COMPONENT CURLY HAIR
EMOJI COMPONENT WHITE HAIR
EMOJI COMPONENT BALD
apple-new-emoji-hair-options-2018-emojipedia

Расширение семей

family-emoji-combinations-emojipedia-ios-sample

Эмоджи
сломаны 💔

👨‍🎨🤦‍
👨‍💻🤦‍

⛑️ Плохая
поддержка

𒀂 𒀂 𒀂

😐 Множество
реализаций

15 стандартов

🔣 Шрифты

      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 КБ */
    

🖼️ Или наборы картинок

🤷 Проблемы
совместимости

🤷 Проблемы совместимости

🤷 Проблемы совместимости

Tear-Off
Calendar 📆

Heart Eyes

Grimacing

Scream

🥅 Spec Goals

design guidelines for improving interoperability across platforms and implementations

UNICODE EMOJI 6.0

http://unicode.org/reports/tr51/

📝 Design Guidelines

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.

UNICODE EMOJI 6.0

Ошибок ещё много

😗
😥
😪

👌 Решение

      Hello, world! 👋, 🌎!
    
      Hello, world!
      <img alt="👋" src="/apple40/1f44b.png">,
      <img alt="🌎" src="/apple40/1f30e.png">!
    

https://github.com/Julia-Lavrova/emoji-js

👌 Решение

      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); // 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
    

*️⃣ Универсальное

      const reg = new RegExp('
        \ud83d\udc69\ud83c\udfff|\ud83e
      ', 'g');
    
      txt.replace(reg, (match, p1) =>
        `<img src="/apple40/${toCodePoint(p1)}.png" alt="" />`
      );
    

Авторское право ©

Авторское право ©

apps and extensions, including third party keyboards and Sticker packs, may not include Apple emoji.

App Store Guidelines

https://developer.apple.com/app-store/review/guidelines/#intellectual-property

Что делать❓

👨‍💻 Разработчикам

👨‍🎨 Дизайнерам

Бонус 🎰

Как потроллить разработчика 👹

Название Символ
White Square (U+25A1)
Cuneiform Sign A (U+12000)
White Medium Square (U+25FB)
Cuneiform Sign A Times Bad (U+12002) 𒀂

Материалы ℹ

Берегите
эмоджи 🛡