内部的に使用
‘ REQ’
— 必須の機能に使用されるタグ
TeX 用
ITLC
— イタリック補正
これを OpenType への拡張として提案したことがあります。これに関して多少の議論がありましたが、このアイディアは却下されたのだと思います。
TCHL
— TeX 文字リスト
TEXL
— TeX 拡張リスト
(歴史的事情により、‘PfEd’という名前になっています)
このテーブルは、バージョン番号とサブテーブルの個数を含むヘッダで始まります。
uint32 version 現在は 0x00010000 uint32 count この後ろにテーブルの中身が続きます。以下のデータ構造 (つまり、各テーブルのタグとオフセット) が count 回だけ繰り返されます。
uint32 tag uint32 offset ‘PfEd’テーブルの先頭から数える サブテーブルのフォーマットはそのサブテーブルのタグによって異なります。現在サポートされているのは、以下の 3 種類のタグです。
このサブテーブルのヘッダはバージョン番号と範囲の個数で始まります。
uint16 version 0 uint16 count 範囲の個数 この後ろに、以下の構造体が <count> 個だけ置かれます。
uint16 最初のグリフインデックス uint16 最後のグリフインデックス uint32 color 24 ビット RGB 値として表現される
範囲の個数 この後ろに、以下の構造体が <count> 個だけ置かれます。
uint16 最初のグリフインデックス uint16 最後のグリフインデックス uint32 offset このサブテーブルの先頭からの値 offset は、バイトオフセットの配列を指し、その配列には (<end>-<start>+1+1) 個の要素が含まれます。これにより上記の範囲データ構造は、各グリフごとに 1 個のインデックスを表し、それに加え、最後の文字列の長さを計算できるように末尾に 1 個の要素が置かれています。
uint32 offset テーブルの先頭からの値 ... そしてこれらのオフセットは Unicode (UCS2) 文字列を指しています。文字列は順番に並んでいると見なすため、各文字列の長さは、その文字列のオフセットを次の文字列のオフセットから引き算することによって得られます。
このサブテーブルのヘッダはバージョン番号と範囲の個数で始まります。
uint16 version 0 uint16 length 文字列中の文字数 そしてこの後に <length> 個の Unicode (UCS2) 文字が続きます。現在はこれらの Unicode 文字は常に ASCII 値のみを含みますが、将来は変更される可能性があります。
このテーブルは、バージョン番号とサブテーブルの個数を含むヘッダで始まります。
uint32 version 現在は 0x00010000 uint32 count この後ろにテーブルの中身が続きます。以下のデータ構造 (つまり、各テーブルのタグとオフセット) が count 回だけ繰り返されます。
uint32 tag uint32 offset ‘PfEd’テーブルの先頭から サブテーブルのフォーマットはサブテーブルのタグによって異なります。現在のところ、以下の 3 種類のタグがサポートされています。
このサブテーブルのヘッダはバージョン番号とグリフの個数で始まります。
uint16 version 0 uint16 count グリフの個数 この後ろに、以下の構造体が <count> 個だけ置かれます。
uint16 height em ユニット単位 uint16 depth
これらの値は TFM ファイルの fix_word ではなく em ユニット単位の値で格納しています。なぜなら、sfnt においてより意味があるのは em ユニットであり、スペース消費も少ないからです。
このテーブルのフォーマットは前述のテーブルと本質的に同じです。サブテーブルのヘッダは、バージョン番号とグリフの個数で始まります。
uint16 version 0 uint16 count グリフの個数 この後ろに、以下の構造体が <count> 個だけ置かれます。
uint16 下つき文字のオフセット em ユニット単位の値 uint16 上つき文字のオフセット
これらの値は TFM ファイルの fix_word ではなく em ユニット単位の値で格納しています。なぜなら、sfnt においてより意味があるのは em ユニットであり、スペース消費も少ないからです。
このサブテーブルのヘッダはバージョン番号とパラメータの個数で始まります:
uint16 version 0 uint16 count フォントに含まれるパラメータの個数 そしてこの後に続くのは、以下の構造体の <count> 要素の繰り返しです:
uint32 タグ パラメータ名 int32 値 これらの値は TFM ファイルの fix_word で格納されており、em ユニット単位の値ではありません。なぜなら、この値の意味は仕様で規定されておらず、(少なくとも)
Slant
パラメータは em ユニットに変換できないからです。定義済みの 4 文字のパラメータタグは以下のとおりです。
タグ 意味 TFM ファイルにおける伝統的なフォントパラメータ番号 (フォントディメンション番号) Slnt スラント 1 Spac スペース 2 Stre 伸長度 3 Shnk 縮小度 4 XHgt x ハイト 5 Quad クワタ幅 6 ExSp 追加スペース 7 (テキストフォントの場合) MtSp Math Space 7 (数学フォント・拡張数学フォントの場合) Num1 ディスプレイスタイルまたは圧縮ディスプレイスタイルにおける分子の持ち上げ量 8 (数学フォントの場合) Num2 (圧縮)ディスプレイスタイル以外での \atop または \atopwithdelims による分子の持ち上げ量 10 Dnm1 ディスプレイスタイルまたは圧縮ディスプレイスタイルにおける分母の引き下げ量 11 Dnm2 (圧縮)ディスプレイスタイル以外での分母の引き下げ量 12 Sup1 ディスプレイスタイルにおける、文字につく上つき文字の持ち上げ量の最小値 13 Sup2 テキスト・上(下)付き文字・二重上(下)付き文字スタイルにおける、文字につく上つき文字の持ち上げ量の最小値 14 Sup3 圧縮されたスタイルにおける、文字につく上つき文字の持ち上げ量の最小値 15 Sub1 上つき文字が無い場合の、文字につく下つき文字の引き下げ量の最小値 16 Sub2 上つき文字と下つき文字が同時につく場合の、文字につく下つき文字の引き下げ量の最小値 17 SpDp 上つき文字のベースラインより上の部分が、親文字と重なり合う最大量 18 SbDp 下つき文字のベースラインより下の部分が、親文字と重なり合う最大量 19 Dlm1 (圧縮)ディスプレイスタイルにおいて、分数を構成する垂直ボックスを囲む区切り記号の(高さ+深さ)の最小値 20 Dlm2 ディスプレイスタイル以外において、分数を構成する垂直ボックスを囲む区切り記号の(高さ+深さ)の最小値 21 AxHt 軸の高さ (\vcenter による垂直揃え位置の、(高さ+深さ)/2より得られる真の中心からの持ち上げ量) 22 RlTk 罫線のデフォルトの太さ 8 (拡張数学フォントの場合) BOS1 Big Op Spacing1 9 BOS2 Big Op Spacing2 10 BOS3 Big Op Spacing3 11 BOS4 Big Op Spacing4 12 BOS5 Big Op Spacing5 13
このテーブルはバージョン番号とサイズ違いの個数を含むヘッダから始まります。
uint16 バージョン 現在は 0x0001 uint16 サイズ違いの個数 uint32 文字列テーブルへのオフセット (BDF テーブルの先頭から数えた値) それに続き、各サイズごとに、それぞれ何個の属性が含まれるかを識別するデータ項目が続きます。
uint16 EM あたりピクセル数 uint16 配列 property-count (属性の個数) その次に属性の値が置かれます。まず最初のビットマップサイズの属性が property-count[1] 個だけ並び、次に property-count[2] 個の属性が、というように並びます。各属性の形式は以下のとおりです:
uint32 名前 属性名の文字列テーブルにおけるオフセット uint16 データ型 0 ⇒ 文字列
1 ⇒ アトム
2 ⇒ 整数
3 ⇒ 正整数
真の属性であることを示すために上のどれかの値と 0x10 との or を取った値も許されます。uint32 値 文字列とアトムの場合、文字列テーブル内のオフセット値を格納
整数では値をそのまま格納文字列テーブルは ASCII のバイト列を並べたものです。各文字列は NUL で終端されています。