« OpenTypeフォント | トップページ | OpenTypeフォントの続き(2)・・・OpenTypeテーブル »

2008年2月 6日 (水)

OpenTypeフォントの続き(1)・・・TTC

今回は前回最後に触れたTrueType Collectionについてである。

TrueType Collection(TTC)とは、1つのファイルに複数のOpenTypeフォントを格納するためのファイルフォーマットで、拡張子は通常.TTCである。また、複数のOpenTypeフォントをただ単純に1つのファイルにパッケージングするのではなく、フォント間でグリフを共有して、ファイルサイズを抑えるための仕組みが備わっている。

TTCの構造は次のようになる。(前回同様、概念的な図である。)

Opentype2_1_2

TTCはTTCヘッダーから始まる。つまり、TTCの先頭(オフセット0)にTTCヘッダが格納されていなければならない。また、TTCヘッダの構造は次のようになる。

TTCヘッダ Version1.0
名前 説明
TAG TTCTag TrueType Collection ID:'ttcf'
ULONG Version TTCヘッダのバージョン:0x00010000
ULONG numFonts TTC内のフォント数
ULONG offsetTable[numFonts] TTC内の各フォントへのファイルの先頭からのオフセット(バイト)

TTCヘッダ Version2.0
名前 説明
TAG TTCTag TrueType Collection ID:'ttcf'
ULONG Version TTCヘッダのバージョン:0x00020000
ULONG numFonts TTC内のフォント数
ULONG offsetTable[numFonts] TTC内の各フォントへのファイルの先頭からのオフセット(バイト)
ULONG DsigTag DSIGテーブルが存在するかを表すタグ。存在すれば、0x44534947('DSIG')
ULONG DsigLength DSIGテーブルのサイズ(バイト)
ULONG DsigOffset DSIGテーブルへのファイルの先頭からのオフセット(バイト)

numFontsはTTC内のフォント数を表す。OffsetTableは各フォントへのファイルの先頭からのオフセットの配列で、TTC内のフォントの数つまりnumFontsの数だけ要素がある。このオフセットの配列を使って、TTC内の各フォントにアクセスする。TTC内の各フォントの構造は前回説明したものと同じである。

ここで注意が必要なのは、TTC内の各フォント内のテーブルへのアクセスである。前回、各テーブルへはテーブルディレクトリエントリのOffsetフィールドを使ってアクセスできると書いたが、このテーブルディレクトリエントリのOffsetフィルードはTTCファイルであろうとなかろうと、常にファイルの先頭からのオフセットを表す。

以上を踏まえて、TTCヘッダを解析するプログラムを作成してみた。実行結果はこんな感じである。

Opentype2_2

MSゴシック系のTTCファイル(MSGOTHIC.TTC)を解析した時の実行結果である。このTTCファイルに3つのOpenTypeフォントが含まれていることがわかる。ちなみに、Windowsのエクスプローラでこのファイルを見れば分かるように、このファイルにはMS ゴシック、MS Pゴシック、MS UI Gothicの3つのフォントが含まれていることが分かる。

Opentype2_3

« OpenTypeフォント | トップページ | OpenTypeフォントの続き(2)・・・OpenTypeテーブル »

フォント」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1497665/39651801

この記事へのトラックバック一覧です: OpenTypeフォントの続き(1)・・・TTC:

« OpenTypeフォント | トップページ | OpenTypeフォントの続き(2)・・・OpenTypeテーブル »

自作ソフトウェア

無料ブログはココログ

メモ