web-dev-qa-db-ja.com

赤いハートの絵文字には2つのコードポイントが必要なのに、他の色のハートには1つのコードポイントが必要なのはなぜですか?

赤いハートの絵文字(❤️) "\ u2764\uFE0F"には2つのUnicodeコードポイント、具体的には Heavy Black Heart に続いて Variation Selector が必要と思われます。ただし、 青????緑????黄???? 、および 紫???) ? にはそれぞれ独自の単一のコードポイントがあります。

なぜ赤はそんなに違うのですか?

72
Newtang

歴史的な理由から。元々、Emojisをサポートする最初のアプリケーションが赤いハートとしてレンダリングすることにしたU + 2764 HEAVY BLACK HEARTのみがありました。これらの初期のアプリケーションは常にU + 2764を絵文字としてレンダリングしていました。その後、これは悪い考えであり、絵文字のバリエーションセレクターが標準化されたことがわかりました。ハートの絵文字が追加された場合、別の赤いハートは必要ないため、省略されました。代わりに、別のブラックハート絵文字U + 1F5A4 ????があります。

理論上、アプリケーションでは、絵文字バリエーションセレクターを他のハートコードポイントにも追加する必要があります。しかし、PURPLE HEARTのようなキャラクターを絵文字以外としてレンダリングすることはあまり意味がありません。ただし、HEAVY BLACK HEARTには違いがあります。これは、元のプレーンなヘビーブラックハートキャラクターとしてレンダリングされることが多いためです。

60
nwellnhof

HEAVY BLACK HEARTは、絵文字の数十年前にUnicodeに追加されました。絵文字がUnicode 6に組み込まれたとき、不要な重複を避けるために、既存の文字の一部が絵文字として単純に再利用されました。その後、バリエーションシーケンスは、絵文字以外の文字セットにもマップされる文字に対して定義され、表示方法をより適切に制御できるようになりました。たとえば、U + 2744❄SNOWFLAKEは元々Zapf Dingbats(私が信じている)から来たものですが、後に絵文字にもなりました。したがって、元のテキストスタイルの表示を強制する場合はVARIATION SELECTOR-15を使用でき((︎になります)、新しい絵文字スタイルの表示を強制する場合はVARIATION SELECTOR-16を使用できます(結果は❄️です)。

ただし、現時点では、これらのバリエーションシーケンスを実際にサポートしているプラ​​ットフォームは多くありません。また、絵文字キーボードを使用するときに、すべてがバリエーションセレクターを自動的に適用するわけではありません。理論的には❤と❄(および 他の多くの絵文字 )はデフォルトでVS16なしでテキストスタイルとして表示されるはずですが、多くのアプリケーションも同様に無視します。

興味がある場合、私のウェブサイトに、バリエーションシーケンスを介して異なる表示が可能なすべてのコードポイントのリストがあります 。 6月に行われる次のUnicodeの更新により、さらに追加される予定です。

29
CharlotteBuff