新しい絵文字を提げて iOS 8.3 がやってきた

Appleが、ドラフト段階の絵文字修飾子を実装したiOS 8.3をリリースした。パブリック・ベータ版とは、Genericな肌色の絵文字の髪の色が、黄色に変更されている点が違う。これは、黄色がアジア人をイメージしたものだというクレームがあったので、Yellow is ethnic-neutral colorを、髪の色にも敷衍させた解決策だろう。金髪に見えなくもないが、悪くはない。少なくとも、アジア人に見えるというクレームは躱せるし、UTR #51のドラフトで推奨されている「暗い髪色」にするよりも、非現実的な髪の色にする方が、中立的に見える*1

もうひとつ、気になっていた家族絵文字の実装の詳細が判明した*2

要は、既存の絵文字をzero width joiner (U+200D)で繋げたものを、新しい絵文字と解釈して表示している。この方法ならUnicodeに新しい絵文字を追加することなく、多様な家族構成の絵文字を実装できる*3。このやり方が、Unicode標準に取り入れられるかどうかは不明だ。

あと、新しい国旗絵文字も追加されたのだが、そのためにUnicodeのRegional Indicator Symbolsの仕様の欠陥がより明らかになった。

スウェーデンとスペインの国名コードはそれぞれSE、ESだ。ということで、スウェーデンの国旗をふたつ並べると、SESE という文字の並びになって、スウェーデンの国旗なのか、スペインの国旗なのかが曖昧だ。Twitterは、現状スペインの国旗だけに対応するので、「S[スペインの国旗]E」というように表示してしまう。

これは酷い。どうしてこうなった。UTF-16サロゲートペアを入れた時には、こういう曖昧なパターンが現れないように考慮していたじゃないか。なんでそれが絵文字で出来なかったんだ? まあ、今更愚痴を言ってもしょうがないのだが、このようなパターンに対処するための仕様を、Unicodeに入れる必要がある*4

*1:どうせなら、Androidの実装のように、人間に見えない、髪の毛のないキャラにしてしまえばいいのではないか? とも思うけど

*2:パブリック・ベータ段階で誰か調べてなかったのかしらん?

*3:4人家族より多い家族の人はどうすればいいか? それこそ沢山絵文字組み合わせて表現すりゃいいですよね

*4:互換性を考えると、Regional Indicator Symbolsの両側にzero width non-joiner (U+200C)を加えて、国旗絵文字どうしを区切るようにするのがいいだろうと思う