異体字セレクタ
Variation Selector
バリエーションセレクタ
Variation Sequence
バリエーションシーケンス
異体字シーケンス
Unicode では Unification することで文字を同じ符号にまとめてしまったが、実際には字形の違いが重要になることが多い。
最も正統な字(歴史的に表れた経緯が分かるもの、何らかの権威により定義がされたもの、使用例が多いもの)が正字と呼ばれ、正字と同じ意味だが字形が違うものは異体字(Variation)と呼ばれる。
Unicode では例示字形が実質的な正字となる。
元々は「字形が違うならフォントで切り換えて表示すればよい」という考えだったようだが、現実にはそれはとても困難だった。
プレーンテキストではフォントを指定できない。
ファイル名は現在の運用では常にプレーンテキストになる。
字形が異なるものを字形ごとに同一性を判定できない。
細かな字形ごとにフォントを提供する方法が存在しない。
そこで、Unicode の文字シーケンスで異体字を指定する方法が用意されるようになった。これが異体字セレクタになる。
基底文字の後に異体字セレクタを繋いだものが異体字シーケンス(Variation Sequence)になる。
異体字セレクタは他の文字と衝突しない特別なコードとして定義されている。
U+FE00~U+FE0F Variation Selectors https://en.wikipedia.org/wiki/Variation_Selectors_(Unicode_block)
U+E0100~U+E01EF Variation Selectors Supplement https://en.wikipedia.org/wiki/Variation_Selectors_Supplement
異体字セレクタは3種類存在する。
SVS Standardized Variation Sequence
https://www.unicode.org/Public/UNIDATA/StandardizedVariants.txt で定義されている。
IVS Ideographic Variation Sequence
IVD (Ideographic Variation Database) で管理されている。
Unicode Technical Standard #37 UNICODE IDEOGRAPHIC VARIATION DATABASE にて定義。
emoji variation sequences
https://www.unicode.org/Public/UNIDATA/emoji/emoji-variation-sequences.txt で定義されている
問題
異体字セレクタは後付けであるため、それ以前に Unicode に含まれてしまった異体字についてはそのままになっている。
Unification の思想(文字コード変換後、元の文字コードに戻した時に同一の文字コードに戻せなければならない)のために、「同じ意味だが違う文字」は完全に1つに統合されていない。このため、「異体字セレクタを使わない異体字」が存在している。
当初は「フォントごとに定義すればよい」という考えだったために、フォント間での字形の同一性が考慮されておらず混乱が生じている。
「異体字セレクタを外せば文字の意味として同一性を比較できる」というのは間違い。比較する時にはUnicode正規化を行う必要がある。
異体字セレクタができる経緯については Wikipedia に詳しく載っている。
General variation sequences FAQ http://unicode.org/faq/vs.html
IVD/IVSとは https://moji.or.jp/mojikiban/aboutivs/
https://ja.wikipedia.org/wiki/異体字セレクタ