Тёмная сторона эмодзи или почему в сообщениях dtf нет смайлов
Проблема 1. Эмодзи разные
На устройствах любой символ можно представить в виде числового кода, будь то буква A или 🥹. Таким образом в каждой из OS (то есть Windows, Linux и т.д.) есть свой набор шрифтов и эмодзи в их числе.
Поскольку в глазах дизайнеров позволять каждой OS использовать свои шрифты это кощунство, в современной разработке почти каждый сайт включает в себя файлы с необходимыми для его работы шрифтами.
Проблема 2. Эмодзи большие
Окей, мы добавили файл со шрифтами на свой сайт, но получится ли также с эмодзи? В отличие от обычных букв изображение нельзя так просто масштабировать без потери качества.
Тут к нам на помощь приходит векторная графика, о сжатии которой раньше и не думали. Это не проблема, когда они предустановлены в операционной системе, но в вебе такое не внедришь. Можете представить, что с загрузкой каждого сайта вам придётся дополнительно грузить 20мбайт смайликов? Позже выходили разные форматы шрифтов поддерживающие эмодзи, но не обрели большую популярность по тем или иным причинам.
Наконец, в 2022 году выходят релизы Chrome и Firefox, которые поддерживают стандарт COLRv1, позволяющий делать красивую векторную графику с градиентами и при этом хранить её достаточно компактно. Но и тут не обошлось без проблем - ей оказалась Apple. Они выкатили список претензий, большинство из которых позже были исправлены, но позиция компании так и не изменилась.
Проблема 3. С эмодзи сложно
Что у нас получается, встроенные эмодзи использовать зашквар, шрифт подключать дорого, как же выкручиваются?
Реализация очевидная, но довольно непростая - все видимые эмодзи заменяются на картинки. Процесс примерно такой:
- Пользователь набирает текст, в поле ввода отслеживается каждый символ и сразу заменяется на картинку, если попался эмодзи символ
- После того как текст сохраняется, картинка отправляется на сервер уже в качестве символа или тега
- Когда приходит время отобразить текст, символы эмодзи снова заменяются на картинки
Кроме этого, нужно реализовать еще клавиатуру эмодзи, а она огромная - больше двух тысяч, браузер может просто зависнуть пытаясь загрузить их все. Тут приходится выкручиваться подгружая только те, которые в видимой части клавиатуры. Как видите, нюансов немало, так что полностью понимаем разрабов дтф.