Closed tateisu closed 4 years ago
今回は emoji-data のデータの中で EVS(絵文字バリエーション・シーケンス) がどう扱われているか調べたよ。
EVS については他の人による説明を参照。 http://d.hatena.ne.jp/NAOI/20120802/1343876603 http://www.unicode.org/Public/6.1.0/ucd/StandardizedVariants.html
emoji-dataに書かれたUnicodeシーケンスはEVSを含む場合とEVSを含まない場合の両方をサポートしている。 ただし新しい規格の絵文字ではEVSありのUnicodeシーケンスしか記載されない。
(A)たとえば cancer のシーケンスは "unified": "264B", "variations": [ "264B-FE0F" ], と書かれていて 絵文字画像のファイル名は "264b.png", と記載されている。
(B)たとえば man-bouncing-ball のシーケンスは 26F9-FE0F-200D-2642-FE0F (+スキントーン) だけで、 EVSなしのシーケンスは記載されない。 絵文字画像のファイル名は "26f9-fe0f-200d-2642-fe0f.png" と定義されている。
EVSが必須な絵文字は正しく変換されるし、他の絵文字はEVSのFE0Fがあってもなくても絵文字になる。
コードの対応が必要なのは以下の二つ。
「古い絵文字+FE0E」に絵文字画像が使われないようにするにはコードでの対応が別途必要になる。
EVSがない古い絵文字をどう扱うかはアプリで検討しないといけない。 copyright とか registered とか trademark とか female_sign とか male_sign とかは絵文字にしたくないという人も多そう。
次は古いemojioneで使えていたshortcodeが全てemoji-dataに揃っているか検証した。
emojioneの古いデータはZWJやEVSがないので、emoji-dataとemojioneのUnicodeシーケンス照合する際は比較文字列の両方からZWJ,EVSを除去しておく。 すると以下の絵文字がemoji-dataに含まれていないことが分かる
old-emojione: lost code 0023 pound_symbol
old-emojione: lost code 002a asterisk_symbol
old-emojione: lost code 0030 digit_zero
old-emojione: lost code 0031 digit_one
old-emojione: lost code 0032 digit_two
old-emojione: lost code 0033 digit_three
old-emojione: lost code 0034 digit_four
old-emojione: lost code 0035 digit_five
old-emojione: lost code 0036 digit_six
old-emojione: lost code 0037 digit_seven
old-emojione: lost code 0038 digit_eight
old-emojione: lost code 0039 digit_nine
old-emojione: lost code 1f1e6 regional_indicator_a
old-emojione: lost code 1f1e7 regional_indicator_b
old-emojione: lost code 1f1e8 regional_indicator_c
old-emojione: lost code 1f1e9 regional_indicator_d
old-emojione: lost code 1f1ea regional_indicator_e
old-emojione: lost code 1f1eb regional_indicator_f
old-emojione: lost code 1f1ec regional_indicator_g
old-emojione: lost code 1f1ed regional_indicator_h
old-emojione: lost code 1f1ee regional_indicator_i
old-emojione: lost code 1f1ef regional_indicator_j
old-emojione: lost code 1f1f0 regional_indicator_k
old-emojione: lost code 1f1f1 regional_indicator_l
old-emojione: lost code 1f1f2 regional_indicator_m
old-emojione: lost code 1f1f3 regional_indicator_n
old-emojione: lost code 1f1f4 regional_indicator_o
old-emojione: lost code 1f1f5 regional_indicator_p
old-emojione: lost code 1f1f6 regional_indicator_q
old-emojione: lost code 1f1f7 regional_indicator_r
old-emojione: lost code 1f1f8 regional_indicator_s
old-emojione: lost code 1f1f9 regional_indicator_t
old-emojione: lost code 1f1fa regional_indicator_u
old-emojione: lost code 1f1fb regional_indicator_v
old-emojione: lost code 1f1fc regional_indicator_w
old-emojione: lost code 1f1fd regional_indicator_x
old-emojione: lost code 1f1fe regional_indicator_y
old-emojione: lost code 1f1ff regional_indicator_z
SubwayTooterとしては当面の間は後方互換性を重視する。古いEmojioneのUnicodeシーケンスも絵文字として表示する。古いEmojioneのShortcodeも絵文字として表示する。moji-dataにない上記の絵文字はemojioneのデータ/画像を利用する。
マストドンが使うことになった絵文字ライブラリは emoji-mart https://github.com/missive/emoji-mart で、 これは emoji-data https://github.com/iamcal/emoji-data の絵文字データを利用している。
Subway Tooter でも emoji-dataの絵文字データを使うことにしたけど、 データ内容を色々検証してからJavaで使えるデータに変換している。