STANDARDIZED VARIANTSに「黒四角囲みA」が含まれない理由
- STANDARDIZED VARIANTS(http://www.unicode.org/Public/6.1.0/ucd/StandardizedVariants.html)およびStandardizedVariants.txt(http://unicode.org/Public/6.1.0/ucd/StandardizedVariants.txt)が定義しているバリエーション・シーケンスのうち214が絵文字に関わるものだが、ここにはU+1F170 NEGATIVE SQUARED LATIN CAPITAL LETTER A(以下、単に「A」と呼ぶ)が含まれていない。
- STANDARDIZED VARIANTSが拾っているのは、基本的に「ケータイ絵文字がUnicodeに収録された時点で既存の符号位置に統合されたもの」なので、Unicode 6.0で入った「A」はケータイ絵文字(単独)ソースと見なされ対象外。しかしAdobe-Japan1フォントには、以前から黒四角囲みのアルファベットはすべて入っている。したがって、Unicode 6.0をサポートした(黒四角囲みのアルファベットのマッピングが追加された)Adobe-Japan1フォントを用いる環境では、「A」にも衝突が発生する。STANDARDIZED VARIANTSは、このようなケースに対応していない。
- というわけで、黒四角囲みのアルファベットのなかで「絵文字じゃない文字」と「絵文字」が衝突する「A」「B」「O」「P」のうち、(ARIB外字をソースとして)Unicode 5.2に入っていた「P」はSTANDARDIZED VARIANTSに含まれるが、Unicode 6.0で追加された「A」「B」「O」は含まれない、というわかりにくいことになっている(下図)。
- で、「A」「B」「O」にはバリエーション・シーケンスが使えなくて困るよねと書こうと思っていたのだけれど、実はMountain Lionで試してみたら、「A」「B」「O」などにも「絵文字スタイル」を指示するU+FE0F(VS-16)が効いてしまうことを発見*1。この実装は、規格上はちょっとアレな気もするが、まあ、そのほうが便利かな。
*1:Mountain LionでU+FE0F(VS-16)がStandardizedVariants.txtに登録済みのシーケンス以外でも効いてしまう例には、本文で触れた<1F170, FE0F>、<1F171, FE0F>、<1F17E, FE0F>以外に、<00A9, FE0F>、<00AE, FE0F>、<2122, FE0F>がある。また、「keycap symbol #」のEmoji Style用のシーケンスは<0023, FE0F, 20E3>だが、Mountain Lionでは<0023, 20E3, FE0F>でも同じ結果になる。[0-9]のkeycap symbolも同様。