Почему красное сердце emoji требует два кодовых пункта, но другие цветные сердца требуют одного?

Похоже, что для красного сердца emoji (❤️) "\ u2764\uFE0F" требуются два кодовых пункта unicode, в частности Heavy Black Heart, за которым следует a Выбор вариации. Однако синий 💙, зеленый 💚, желтый 💛, а фиолетовый 💜 каждый имеет свой собственный одиночный код.

Почему красный цвет отличается?

Ответ 1

По историческим причинам. Первоначально было только U + 2764 HEAVY BLACK HEART, которые первые приложения, которые поддерживали Emojis, решили отображать как красное сердце. Эти ранние приложения всегда отображали U + 2764 как Emoji. Позже выяснилось, что это была плохая идея, а селекторы вариаций для Emojis были стандартизированы. Когда были добавлены дополнительные эмоции сердца, не было необходимости в другом красном сердце, поэтому оно было опущено. Вместо этого есть отдельное черное сердце emoji U + 1F5A4 🖤.

Теоретически, приложение может потребовать, чтобы селектор вариаций Эможи был добавлен к другим точкам сердечного кода. Но не имеет смысла изображать персонажей, таких как PURPLE HEART, как не-Эможи. Это действительно имеет значение для ТЯЖЕЛОГО ЧЕРНОГО СЕРДЦА, хотя, как правило, он предназначен для визуализации как оригинальный, простой тяжелый черный сердечный характер.

Ответ 2

ТЯЖЕЛЫЙ ЧЕРНЫЙ СЕРДЦ был добавлен в Юникод за десятилетия до эможи. Когда emoji были включены в Unicode 6, некоторые уже существующие символы были просто повторно использованы как emoji, чтобы избежать ненужных дубликатов. Позднее последовательности вариаций были определены для символов, которые также отображались в наборе символов, отличных от эмможи, чтобы обеспечить лучший контроль над тем, как они отображаются. Например, U + 2744 ❄ SNOWFLAKE изначально из Zapf Dingbats (я считаю), но позже был сделан emoji. Поэтому, если вы хотите принудительно отобразить исходный текстовый стиль, вы можете использовать VARIATION SELECTOR-15 (в результате чего ❄︎), и если вы хотите принудительно отобразить новый стиль в стиле emoji, вы можете использовать VARIATION SELECTOR-16 (в результате чего ❄️).

Обратите внимание, однако, что не так много платформ фактически поддерживают эти вариационные последовательности правильно на данный момент. Кроме того, не все они автоматически применяют селекторы вариаций при использовании клавиатуры emoji. Теоретически ❤ и ❄ (и многие другие эмои) должны отображаться как текстовый стиль по умолчанию без VS16, но многие приложения также игнорируют это.

У меня есть список всех кодовых точек, которые могут отображаться по-разному с помощью вариационной последовательности на моем веб-сайте, если вам интересно. Следующее обновление Unicode в июне добавит еще немного.