ブログ

2.オフセットテーブルとテーブルディレクトリ

こんにちは、カルチスタッフです。

前回、TTFファイルフォーマットの概要についてお話ししました。

TTFファイルは複数のテーブルを持っており、大きく3つの種類に分けられます。

今回は、その3つうちの2つ、

①オフセットテーブル

②テーブルディレクトリ

について詳細を見ていきたいと思います。

まず、オフセットテーブルです。下表のような項目で構成されています。

Byte数 名前 説明
Fixed 2 SFNT version(*1) 0x00010000 のとき、 version 1.0
USHORT 2 num Tables タグテーブル数
USHORT 2 search Range 検索範囲: (2の最大累乗 <= numTables) × 16
USHORT 2 entrySelector Log2 (2の最大累乗 <= numTables)
USHORT 2 rangeShift NumTables ×16-searchRange

(*1)SFNTはスケーラブルフォント(アウトラインフォントの別名)の略語

num Tables以降の値を、具体的な数字で説明します。

テーブル数が18の場合、テーブル数を超えない2の最大乗数は16です。なので、

・search Rangeは、16×16で256

・entrySelectorは、log2(16)=4

・rangeShiftは18×16-256=32

となります。

次に、テーブルディレクトリです。

テーブルディレクトリは、オフセットテーブルの【num Tables】で指定された数分のテーブルディレクトリエントリで構成されます。

テーブルディレクトリエントリは、下表のような項目で構成されています。

Byte数 名前 説明
ULONG 4 tag 4バイト識別子(タグ名)
ULONG 4 checkSum テーブルのチェックサム
ULONG 4 offset テーブルのファイルの先頭からのオフセット(バイト)
ULONG 4 length -テーブルのサイズ(バイト)

*tagは4つのASCII文字です。

*offsetとlengthを使ってフォント内の各テーブルへアクセスします。

ここまで、オフセットテーブルとテーブルディレクトリについて説明しました。

TTFファイルのフォーマットについてご質問・ご相談などございましたら、お気軽にお問い合わせください。

カルチスタッフ

関連記事

カルチ発行書籍

  1. KEISコードブック_表紙
    2016年1月15日にKEISコードブックを発売しました。
ページ上部へ戻る