記録

表 (OpenType)

[1] (ひょう) (テーブル) (table) は、 TrueType / OpenType フォントデータ構造の基本単位の1つです。

目次

  1. 仕様書
  2. 意味
  3. offset
  4. 表タグ
  5. 表の一覧
  6. メモ

仕様書#

意味#

[6] OpenType では (field) を持った構造記録があり、 これらが OpenType ファイルの主要な構成要素になっています。

[7] (ひょう) (table) は一般に offset で参照されるものです。 >>5

[8] () (ろく) (record) は親構造中に順序に従って出現するものです。 >>5

[9] から offset で参照される他の () (ぶん) (ひょう) (subtable) と呼ばれています。 曖昧でない時は部分表と呼ばれています。 文脈なくというときはたいていはフォントの最上位の構造に相当するのことを指しています。

offset#

[10] OpenType における Offset16, Offset24, Offset32 は、それぞれ uint16, uint24, uint32 で, 部分表への offset (位置の差分) を表しています。 >>5

[11] offset起算点によって違い、 仕様書の関係するところで一々規定されています。 大抵はその offset が出現した部分表の先頭を 0 と数えています。

[12] offset 値は 0 とすることができ、 NULL 値と呼ばれています。 >>5

[13] NULL 値を使えるかどうかはによって違い、 仕様書の関係するところで一々規定されています。 >>5

[14] フォント不適合な場合は使えないところでも NULL が使われる場合がありますから、 フォントを解釈する実装はそれを想定しておくべき (should) です。 >>5 そうしなければ参照元の部分表自体が参照されていることになりますから、 処理がおかしくなってしまいます。

[15] フォントファイル中のの配置位置は決まっていません。 符号無し整数なので起算点より前には置けませんし、 offset 欄のビット数で表せる最大の位置よりも後には置けませんが、 その中間の好きな位置に置けます。 複数の offset 値が同じ位置を参照することもできます。

[16] 例えば複数の lookup が同等の Coverage を使いたければ、 同じものを2つ配置する必要はなく、 それらより後に1つだけ配置して、どちらにもその先頭を指すような offset を設定することができます。 offset の値は違うかもしれませんが、 参照元の起算点 + offset が同じ値になります。

[30] 仕様上はどこに置いても良さそうに (置く場所に制限はなさそうに) も読めるのですが、 どうも実装によってはそうでもないことがあるみたいです。 親のに属する部分表は親のの範囲に含まれる、 と仕様書を解釈するべきなのでしょうか。よくわかりません。

[31] 例えば Chromecmap format 14 部分表nonDefaultUVSOffset が指す記録がその部分表length までの範囲内になければ構文解析エラーとします。

[17] フォントファイルを解釈する実装は、 バッファー溢れ等、 不正なメモリー操作が発生しないよう注意が必要です。 フォントファイルは壊れているかもしれませんし、 不正なデータかもしれません。

表タグ#

[22] フォントの最上位に当たるの種別は (ひょう) タグ (table tag) で識別されます。

[23] TableRecordtableTagの識別子たるタグです。 >>20

[26] OpenType フォントは、 OpenTypeの他、 TrueType 等、他の仕様のも含められます。 >>20 TrueType と OpenType の仕様の関係は OpenType

[24] OpenType規定では、 同じタグフォント当たり高々1つだけ含められます。 複数ある場合の挙動は未定義で、 実装はどれかを選んでも構いませんし、非妥当として拒絶しても構いません。 >>20

[25] OpenType 以外のは、 同じタグを複数使っても構いません。 >>20

[27] TrueType は、すべて小文字表タグApple 用に予約しています。 >>20 OpenType小文字表タグ大文字表タグが一見無秩序に混在しているのは、 この規定の影響のようです。

[28] OpenType表タグを特に制限することなく独自の利用 (カスタムタグ (custom tag) ) を認めているものの、 先方互換性のため Microsoft に通知するべき (should) だとしています。 >>20

[29] 大文字と小文字の区別を当の OpenType 仕様書がきっちりしていないのは、 困ったものです。 CMAP, KERN

OpenTypeタグ, 私用

表の一覧#

[21] フォントの最上位に当たるは次のものがあります。

[3] OpenType
タグOpenType >>19OpenType Layout >>2Visual TrueType >>4TTC >>19TTC その他
avarFont Variations
BASEadvanced typographic
CBDTbitmap glyph, color fonts
CBLCbitmap glyph, color fonts
CFF CFF outline (準必須)
CFF2CFF outline (準必須)
cmap必須各々持つべき
COLRcolor fonts
CPALcolor fonts
cvarFont Variations
cvt TrueType outline共有すべき
DSIGother末尾
EBDTbitmap glyph共有すべき
EBLCbitmap glyph共有すべき
EBSCbitmap glyph共有すべき
fpgmTrueType outline共有すべき
fvarFont Variations
gaspTrueType outline
GDEFadvanced typographic
glyfTrueType outline (必須)共有すべき
GPOSadvanced typographic
GSUBadvanced typographic
gvarFont Variations
hdmxother共有すべき
head必須
hhea必須
hmtx必須共有すべき
HVARFont Variations
JSTFadvanced typographic
kernother
locaTrueType outline (必須)共有すべき
LTSHother共有すべき
MATHadvanced typographic
maxp必須共有すべき
MERGother
metaother
MVARFont Variations
name必須各々持つべき
OS/2必須各々持つべき
PCLTother
post必須
prepTrueType outline共有すべき
sbixbitmap glyph, color fonts
STATFont Variations, other
SVG SVG outline, color fonts
TSI0
TSI1
TSI2
TSI3
TSI4廃止
TSI5
TSIB廃止
TSIC
TSID廃止
TSIJ廃止
TSIP廃止
TSIS廃止
VDMXother
vheaother
vmtxother
VORGCFF outline
VVARFont Variations

メモ#