異体字セレクタ
異体字セレクタ (いたいじセレクタ、Variation Selectors) は、Unicode および ISO/IEC 10646 (UCS) における、文字の字体をより詳細に指定するためのセレクタ (選択子) である。
Unicodeでは抽象的な文字を定め、個々の文字の字形の詳細には立ち入らない。このため同じ意味で似た形の文字には同じ電子的な表現が与えられ、字形の区別が必要なときはフォントの指定などによって行うのが原則である。
この原則は、たとえばラテン文字の 'a' で、上部の右から左へ伸びる線があるかどうか、という違いは通常は「フォントの違い」であり「別の字」とはしないためほとんど問題ない。しかし例えば、CJK統合漢字において、Han unification (Han unification) や各国内標準の都合を理由として、運用上しばしば「別の字」とされる字形を、様々な経緯の結果「詳細/デザイン差」として同じ符号位置としてしまっているのは、問題がしばしば発生する (初期のUnicodeが提案された当初から危惧されていた通りに)。そのため、状況によっては、フォントの指定などを含めることができないプレーンテキスト上で字形の区別を保存したいという需要も存在する。
ほとんどのオペレーティングシステムにおいてはプレーンテキストであり、プレーンテキストで区別できないものは区別できない。
IMEに単語登録可能な文字列は通常プレーンテキストのみである。このためフォントの指定やDTPアプリケーションによる字形の選択が可能であっても、通常の文字入力とは異なる操作を要求される上に正しい組み合わせを覚えていなければならず、ほとんどの一般利用者にとって現実的な手間で入力できない。たとえばWindows Vistaでは葛飾区と葛城市を区別して表示できるが、「かつしかく」が葛飾区、「かつらぎし」が葛城市のように区別して変換されるような単語登録はできない。ただしegbridgeなど、Mac OS Xのインプットメソッドのうちグリフアクセスプロトコルに対応したものはプレーンテキストの制約に縛られない。
電子メールの送信に使われるSMTPなどの情報交換用プロトコルは、情報交換をプレーンテキストで行うよう設計されている。このため、Mac OS Xのグリフアクセスプロトコルのように内部に閉じたテキスト処理ではプレーンテキストの制約を取り払ったシステムも、メールなどによる外部との情報交換では字形の区別を保存できない。
このような字形の区別にかかわる需要は、Unicodeの漢字統合の規則が国内での運用の実情に沿っていない日本では特に顕著であり、JISの各文字集合 (JIS X 0208、JIS X 0212、JIS X 0213) やUnicodeで満たせない需要に対応するため、官庁では戸籍統一文字や住民基本台帳ネットワーク統一文字など、民間では今昔文字鏡やGTプロジェクトなどといった独自の大規模文字セットが繰り返し作成され、一部で運用されてきた。しかしそれらは独自であるがゆえに、Unicodeを使用している既存の大多数のPC環境と相互運用性がない。
異体字セレクタは以上のような問題をUnicode上で解決するために考案された特殊な「文字」(符号位置が与えられているもの、という意味では「文字」) である。異体字セレクタが利用できる文字は規格で定められており、先行する1文字 (基底文字) の後に規格で定義された異体字セレクタを付けることで異なる字形が選択できる。なお基底文字と異体字セレクタで構成された文字を異体字シーケンス(Variation sequence)とよぶ。異体字セレクタを用いれば、異体字は文字コードとして表現できるため、プレーンテキスト上でも字形の区別をつけることができる。HTMLやCSSなどのWeb標準を管理しているWorld Wide Web Consortiumは、HTMLなどのマークアップ言語においても字形を指定するために異体字セレクタを使うことを想定している。なお異体字セレクタは、付加された文字の字形をより詳細に指定する機能を持つが、異体字セレクタそのものが表示されることはない。
異体字シーケンスには2種類あり、Standardized Variation Sequence (標準化された異体字シーケンス、略称 SVS) と、Ideographic Variation Sequence (漢字異体字シーケンス、略称 IVS) がある。
SVSは非漢字やCJK互換漢字などで利用され、その字形コレクションはUnicodeのStandardized Variantsにて定義されている。Standardized Variantsへの字形の追加は、ユニコードコンソーシアムが行なっている。
一方、IVSは漢字専用で、字形コレクションは Ideographic Variation Database (漢字異体字データベース、略称 IVD) にて定義されている。IVDへ字形コレクションを登録するには、定められた手続きに則ってユニコードコンソーシアムへ申請を行う必要がある。
2017年12月現在、異体字セレクタにより利用できる異体字は、以下のとおりである。
Standardized Variantsに登録されている字形コレクションとその数
数学記号:25通り
ミャンマーのビルマ文字:27通り
パスパ文字:6通り
マニ文字:5通り
モンゴル文字:60通り
CJK互換漢字に対応するもの:1,002通り
絵文字:702通り (テキストスタイルと絵文字スタイルが351通りずつ)
IVD (2017-12-12版) に登録されている字形コレクションとその数
Adobe-Japan1コレクション:14,683通り
汎用電子情報交換環境整備プログラムのHanyo-Denshiコレクション:13,045通り
文字情報基盤整備事業のMoji_Johoコレクション:11,384通り
マカオ特別行政区のMSARGコレクション:21通り
韓国のKRNameコレクション:36通り
ただしHanyo-Denshiには、Adobe-Japan1と多数の重複がある (後述の#問題点も参照)。Hanyo-DenshiとMoji_Johoでは同一の字形は異体字セレクタを共有している。Adobe-Japan1では、文字セットのAdobe-Japan1-6に含まれる漢字であれば「一」(U+4E00) のように単一の字形しか存在しないものでもその単一の字形が登録されている。Hanyo-Denshiでは、Adobe-Japan1とは異なり同一符号位置で複数の字形を持つもののみ登録されており、単一の字形しか存在しないものは登録されていない。
異体字セレクタとして以下のものが定義されている。
モンゴル文字専用のモンゴル自由字形選択子 (Mongolian Free Variation Selector、略称 FVS) :U+180B〜U+180D (3個)
SVSで利用される異体字セレクタ:U+FE00〜U+FE0F (VS1~VS16) (16個) (基本多言語面 (BMP) に定義)
IVSで利用される異体字セレクタ:U+E0100〜U+E01EF (VS17~VS256) (240個) (追加特殊用途面 (SSP) に定義)
異体字セレクタとそれが付加される文字との組み合わせ、および指定される字形は規格で定められており、それ以外の組み合わせは無視される。利用者が独自に考えた未登録の字形を利用したい場合には私用領域を用いる。私用の異体字セレクタ (Private Use Variation Selectors) を追加する提案もあったが、取り入れられていない。
IVSでは拡張領域である追加特殊用途面 (SSP) に定義された異体字セレクタ (U+E0100〜U+E01EF, VS17~VS256) を使用する。このためIVSに対応し、UTF-16を使用するアプリケーションは、サロゲートペアを正常に扱えなければならない。逆にSVSではUnicode 10の時点では全て基本多言語面 (BMP) の異体字セレクタ (U+FE00〜U+FE0F, VS1~VS16) を使用している。なおCJK互換漢字は、漢字でありながらIVSではなく非漢字と同じSVSとして登録されたため、基本多言語面 (BMP) の異体字セレクタを使用する。
2012年1月には絵文字としても使われる107文字がStandardized Variantsに追加され、テキストスタイル (普通の文字のように白黒で表示) と絵文字スタイル (カラーで表示したり、アニメーションする) の切替をSVSで行えるようになった。使用する異体字セレクタは基本多言語面に規定されたもので、テキストスタイルがU+FE0E (VS15)、絵文字スタイルがU+FE0F (VS16) となっている。
なお、U+303EにIDEOGRAPHIC VARIATION INDICATOR (直訳すると漢字異体字表示子) という似たような名称で、かつ例示字形が点線で囲まれている (通常は不可視である制御文字などを示す) ものが存在するが、これはこれに続く漢字が異体字であることを示す可視の記号 (下駄記号の異体字版) であり、異体字セレクタではない。
JIS X 0213やCNS 11643などの各国の文字コードでは区別されているが、Unicodeでは統合されている文字を区別するため、UnicodeではこれまでCJK互換漢字を使ってきた。しかし技術的な制約により、漢字の異体字セレクタはCJK統合漢字 (正確にはUnified_Ideographプロパティを持つ文字) にしか付けることができない。これはUnicode正規化に対する安定性の問題 (CJK互換漢字#日本語処理における問題点を参照) を改善するが、同じ字形を意図していても異体字セレクタに対応した実装と対応していない実装との間で異なる符号化表現が採用され、混乱を招く可能性も指摘されている。
また、2006年1月にIVDへの字形コレクションの登録手続きが制定され、登録が可能になった後にもARIB外字や汎用電子情報交換環境整備プログラムで収集された漢字の一部をCJK互換漢字として収録することが要望されるなど、足並みは必ずしもそろっていなかった。
2013年9月30日制定のUnicode 6.3では、CJK互換漢字がUnicode正規化でCJK統合漢字に置き換えられ、字形等の情報を失ってしまう問題を解消するために、CJK互換漢字と等価なCJK統合漢字と異体字セレクタの組合せがIVDとは別にStandardized Variantsに登録され、SVSにより利用できるようになった。IVSとは異なり基本多言語面にあるU+FE00 (VS1) ~U+FE02 (VS3) を使う。IVDにある字形と同じものでも登録されている。CJK互換漢字ブロックおよびその補助集合のうち、CJK統合漢字として扱うものを除いた1,002字全てが登録された。例えば、「侮」の康煕別掲の字体でありCJK互換漢字であるU+FA30の「侮」は、U+4FAEとU+FE00 (VS1) の組合せで登録された。また、字体の違いでなく韓国KS X 1001の読みの違いで分離されているものや台湾Big5の誤って重複収録されたものに対応するCJK互換漢字にも異体字セレクタが与えられている。例えば、U+F90Aの「금」(Geum、クム) と読む「金」には、U+91D1 (KS X 1001では「김」(Gim、キム) と読む「金」に対応) と字体が全く同じであるが、これにU+FE00 (VS1) を付け加える組合せが与えられた。
フォントを指定できないプレーンテキストでの使用を想定されているにもかかわらず、異体字セレクタに対応したフォントを指定できる環境以外では、異体字セレクタを使用しても対象の環境で意図した異体字が表示されるとは限らない。ただし外字と異なり、異体字セレクタは文字コード上で指定されるため、どのような字形を意図していたかの情報は失われない。
すべての環境で異体字セレクタに対応しているとは限らず、対応した環境であっても対応範囲はフォントによって必ずしも一様ではない。たとえばWindows 8.1搭載の日本語フォントのうち、游明朝・游ゴシックはAdobe-Japan1によるIVSを完全にサポートするが、MS 明朝・MS ゴシックはおおむねJIS X 0213:2004で例示字形が変更される以前の字形 (いわゆるJIS90での字形) のみをIVSでサポートする。
IVDでは当初、登録者が異なれば同一の字形の漢字であってもそれぞれでIVSが割り当てられることになっていたため、Adobe-Japan1 と Hanyo-Denshi (Moji_Joho) 同士で、同一の字形の漢字に重複してIVSが割り当てられる事態が発生した。例えば「葛」の場合、葛飾区の「葛」 (U+845B, JIS2004字形) の字形では、Adobe-Japan1 の VS18 (U+E0101, CID+7652) と、Hanyo-Denshiの VS20 (U+E0103, FT1769) が割り当てられ、また葛城市の「葛」 (U+845B, JIS90字形) の字形では、Adobe-Japan1 の VS17 (U+E0100, CID+1481) と Hanyo-Denshiの VS19  (U+E0102, JA1975) が与えられた。なお、2011年8月17日のUTS #37の改訂で、登録者同士で合意があればIVSの共有が可能となり、実際にその後IVDに追加されたMoji_Johoでは既存のHanyo-Denshiと同一字形ではIVSを共有している。
Unicode 6.3ではIVSとは別にCJK互換漢字にSVSとしても異体字セレクタが与えられた (詳細は前述の#CJK互換漢字との関係を参照) ため、例えば「侮」(U+FA30, CJK互換文字) には「侮」 (U+4FAE) のIVSとして、Adobe-Japan1のVS18 (U+E0101, CID+13382) とHanyo-Denshi / Moji_JohoのVS20 (U+E0103, JC1424 / MJ030244) が割り当てられた他、CJK互換漢字の U+FA30 に対応するSVSとして VS1 (U+FE00) が与えられるなど、同じ字体に異体字セレクタが3つ、符号位置としては4つも与えられることとなった。
現状では言語によって異なる異体字 (図参照) のようなケースを異体字セレクタで区別することができない。
Unicodeは主に米国企業の集まりからなるユニコードコンソーシアムが定める私的な文字コード規格だが、国際符号化文字集合 (ISO/IEC 10646, UCS) との間で、収録文字と符号の割り当てに関して常に同期を取ることで合意がなされている。国際符号化文字集合は国際標準化機構 (ISO) と国際電気標準会議 (IEC) の合同技術委員会 (ISO/IEC JTC 1) 第2小委員会 (SC2) 第2作業部会 (WG2) で制定作業が行われている。以下、WG2での動きを中心に異体字セレクタの収録にかかわる歴史を概観する。
2000年9月15日、ISO/IEC 10646-1が改訂され、中国の提案によりUCSに収録されたモンゴル文字の一部としてモンゴル自由字形選択子 (Mongolian free variation selector) 3文字が規定された。
2000年3月14日、アメリカがUCSへの数学記号の追加を提案した。この一部として、異体字セレクタ1文字が含まれていた。これは、意味が同じだが出版社の慣習や著者の好みなどにより異なる字形が使われることのある数学記号の字形を区別するために使うことを意図していた。
2001年1月14日、アメリカが追加の異体字セレクタの収録および異体字セレクタの使い方に関する説明の追加を提案した。この説明は漢字に対しての使用が想定されていたが、実際に漢字に対して定められた組み合わせはこの時点で1つも存在しなかったため、漢字に関する言及は除いてWG2に受理された。
2001年8月17日、WG2のリエゾン会員であるユニコードコンソーシアムが、活動報告として255文字の異体字セレクタを追加で承認したことを述べた。UCSとUnicodeの同期の原則により、これらはUCSにも収録される必要があった。
2002年3月27日にUnicode 3.2が、7月15日にISO/IEC 10646-1:2000 追補1が制定された。これらは256文字の異体字セレクタのうち基本多言語面に含まれる16文字を収録していた。
2002年4月1日、日本はWG2に、万寿の表現には少なくとも10000種類の異体字セレクタが必要であるから、UCSの第13面をまるまる漢字の異体字セレクタに割り当てるべきであるとする文書を提出した。ただしこれは大真面目に書かれてはいるもののジョークRFCに似たエイプリルフール文書で、なぜかWG2の第42回会議の議題にまで上ってしまったが、実際には審議されていない。
2002年5月20日、日本は上記アメリカの提案が異体字セレクタを漢字に使うつもりであったことに関して、議論が全く深められておらず導入は時期尚早であると懸念を表明した (モンゴル文字や数学記号の収録に伴う異体字セレクタの導入ではそれまで長い時間を掛けて検討が重ねられていた)。
2003年4月にUnicode 4.0が、12月にISO/IEC 10646:2003が制定され、追加面に含まれる異体字セレクタの残り240文字が両規格に収録された。
2003年6月25日、ドイツがウムラウトとトレマを区別するための異体字セレクタの追加を要望したが、技術的制約により異体字セレクタでは実現不可能であったため却下された。
2005年7月16日、アメリカの企業アドビのエリック・ミューラーとアメリカの企業サン・マイクロシステムズの樋浦秀樹 (当時) より、異体字セレクタを実際に漢字で運用するための漢字字形データベース (Ideographic Variation Database、IVD) の規格草案がユニコードコンソーシアムに提案され、2006年1月13日正式版が発行された。
2006年7月4日にISO/IEC 10646:2003 追補2が、14日にUnicode 5.0が制定され、両規格へのパスパ文字の収録に合わせてパスパ文字と異体字セレクタの組み合わせが追加された。
2007年12月14日、Adobe-Japan1が最初の漢字字形コレクションとして正式に承認され、IVDに登録された。ただし2度の公開レビューにもかかわらず割り当てに疑問が残る組み合わせの存在も指摘されている (右図はその一例)。
2008年10月10日、日本は汎用電子情報交換環境整備プログラムの成果として収集・整理された、戸籍や住民基本台帳ネットワークの処理に必要とされる異体字を、互換漢字として追加提案した。これに対しUnicode Technical Committee (UTC)と米国は、互換漢字は正規化に際して区別が保存されず、また統合漢字の字形の一意性は保証されないため、IVDによる登録を推奨するとコメントした。またUTCは、SC2からの登録に対して通常IVDへの登録にかかる登録料を免除すると伝えた。これを受け、2009年10月16日、日本は互換漢字の追加提案を取り下げた。
2010年3月31日、日本は取り下げた互換漢字の追加提案に代わってIVDへ登録を申請し、2010年11月14日正式にHanyo-Denshiとして登録された。
2010年12月6日、アドビ、イースト、ジャストシステム、大日本スクリーン、マイクロソフト、モリサワの6社共同で、IVSの普及推進を目的としてIVS技術促進協議会が設立された。
2011年4月2日、UTCから簡体字をIVSで表す登録申請の準備をしていることが告知された。しかしCJK統合漢字の既存の符号化モデルと矛盾する上に、21字中符号化済みの漢字が6字も含まれるというずさんな提案であり、IRG・韓国・イギリスなどから懸念が寄せられ、登録申請は中止された。
2012年1月31日、Unicode 6.1が制定。絵文字のテキストスタイルと絵文字スタイル切り替えのための異体字セレクタの組合せが登録された。
2012年3月2日、IVDがバージョンアップ。Hanyo-DenshiとAdobe-Japan1のこれまで登録されていなかった異体字のうち一部が追加登録された。
2013年9月30日、Unicode 6.3が制定。CJK互換漢字の字形コレクションがSVSに登録された。
2014年5月16日、IVDがバージョンアップ。文字情報基盤整備事業のMoji_Johoが登録された。
2016年6月21日、Unicode 9.0が制定。絵文字の追加等があった。
2016年8月15日、IVDがバージョンアップ。マカオ特別行政区のMSARGが登録された。日本以外が登録者のIVD登録は初である。
2017年12月12日、IVDがバージョンアップ。Moji_JohoとAdobe-Japan1で字形の組み合わせの追加があった他、韓国のKRNameが新たに登録された。
漢字の異体字セレクタに対応した実装には以下のようなものがある。
以下は和文フォントでの異体字セレクタへの対応状況である。
MS 明朝・MS ゴシック・メイリオ・Meiryo UI - OSバンドルフォント。Windows 8に搭載のバージョンから、JIS X 0213:2004で例示字形が変更される以前の字形 (いわゆるJIS90の字形) 122文字をIVSによりサポートしている。
ヒラギノ角ゴシック/明朝/丸ゴシック ProN (Adobe-Japan1) - OSバンドルフォント及び市販フォント。Mac OS X Lion (10.7) に搭載のバージョン (8.10) からAdobe-Japan1によるIVSに対応した。
游明朝体・游ゴシック体 Pr6N (Adobe-Japan1) - OSバンドルフォントおよび市販フォント。OS X Mavericks (10.9) 以降とWindows 8.1以降、および一太郎2014プレミアムにバンドルされているバージョンで対応。Adobe-Japan1のIVSをサポートしている。
小塚明朝・小塚ゴシック Pr6N (Adobe-Japan1) - 市販フォント。2007年8月1日のバージョン6.003でAdobe-Japan1のIVSに対応した。
源ノ角ゴシック (Noto Sans CJK)・源ノ明朝 (Noto Serif CJK) - フリーフォント。アドビとGoogleの共同開発。日本語部分ではAdobe-Japan1のIVSおよびCJK互換漢字のSVSに対応している。なおAdobe-Japan1-6文字セットの漢字グリフは網羅しているが、Adobe-Japan1との互換性がとくに考慮されているわけではない。
IPAフォント - フリーフォント。
IPAexフォント - JIS X 0213:2004で例示字形が変更される以前の字形など352文字をIVSによりサポートしている。また、搭載しているCJK互換漢字93文字にSVSを実装している。
IPAmj明朝 - 約1万文字にMoji_JohoによるIVSを実装している。2017年12月に文字情報基盤整備事業の漢字のUCSでの規格化が完了、2018年1月に対応版がリリースされた。
花園フォント (Adobe-Japan1) - フリーフォント。2009年12月1日版よりIVSのサポートを開始し、2010年2月22日版でAdobe-Japan1のIVSを完全収録した。
Y.OzFont - フリーフォント。2008年2月8日のバージョン12.04以降、IVSに対応している。
和田研フォント - フリーフォント。IVSに対応したものは「和田研細丸ゴシックProN」がある。JIS X 0213:2004で例示字形が変更される以前の字形をこれによりサポートしている。
モリサワ、イワタ、フォントワークスが販売しているフォントでは、Adobe-Japan1-6 (Pr6N/Pr6) の多くのフォントでIVS (Adobe-Japan1) に対応している。
OpenType 1.5では、Unicodeの異体字セレクタによる字形切り替えをサポートするため、cmapテーブルでFormat 14 "Unicode Variation Sequences"を規定した。
SVGフォントはIVSに限らず、任意のUnicode符号列に対してグリフを割り当て可能である。
Unicodeの異体字セレクタに対応したフォントの作成に対応した (cmapテーブルのFormat 14の生成ができる) ツールには、以下のようなものがある。
FontForge - 2007年10月2日以降のビルドでcmapテーブルのFormat 14の生成に対応。
Adobe Font Development Kit for OpenType (AFDKO) - バージョン2.1以降でcmapテーブルのFormat 14の作成に対応。
TTX/FontTools - GlyphWikiでIVS対応フォントの生成に使われている。
TTEdit - IVS対応 TrueTypeフォントから作成した場合。
FreeTypeの2007年10月以降の開発版には、フォントファイル内のcmapテーブルから異体字セレクタの情報を読み取るためのAPIが追加されている。
Windows 7では標準のテキスト描画処理が異体字セレクタに対応しており、エクスプローラーでのファイル名表示やメモ帳やサードパーティのテキストエディタでのテキスト表示等で異体字セレクタによる字形切り替えが可能である。ただし、使用するフォントが異体字セレクタによる字形切り替えに対応している必要があり、日本語版の標準フォントであるメイリオはWindows 7にバンドルされたバージョンではIVSに対応していないため、初期状態では異体字セレクタで字形が切り替わらない。
Windows 8以降、システム標準の日本語フォントがIVSに対応した。
Mac OS X 10.5標準のテキスト描画処理はdefault ignorableプロパティに従い異体字セレクタを描画しないが、字形の切り替えはサポートしない。
Mac OS X 10.6標準のテキスト描画処理は字形の切り替えをサポートするが、Windows 7と同様標準フォントのヒラギノは異体字セレクタに未対応である。
Mac OS X Lion (10.7) で、ヒラギノフォントがAdobe-Japan1によるIVSに対応した。
Alpha (テキストエディタ) - 2008年2月のIVS-OTFT試験公開版では異体字セレクタの情報をOpenType機能タグの情報に変換することにより、異体字セレクタによるグリフの切り替えに対応している。
EmEditor v11以降
FooEditor (テキストエディタ)
gPad (テキストエディタ)
Mery (テキストエディタ)
oedit (テキストエディタ)
Adobe Reader 9以降、Flash Player 10のFlash Text Engine、Adobe InDesign CS4などのアドビ社製品。
Windows 7上でのOpera (Presto)
Mozilla Firefoxはバージョン4以降、システムにインストールされたフォントおよびWebフォントによる異体字セレクタの描画をサポートする。またバージョン31以降、CJK互換漢字のStandardized Variantsをフォントがサポートしていない場合に、CJK互換漢字のグリフで代替する機能を持つ。
WebKitはSVGフォントをサポートしており、SVGフォントによって定義したIVSによる字形切り替えが可能である。Opera (Presto) もSVG文書でのみSVGフォントによる字形切り替えが可能。
一太郎2008以降 - 入力機能は2014 徹から。それ以前は貼り付けのみ対応。個人向けATOKも2014より正式対応。法人向けはその前年より。