Получи случайную криптовалюту за регистрацию!

Мы в ТЕХНО любим эмодзи, но эта любовь заставляет нас страдать | ТЕХНО: Яндекс про технологии

Мы в ТЕХНО любим эмодзи, но эта любовь заставляет нас страдать. Часто, пытаясь уложиться в отведённые телеграмом 2048 знаков, мы обнаруживаем, что пост не помещается — из-за эмодзи. А всё потому, что эмодзи считают не как один символ, а как 5, 7 и даже 11. Почему так много? Объясняем!

Эмодзи можно разделить на базовые и эмодзи-конструкторы, собранные из нескольких. Вот базовый эмодзи «бегун» . Чтобы получилась темнокожая бегунья, к нему добавляется эмодзи-модификатор, отвечающий за цвет кожи, затем эмодзи девушки, определяющий пол, и невидимый символ ZWJ, связывающий их. Таким образом, сочетание + 🏿 + + ZWJ даёт новый эмодзи — , состоящий из 7 символов (почему 7, а не 4, расскажем дальше).

Невидимый символ ZWJ — ключевой для понимания того, что происходит при конструировании эмодзи. Он называется объединителем нулевой ширины (англ. Zero-width joiner, или «звидж»). В первую очередь он предназначен для языков, в которых два и более символов, используемых вместе, дают третий символ. Например, при наборе текста на бенгальском «র» + ZWJ + «্» + «য» дают символ «র‍্য». Он выглядит как один, но технически он состоит из четырёх.

Второе важное понятие — эмодзи-модификаторы. Так называют не используемые по отдельности эмодзи, которые определяют, например, цвет кожи или волос персонажа. За цвет кожи отвечают модификаторы по «типам Фитцпатрика» — шесть основных оттенков кожи. Базовый цвет в эмодзи — жёлтый, а пять прочих цветов — модификаторы, изменяющие исходный оттенок. Например, эмодзи «рыжеволосый мужчина» — это эмодзи «мужчина» + эмодзи-модификатор «рыжие волосы» + ZWJ.

А теперь о том, почему — это 7 символов. Каждый символ русского или английского текста занимает два байта памяти, но для иероглифов или базовых эмодзи требуется 4. То есть при подсчёте символов каждый базовый эмодзи будет считаться как 2 символа. В «темнокожей бегунье» 3 базовых эмодзи + 1 двухбайтовый ZWJ — итого 7 символов.

Подписывайтесь @techno_yandex

Не пропускайте новости Яндекса тут @yandex