新しい絵文字を提げて iOS 8.3 がやってきた
Appleが、ドラフト段階の絵文字修飾子を実装したiOS 8.3をリリースした。パブリック・ベータ版とは、Genericな肌色の絵文字の髪の色が、黄色に変更されている点が違う。これは、黄色がアジア人をイメージしたものだというクレームがあったので、Yellow is ethnic-neutral colorを、髪の色にも敷衍させた解決策だろう。金髪に見えなくもないが、悪くはない。少なくとも、アジア人に見えるというクレームは躱せるし、UTR #51のドラフトで推奨されている「暗い髪色」にするよりも、非現実的な髪の色にする方が、中立的に見える*1。
もうひとつ、気になっていた家族絵文字の実装の詳細が判明した*2。
The new family emojis are made from 4 emojis joined by U+200D character in #iOS and #Yosemite pic.twitter.com/o8GamFNGqQ
— Zhusee (@zhusee2) 2015, 4月 8
要は、既存の絵文字をzero width joiner (U+200D)で繋げたものを、新しい絵文字と解釈して表示している。この方法ならUnicodeに新しい絵文字を追加することなく、多様な家族構成の絵文字を実装できる*3。このやり方が、Unicode標準に取り入れられるかどうかは不明だ。
あと、新しい国旗絵文字も追加されたのだが、そのためにUnicodeのRegional Indicator Symbolsの仕様の欠陥がより明らかになった。
Way too pumped about the new Swedish flag emoji 🇸🇪🇸🇪
— Danny Donahue (@danny_donahue) 2015, 4月 8
スウェーデンとスペインの国名コードはそれぞれSE、ESだ。ということで、スウェーデンの国旗をふたつ並べると、SESE という文字の並びになって、スウェーデンの国旗なのか、スペインの国旗なのかが曖昧だ。Twitterは、現状スペインの国旗だけに対応するので、「S[スペインの国旗]E」というように表示してしまう。
これは酷い。どうしてこうなった。UTF-16のサロゲートペアを入れた時には、こういう曖昧なパターンが現れないように考慮していたじゃないか。なんでそれが絵文字で出来なかったんだ? まあ、今更愚痴を言ってもしょうがないのだが、このようなパターンに対処するための仕様を、Unicodeに入れる必要がある*4。