フォント用語集

ページメニュー

CMap・cmap(Character Map)


フォントが持つそれぞれの文字と、文字コードを結びつけるための対応表のことです。

文字の識別には、GID/CIDが使われます。 CMapとcmapはいずれも同じ役割を持っていますが「CMap」はPostScript処理系で用いられ、通常フォントの形で存在し、CIDフォントが文字コードをCIDに対応付けるために使います。

「cmap」はTrueTypeまたはOpenTypeフォントが使用し、文字コードをGIDに対応付けます。

たとえば、「永」(Unicode:6C38)という文字を入力するとしましょう。Unicodeの値から、フォントの文字が引き出せればいいのですが、フォントの文字はGID/CIDによって管理されているので、文字コードを使って直接文字を呼び出すことはできません。

ここでCMap(cmap)が必要になります。CMapには、「Unicode:6C38」=「GID: 1260」という対応情報が記述されています。OSはこの対応表を参照することによって、「GID:1260」=「永」の文字をフォントから引き出します。

CMap・cmapは対応する文字コードの数だけエンコーディングテーブルを持ち、それぞれ「UniJIS-UTF8-H」「UniJIS-UTF16-V」というような名称が付けられています。

「UniJIS」はUnicodeとGID/CIDとの対応表であること、「UTF8」はエンコーディングがUTF8であることを、「H」は横組み用、「V」は縦組み用であることを表していま す。

OpenTypeフォントの機能のひとつである縦組み用字形と横組み用字形の切り替えや、「“」「”」と「〝」「〟」などの一部の記号類が、組み方向によって文字が変わるのは、縦組み用と横組み用、それぞれのエンコーディングテーブルが適宜切り替わることで実現されています。

フォントによっては、Windows用、Mac用というよう に、OSごとにエンコーディングテーブルを用意しているものもあり、フォントはこのCMap(cmap)の働きによって、同一のフォント情報を複数のプラットフォーム、文字コードに展開しています。

なお、JIS2004字形に対応したNフォントなどに見られる字形の変更は、このcmapの変更によって行われています。つまり、今まで「Unicode:9BD6」=「GID:2168(鯖)」だったcmapの対応表を、「Unicode:9BD6」=「GID:7689(鯖)」にすることで、「さば」という文字を変換した際に呼び出す文字を変更しています。