OpenTypeフォントの続き(1)・・・TTC
今回は前回最後に触れたTrueType Collectionについてである。
TrueType Collection(TTC)とは、1つのファイルに複数のOpenTypeフォントを格納するためのファイルフォーマットで、拡張子は通常.TTCである。また、複数のOpenTypeフォントをただ単純に1つのファイルにパッケージングするのではなく、フォント間でグリフを共有して、ファイルサイズを抑えるための仕組みが備わっている。
TTCの構造は次のようになる。(前回同様、概念的な図である。)
TTCはTTCヘッダーから始まる。つまり、TTCの先頭(オフセット0)にTTCヘッダが格納されていなければならない。また、TTCヘッダの構造は次のようになる。
| 型 | 名前 | 説明 |
| TAG | TTCTag | TrueType Collection ID:'ttcf' |
| ULONG | Version | TTCヘッダのバージョン:0x00010000 |
| ULONG | numFonts | TTC内のフォント数 |
| ULONG | offsetTable[numFonts] | TTC内の各フォントへのファイルの先頭からのオフセット(バイト) |
| 型 | 名前 | 説明 |
| 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ヘッダを解析するプログラムを作成してみた。実行結果はこんな感じである。
MSゴシック系のTTCファイル(MSGOTHIC.TTC)を解析した時の実行結果である。このTTCファイルに3つのOpenTypeフォントが含まれていることがわかる。ちなみに、Windowsのエクスプローラでこのファイルを見れば分かるように、このファイルにはMS ゴシック、MS Pゴシック、MS UI Gothicの3つのフォントが含まれていることが分かる。
| 固定リンク
「フォント」カテゴリの記事
- OpenTypeフォントの続き(2)・・・OpenTypeテーブル(2008.02.07)
- OpenTypeフォントの続き(9)・・・インストラクション(2009.01.20)
- アイコン。(2008.12.25)
- T2FAnalyzer1.1.0リリース(2008.09.20)
- OpenTypeレイアウトへの道(5)・・・GSUBテーブル(2008.08.19)


コメント