絵文字
emoji
UNICODE EMOJI https://unicode.org/reports/tr51/
仕様はあるが完全実装は誰も成功していない模様。サブセットとしての実装があるのが現状。
日本では携帯電話のメールやショートメールで使えるようにキャリアごとに独自に外字として絵文字を作成。
互換性がないためキャリア間で文字化けが発生していた。
音符がウンコに文字化けしていた。
Google が Unicode コンソーシアムに申請して Unicode 経由で統一した変換ができるようになった。Unicode 6.0 から。Emoji 1.0。
https://unicode.org/Public/emoji/1.0/
合成できるようにしたために混沌としてきている。
表示システムが対応していなければ表示は変わらない。
国旗
https://unicode.org/reports/tr51/#def_emoji_flag_sequence
https://unicode.org/emoji/charts/emoji-list.html#country-flag
U+1F1E6(A)~U+1F1FF(Z) の2文字で2文字国名コードと見なしてその国旗を示す。
table:flag_sample
U+1F1EF(J) U+1F1F5(P) 🇯🇵
https://unicode.org/emoji/charts/emoji-list.html#subdivision-flag
U+1F3F4(Waving Black Flag)の後に、U+E0020~U+E0007E によるタグ文字列(ASCIIと同じ配列)で地域別の旗を表す。ISO 3166-2 を使う。ハイフンは含まない。終端は常に U+E0007F (CANCEL TAG)
シーケンスは用意するが表示手段は実装依存、という話なので、実際のところ、まず使えないのでは?
Twitter では Wales の旗が表示されるのを確認した。
Wales の旗のシーケンス
U+1F3F4 WAVING BLACK FLAG
U+E0067 TAG LATIN SMALL LETTER G
U+E0062 TAG LATIN SMALL LETTER B
U+E0077 TAG LATIN SMALL LETTER W
U+E006C TAG LATIN SMALL LETTER L
U+E0073 TAG LATIN SMALL LETTER S
U+E007F CANCEL TAG
🏴󠁧󠁢󠁷󠁬󠁳󠁿󠁳󠁿
ZWJ(ZERO WIDTH JOINER)(U+200D)で結合して合成することになっている。
過去の仕様とのブレがあり、ZWJがはさまらない可能性がある?
https://unicode.org/reports/tr51/#composing_zwj_seq
合成の順序
ベースとなる文字
絵文字のモディファイア(実質、肌色)か、絵文字の表現セレクタ(?
髪型
色
性別
方向
肌色(仕様書上、Diversity と呼ばれているのでやや意味不明)
Unicode 8.0 から
https://unicode.org/reports/tr51/#Diversity
人の肌に対するモディファイアとして機能する。それ以外では単に後ろに色の四角が表示されるのみで合成されない。
EMOJI MODIFIER FITZPATRICK TYPE-1-2~6
https://en.wikipedia.org/wiki/Fitzpatrick_scale
Fitzpatrick スケールを参考にしているが、1と2はなぜか統合されている。
U+1F3FB(1-2)~U+1F3FF(6)
table:fitspatrick
🏻 U+1F3FB Emoji Modifier Fitzpatrick Type-1-2 light skin tone
🏼 U+1F3FC Emoji Modifier Fitzpatrick Type-3 medium-light skin tone
🏽 U+1F3FD Emoji Modifier Fitzpatrick Type-4 medium skin tone
🏾 U+1F3FE Emoji Modifier Fitzpatrick Type-5 medium-dark skin tone
🏿 U+1F3FF Emoji Modifier Fitzpatrick Type-6 dark skin tone
これについてはZWJはなくてもよいはず。
絵文字肌色問題 https://mandel59.hateblo.jp/entry/2015/03/03/084730
髪型
Unicode 8.0 から
https://unicode.org/reports/tr51/#hair_components
ZWJ(U+200D)の後に髪型を付けると合成される。
table:hair
🦰 U+1F9B0 Emoji Component Red Hair
🦱 U+1F9B1 Emoji Component Curly Hair
🦲 U+1F9B2 Emoji Component Bald
🦳 U+1F9B3 Emoji Component White Hair
Emoji Component Red Hair
色
table:color
⬛ U+2B1B Black Large Square
⬜ U+2B1C White Large Square
🟥 U+1F7E5 Large Red Square
🟦 U+1F7E6 Large Blue Square
🟧 U+1F7E7 Large Orange Square
🟨 U+1F7E8 Large Yellow Square
🟩 U+1F7E9 Large Green Square
🟪 U+1F7EA Large Purple Square
🟫 U+1F7EB Large Brown Square
なぜか灰色がないのでカラーコードには使えない。
なぜか形容詞の順序が違う。
🐈⬛
性別または属性
https://unicode.org/reports/tr51/#gender-neutral
例示として以下が挙げられている
Sign format
走者(U+1F3C3)に男性サイン(♂ U+2642)、女性サイン(♀ U+2640)を合成して、男性走者、女性走者を表す
table:runner
U+1F3C3 🏃 Runner
U+1F3C3 U+200D U+2640 🏃‍♀ Female Runner
Object format
男性、女性に、ロケットの合成で宇宙飛行士を示す(無茶振り)
事例が用意されているのでその範囲で実装されている模様。
table:rocket
U+1F469 👩
U+1F469 U+200D U+1F680 👩‍🚀
うんち×カップケーキ=? Androidユーザーだけが使えるGoogle手作りスタンプの妙 https://www.itmedia.co.jp/news/articles/2110/03/news018.html
同じ解釈になることが前提で、当然違う解釈だと違う絵文字になってしまう。
向き
https://unicode.org/reports/tr51/#Direction
table:runner
U+1F3C3 🏃 Runner
U+1F3C3 U+200D U+2640 U+FE0F 🏃‍➡️ Runner running to right
仕様は存在するが、誰も実装できていない模様。
プレゼンテーションスタイル
https://unicode.org/reports/tr51/#Emoji_Variation_Sequences
絵文字の終端に付ける
異体字セレクタ U+FE0E(VS15) を付けると文字的表現(色無し、文字)
異体字セレクタ U+FE0F(VS16) を付けると絵文字的表現(色付き、画像)
https://unicode.org/Public/14.0.0/ucd/emoji/emoji-variation-sequences.txt
table:presentation
U+260E ☎ デフォルト(どちらなのかはシステム依存)
U+260E U+FE0E(VS15) ☎︎ 文字表現
U+260E U+FE0F(VS16) ☎️ 絵文字表現
https://ja.wikipedia.org/wiki/絵文字文化