maxp、post テーブル

maxp テーブル
フォント内に含まれるグリフ数と、TrueType アウトラインに関する最大値が格納されています。

Fixed versionバージョン。
0x00005000 = 0.5
0x00010000 = 1.0

PostScript アウトラインの場合は ver 0.5、
TrueType アウトラインの場合は ver 1.0 を使う。
uint16 numGlyphsフォント内のグリフの数
ver 1.0 の場合、以下が続く
uint16 maxPoints複合でないグリフの最大ポイント数
uint16 maxContours複合でないグリフの最大輪郭数
uint16 maxCompositePoints複合グリフの最大ポイント数。
複合グリフとは、複数のグリフのアウトラインを使って一つのグリフを形成する方法です。
uint16 maxCompositeContours複合グリフの最大輪郭数
uint16 maxZones1 = 命令が Z0 を使用しない、2 = 使用する。
ほとんどの場合は 2 に設定する。
uint16 maxTwilightPointsZ0 で使われる最大ポイント数
uint16 maxStorageストレージエリアの場所の数
uint16 maxFunctionDefsFDEF の数
uint16 maxInstructionDefsIDEF の数
uint16 maxStackElementsフォントプログラム (fpgm テーブル)、CVT プログラム (prep テーブル)、およびすべてのグリフ命令 (glyf テーブル) の最大スタック深度
uint16 maxSizeOfInstructionsグリフ命令の最大バイト数
uint16 maxComponentElements複合グリフの「トップレベル」で参照されるコンポーネントの最大数
uint16 maxComponentDepth再帰の最大レベル。 単純なコンポーネントの場合は1。
post テーブル
PostScript プリンターで使用するための追加情報です。
PostScript アウトラインとは関係なく、必須のテーブルです。

PostScript アウトラインを含む OpenType フォントは、ver 3.0 のみを使います。

基本的に、下線の値のみが設定され、他は 0 であるフォントが多いです。
等幅フォントでも、isFixedPitch は 0 に設定されていたりします。

Fixed versionバージョン。
0x00010000 = ver 1.0
0x00020000 = ver 2.0
0x00025000 = ver 2.5 (非推奨)
0x00030000 = ver 3.0
Fixed italicAngle斜体の角度。垂直から反時計周り。
直立なら 0、右に傾いている場合は負。
FWord underlinePosition下線の位置。ベースラインから下線の上までの距離。
FWord underlineThickness下線の太さ。
一般的に、U+005F の太さと一致し、OS/2 テーブルで指定されている取り消し線の太さと一致する必要がある。
uint32 isFixedPitch0 = プロポーショナル、1 = 等幅
uint32 minMemType42OpenType フォントがダウンロードされるときの最小メモリ使用量。
不明な場合は、0。
uint32 maxMemType42OpenType フォントがダウンロードされるときの最大メモリ使用量
uint32 minMemType1OpenType フォントが Type 1 フォントとしてダウンロードされる場合の最小メモリ使用量
uint32 maxMemType1OpenType フォントが Type 1 フォントとしてダウンロードされる場合の最大メモリ使用量

ver 2.0/2.5 の場合は、この後に追加のデータが続く (ver 2.5 は非推奨のため、省略します)。
ver 1.0
フォントに、Mac 標準の TrueType フォントの 258 個のグリフが含まれる場合に、PostScript グリフ名を提供するために使用する。
ver 2.0
TrueType、または CFF ver 2 のアウトラインを持つフォントで使用できる。

▼ 追加データ
uint16 numGlyphsグリフ数 (maxp テーブルの値と同じ)
uint16 glyphNameIndex[numGlyphs]各グリフの、グリフ名へのインデックス位置
int8 names[可変]Pascal 文字列でのグリフ名データ (1byte len + str)。
文字は、A-Z, a-z, 0-9, '.' '_' のみで、63 文字以内。(一部の古い実装では 31 文字)

インデックスが 0〜257 の場合、Mac 標準の名前のインデックス。
258〜65535 の場合、258 を引いた値を names 文字列のインデックスとする。
ver 3.0
TrueType、または CFF (ver 1 or 2) のアウトラインを持つフォントで使用できる。
PostScript グリフ名を含まない。
プログラム
>> 07_maxp_post.c

maxp と post テーブルを表示するプログラムです。
PostScript グリフ名のデータは省略しています。

---- maxp ----

version: 0x00010000 (1.0)
numGlyphs: 19243
maxPoints: 706
maxContours: 41
maxCompositePoints: 0
maxCompositeContours: 0
maxZones: 2
maxTwilightPoints: 1
maxStorage: 2
maxFunctionDefs: 22
maxInstructionDefs: 0
maxStackElements: 256
maxSizeOfInstructions: 0
mmaxComponentElements: 0
maxComponentDepth: 0

---- post ----

version: 0x00020000 (2.0)
italicAngle: 0x00000000 (0.000)
underlinePosition: -128
underlineThickness: 51
isFixedPitch: 0
minMemType42: 0
maxMemType42: 0
minMemType1: 0
maxMemType1: 0