よくわかるIVS

IVSとは?

IVSは何故必要か?

今まで「外字」を使って表示していた異体字をIVSを使って表示できます。
※IVS(Ideographic Variation Sequence):「基礎知識」で解説します。

例えば、「つじ くに男」というお名前の場合、名字と名前の文字の違いの組み合わせだけで8種類の違いがでてきます。
どの組み合わせかの区別を、今までは、「外字」を使って区別していました。
しかし、IVSを導入すれば、プレーンテキスト文章でも区別ができます。

 

異体字(辻邦)

IVS文字 表示デモ動画

MacintoshおよびWindows環境でIVS文字の表示確認を行っています。

※動画を再生するには、videoタグをサポートしたブラウザが必要です。

外字と異体字について

外字とは

文字コード規格表に含まれない文字のことであり、ユーザーが定義したユーザー定義文字やメーカーによって定義された機種依存文字、ベンダ拡張文字を指します。
異なるシステム、アプリケーション間でオリジナルデータの文字コードの表示が必ずしも同じ文字として表示されない場合など「外字」として処理します。

異体字とは

一般には「意味、読みが同じであるが、異なる形の字」。外字による対応が多いです。

異体字ー葛藤

よくわかるIVS

基礎知識-目次

文字コード基礎知識

1.文字コードとフォント

フォントとは、活字やコンピューターにおいて扱われる文字のうち、統一された書体や大きさの文字のセットのことです。
フォント形式には、ビットマップフォント[1]、アウトラインフォント[2]があります。
文字セットつまり文字集合には様々な文字が収録されており、これらの個々の文字に固有の符号や文字コードを決めて使用します。


[1] ビットマップフォント
文字をドット(点)の集合によって表現する方式。
[2] アウトラインフォント
文字の輪郭(アウトライン)を座標、関数として記録し計算によって描画する方式、文字の拡大・縮小による字形の崩れを解消している。
アウトラインフォントの代表的な形式
PostScriptAdobe Systemsが開発したアウトラインフォントの仕様です。
3次ベジェ曲線で文字を表現します。
TrueTypeApple,Microsoftが開発したアウトラインフォントの仕様です。
2次ベジェ曲線で文字を表現します。
TrueType仕様としてはVer.1.66まで公表されており、その後OpenTypeに含まれる形で仕様が追加されています。
OpenTypeAdobe Systems,Microsoftの共同設計で、Appleが賛同する形で発表された仕様です。
文字を表現する際にPostScript形式、TrueType形式のいずれかでデータが埋め込まれるフォントです。
TrueType形式でサロゲートペア、IVSに対応しているケースは、実際にはOpenType仕様に基づいています。

2.文字コードとは? (符号化文字集合と符号化方式の違い)

文字集合の定義として符号化文字集合[3]があります、具体的にはJISやUnicodeなどの規格です。これに対して実装上の文字コードは、文字符号化方式[4]でShift_JIS,EUC-JP,UTF-8,UTF-16などを指します。


[3] 符号化文字集合(CCS:Coded Character Set)
どのようなグリフが含まれているか(文字の集合)を規定します。
符号化された(Coded)文字(Character)の集まりであり、個々の文字に固有の符号を割り当て、識別可能にした文字集合を指します。管理上の識別符号はありますが、文字コードを定めているわけではありません。
JIS X0213:2004に収録されている「亜」の管理上の識別符号
  • 面・区・点:  1面、16区、1点
  • Unicode:  U+4E9C
「面・区・点」、Unicodeは「符号」であり文字コードではありません。
[3-1] JIS規格の文字集合の管理
JISでは主な文字集合としてJIS X0208、JIS X0213を定めています。
これらはそれぞれの改定年により、JIS X0208は通称JIS78、JIS83、JIS90。JIS X0213では通称JIS2000、JIS2004があります。
Windows XPではJIS90対応、Windows Vista以降はJIS2004対応のMS明朝・ゴシックフォントが搭載されています。
JIS X0208では文字集合を94の「区」と94の「点」の組み合わせ(計8,836字)として管理しています。そのため、この管理上の識別符号は「区点コード」と呼ばれます。
JIS X0213では非漢字を含め文字数が10,000字を超えるため、「区点」の組み合わせをひとつの「面」とし、「面・区・点」で文字を管理しています。
[4] 文字符号化方式(CES:character encoding scheme)
文字集合の個々の文字を(コード)として表現する方法を指します。一般に一つの文字集合に対して、用途に応じて(メール、Webなど)複数の符号化方式があります。
符号化文字集合文字符号化方式
JIS X 0208Shift_JIS,EUC-JP,ISO-2022-JP
UnicodeUTF-8,UTF-16,UTF-32

3.Unicodeについて

Apple社、IBM社、Microsoft社など米国の情報関連企業の集まりからなるユニコードコンソーシアム(The Unicode Consortium)という非営利団体が定める私的な文字規格です。現在では、国際符号化文字集合 (ISO/IEC 10646)の一部として標準化されています。

Unicodeは様々な言語に対応し、国を超えた相互運用性、相互接続性の実現のための文字集合です。
Unicodeの管理上の識別符号は「Unicodeスカラー値」といい、「U+」を付けて16進数で表現します。
Unicodeでは識別符号が示す文字が、意味や成り立ちから区別されておらず、字形としてほぼ一致するものをまとめています。これを包摂とよびます。そのため、漢字圏では特に字形の揺らぎがあります。

Unicode1.0では1文字あたり2バイトのデータ量(0x0000~0xFFFF)を使い65536通りの文字で世界中の文字を表現しようとしました。
ところが、近年Unicodeに組み込みたい文字の要望が増えたためこれだけでは収まらず、Unicode2.0で2バイトのデータを2つ組み合わせて表示する「サロゲートペア」という拡張技術が導入され、より多くの文字の表現を可能としています。
更に、Unicode4.0で字形一致する異体字を表現する仕組みとして「IVS」が追加されました。
文字を表現するための技術仕様の追加に伴い、Unicodeは現在もバージョンを上げつつ収録文字を増やしています。

サロゲートペア
U+D800~U+DBFF(1024通り)を「上位サロゲート」、U+DC00~U+DFFF(1,024通り)を「下位サロゲート」と規定し、「上位サロゲート+下位サロゲート」の4バイトで文字を表現する方法です。これは、「1文字=2バイト」の基本は維持しつつ、一部の文字については「1文字=4バイト」にする方法です。
「上位サロゲート」も「下位サロゲート」も従来のUnicodeでは未使用の領域なので、以前のUnicodeの文字コードと重複することはありません。
このサロゲートペアの導入により1,024×1,024=1,048,576字の領域が拡張(追加)されることになりました。
1,048,576 / (64 × 1024 = 65,536) = 16 で、全部で第16面までの文字を収録することができます。これによりUnicodeスカラー値の上限がU+10FFFFまでと定められています。
既存の0x0000~0xFFFFで示す範囲は「0面」となり基本多言語面(BMP:Basic Multilingual Plane)と呼びます。追加面である1面~16面には面毎に用途が定められており、文字追加が行われています。
以下の図版は、日本マイクロソフト田丸様より
追加面の文字(サロゲートペア) 追加面の文字と「面」 基本多言語面、追加面
符号化方式(UTF:Unicode Transformation Format)
Unicodeの符号化方式としてビット単位別に、UTF-8[5]、UTF-16[6-1]、UTF-32[7]があります。
[5] UTF-8
可変長(1~4バイト)の8ビット符号単位で表現する文字コード。ascii文字はそのまま1バイトで使用できます。また、サロゲートペアのような符号単位の組み合わせを使用せず、8ビット長でUnicode文字を表現できます。
[6-1] UTF-16
基本多言語面を16ビット、その他の文字をサロゲートペアの符号単位二つ(=32ビット)で表現する文字コードです。
バイトオーダーの概念があり、通常ファイルの先頭にバイト順マーク (BOM:Byte Order Mark) が付与されます。BOMとは、通信やファイルの読み書き等、8ビット単位の処理でバイト順を識別するための印であり、データストリームの先頭に付与されます。
値はU+FEFF。システムが読み込んだ先頭2バイトが0xFF,0xFEならリトルエンディアン、0xFE,0xFFならビッグエンディアンとして後に続く文書を処理します。
[6-2] UTF-16BE
UTF-16をビッグエンディアンでBOMを使用せずに収容します。
[6-3] UTF-16LE
UTF-16をリトルエンディアンでBOMを使用せずに収容します。
[7] UTF-32
単一長の符号単位として32ビットで表現する文字コードです。Unicodeの符号空間がU+10FFFFまでであるため実際に使われるのは21ビットまでです。
標準化
ISO/IEC 10646では、Unicodeに対応する文字はUCS(Universal Coded-Character Set)といいます。
UCSのサブセットとして16ビットで表現できる0xFFFFまでの文字を定義するUCS-2と、0x10FFFFまで利用範囲として定義可能なUCS-4があります。
Unicodeがサロゲートに対応していることから、UCS-2は廃止予定とされています。
主な符号化では、UTF-8:UCS Transformation Format 8、UTF-16:UCS Transformation Format 16とUnicodeのUTFと省略名が対応する形で定義されています。

IVS(Ideographic Variation Sequence)

1.IVS(Ideographic Variation Sequence)とは?

今までのUnicodeでは包摂により区別されなかった異体字を表示するための仕組みです。
異体字を表現したい文字(基底文字)と異体字や俗字などをバリエーション番号(字形選択子(VS:Variation Selector))を組み合わせて、漢字字形指示列 (IVS:Ideographic Variation Sequence)を構成し、異体字のうちのどれであるかを特定をします。
例えば、「㐂」(U+3402)の異体字を指定するには、

  1. Windows7のメモ帳で、IVSに対応している書体を選択します。
  2. 「㐂」を入力します。
  3. その後ろにU+E0101またはU+E0102を入力します。
  4. 「㐂」の字形が変化します。
(例)「㐂」(U+3402)の異体字 Windows7 メモ帳での表示(小塚ゴシック Pr6N)
U+3402 U+E0101(カタカナのヒが三つのような字形)U+3402 U+E0102(上が「七」、下が「土へん」+「七」のような字形)
異体字U+3402(E0101).異体字U+3402(E0102).

字形選択子(VS:Variation Selector)
異体字を区別して識別するために使用されるコードです。「異体字セレクター」とも呼ばれます。
基本となる文字に対し、異体字や俗字などをバリエーション番号と組み合わせて表現するための仕組みです。漢字以外の字形選択子もあり、Unicode 3.2から正式に追加されました。
次の256文字あります。
  • U+FE00~FE0F ‐ VARIATION SELECTOR-1~16
  • U+E0100~E01EF ‐ VARIATION SELECTOR-17~256----漢字の字形選択子
漢字の異体字は、このうち17番以降(U+E0100以降)を使うことになっています。したがって、字形選択子の範囲はU+E0100~U+E01EFですので240個(ただしU+E0100は基底文字と同じ字形なので実際には239個)まで指定できます。
基底文字に対応する字形選択子は「IVD」を跨いでユニークの定義が割り当てられています。
基底文字にはすべてのCJK統合漢字を指定できます。

2.IVD(Ideographic Variation Database)について

IVSは基底文字と字形選択子の組み合わせで異体字を表示するための仕組みであるのに対し、IVDはある文字集合に対応する異体字の字形コレクションです。
ユニコードコンソーシアムでは、現在3つのコレクションが登録されています。

  • Adobe-Japan1----Adobe社が管理するAdobe-Japan1グリフ集合のコレクション
  • Hanyo-Denshi----経産省・汎用電子情報交換環境整備プログラム委員会が管理する、住基ネット・戸籍システム・登記システム等での利用を想定したコレクション
  • Moji_Joho----経産省・汎用電子情報交換環境整備プログラム委員会の成果を引き継ぎ(2010年11月14日版採用)、その普及を目的としてIVSの実装である「IPAmj明朝」フォントの基になるコレクション

上記のAdobe-Japan1に対応したフォントとしては、「小塚明朝」「小塚ゴシック」
Moji_Johoに対応しているフォントとしては、「IPAmj明朝」があります。

3.IVSのメリット

IVSフォントには既存システムでは外字として利用しなければならなかった文字が多く含まれます。
基本的に既存システムでは、外字が必要となった際、外字のデザインから、外字フォントの生成、利用端末への配布が都度必要でした。
IVSフォントを利用することで外字を必要とする機会が減り、コストが削減できます。また、異なるシステムでは別の外字フォントで運用されているため、IVSフォントへ置き換えることで相互互換性が高まります。

4.IVSの問題点

第1に、環境(OS、アプリケーション)としてIVSが利用できないケースがあるということです。この場合、IVSの表記が文字化けを起こします。

第2に、Adobe-Japan1とMoji_Johoでは、字形選択肢がユニークとなるコード定義ですが、字形としての互換性はありません。
ターゲットとするIVDが同じIVS対応フォントを選択しなければ、文字表示の一貫性が損なわれることとなります。また、同じIVDのIVSフォントでも実装によりすべての文字が網羅されているとは限りません。
相互運用に関しては弊社も参加しているIVS技術促進協議会のWGである相互運用性調査部会で協議が進められています。

よくわかるIVS

IVSを使うには

環境準備

必要OS 等

Windows 7以降、Mac OS X 10.7以降

フォントの準備

IVS対応フォントとは Adobe-Japan1 と Hanyo-Denshi の2種類が規定されています。それぞれのコレクションとしての互換性はありません。どちらのフォントを使用するかによって同じコードでも表示される字形が違う場合があります。

  • Adobe-Japan1 用のフォント
    1. Adobe-Japan-6コレクション 2007/12/14
    2. 「小塚明朝 Pr6N」
    3. 「小塚ゴシック Pr6N」
  • Moji_Joho用のフォント
    1. IPAmj明朝
  • Adobe-Japan1 と Moji_JohoのUnicodeと文字の字形一覧
    1. Unicode ConsortiumのIdeographic Variation Databaseページにある「Versions of IVD」の表の履歴の日付のリンクをクリックして入手できます。

対応アプリケーション

  • Windows10/8.1/8/7 メモ帳、ワードパッド

IVS文字の入力方法

MS IME/MS IME2010/MS IME2012
Windows10のメモ帳でIME2012のIMEパッドを表示させます。メモ帳のフォントを、「IPAmj明朝」にします。 「辻」を入力します。直後にIMEパッドの「文字一覧」→「Unicode追加漢字面」にある「バリエーションセレクター補助」からU+E0102を選択しエンターキーを押すと字形が「1点しんにょう」に変化します。
IME2012-異体字セレクタ
MS IME2012の変換文字制限
Windows8 搭載のMS IME2012(15.0.9200.16420)でプロパティ > 詳細設定 > [変換]タブ > 詳細設定 をクリックします。 [変換文字制限]で [変換文字制限をしない] を選択すると、IVSを含む語が変換候補に出現します。デフォルトでは [IVS (Ideographic Variation Sequence) を含む文字を制限する] になっていますのでIVSを含む語は出現しません。
Win8-IME2012.png
●[変換文字を制限しない]の時の候補表示例
辻(U+8FBB)の異体字である1点しんにょうの「辻」を選択すると、U+8FBB U+U+E0100 と入力されます。
IME2012候補(辻).png
数値文字参照(ブラウザ上)
数値文字参照ではISO/IEC-10646( Unicode )の文字コード位置を16進数で表記し指定することができます。
例えば、「辻」の異体字をhtmlで入力させるとき 辻&#E0101,辻&#E0102 のように記述します。ただし、IEはこのコード指定では表示されません。
            

IVSの異体字入力に便利なツール

IVSパレット

IVSの異体字を持つフォントの中から、親文字や読み、部首を条件としてお探しの文字を簡単に検索することができます。検索結果からコピーを行うだけで、お使いのアプリケーションにすぐに入力することができます。また、戸籍統一文字番号、住基ネット統一文字コード、MJ文字図形名などの自治体や公共機関で使用されている番号で、正確に目的の文字を検索・入力することもできます。

非対応環境について

Office 2007,Office 2010ではIVSフォントによる異体字は出力できません。