[36]
GDEF
表はグリフに関係する雑多な情報を格納するため使われています。
[37] 各部分表はいずれも必要なときだけ記述することになっています。 1つも部分表がないことも (理論上は) あります。
[15]
GDEF
表は必須ではなく、不要なら省略できます。
実際に省略したフォントも珍しくありません。
[29]
級定義は全体に適用される GDEF
のもの以外に、
GPOS
や GPOS
の lookup
にも書くことができます。特定の lookup
でしか使わないようなものはその場で個別に定義されるようです。
[5]
GDEF
表の
glyphClassDefOffset
で参照されるグリフ級定義
(GlyphClassDef)
部分表は、
フォント内のグリフを分類するものです。
>>1
[25]
GDEF
表の version 1.0, 1.2, 1.3 に存在します。
>>1
[6] 級定義表として記述します。 >>1 級値は uint16 で、 級定義表内に明示しない場合の既定値は 0 となります。
[8]
ここで指定されたグリフ級は,
GPOS
や
GSUB
の記述に用いることができます。
[10]
GDEF
表も
GlyphClassDef 部分表もグリフへのグリフ級の割当も必須ではなく、
必要ないなら省略して良いことになっています。
[11]
GDEF
表の
markGlyphSetsDefOffset
で参照されるマーク添付級定義 (MarkAttachClassDef)
部分表は、
マークグリフを分類するものです。
>>1
[26]
GDEF
表の version 1.0, 1.2, 1.3 に存在します。
>>1
[12] 級定義表として記述します。 >>1 級値は uint16 で、 級定義表内に明示しない場合の既定値は 0 となります。
[16] グリフ級定義とは独立しており, (意味があるかはともかく) グリフ級が 3 (マーク) でなくてもマーク添付級を 0 以外に設定できます。
[17] 級値の意味は特に定められていません。 フォントごとに決められるのでしょう。 同じような位置のマークをグループ化することが想定されています >>1。
[13]
ここで指定されたマーク添付級は,
GPOS
や
GSUB
の記述に用いることができます。
[14]
GDEF
表も
MarkAttachClassDef 部分表もグリフへのマーク添付級の割当も必須ではなく、
必要ないなら省略して良いことになっています。
[18]
GDEF
表の
markAttachClassDefOffset
で参照されるマークグリフ集合群
(MarkGlyphSets)
部分表は、
グリフの集合を記述するものです。
[27]
GDEF
表の version 1.2, 1.3 に存在します。
>>1
[22]
現在 format
は 1 のみが規定されています。
>>1
[23]
format
1 では、
Coverage 表を任意の個数記述できます。
>>1
[24] 位置 i の Coverage 表を使って、 第 i のマークグリフ集合にグリフが所属するかどうかが定まります。 級定義を使ったマーク添付級定義では1つのグリフがちょうど1つのマーク添付級に属するのとは違って、 こちらでは1つのグリフは任意の個数のマークグリフ集合に所属できます。
[19] マーク添付級を更に拡張してグリフをグループ化するために使えます。 >>1
[20]
ここで指定されたグリフの集合は,
GPOS
や
GSUB
の記述に用いることができます。
[21]
GDEF
表も
MarkGlyphSets 部分表も必須ではなく、
必要ないなら省略して良いことになっています。
[30]
GDEF
表の
添付点リスト
(AttachmentList
)
は、
GPOS
表中で定義されるすべての添付点と、
それに関連付けられたグリフを識別するものです。
>>1
[31] クライアントはこれを使って各グリフの添付点の座標に速くアクセスできます。 クライアントは、 グリフのビットマップと添付点の座標をキャッシュしておくことができます。 >>1
[38] 添付点リストは、グリフIDと、それに対する contour point index のリストで構成されます。 >>1
[39]
このデータは高速処理のためなので、情報としては冗長です。
GPOS
の複雑なデータ構造を辿らなくてもアクセスできるようにすることを意図しています
>>1。
[40] この情報が実態と合っていない場合にどうなるかは特に規定されていません。 処理性能が低下するかもしれませんし、 時にはレンダリングが乱れることもあるかもしれません。
[41]
この情報が含まれないフォントも珍しくありません。
(その多くは該当する添付点がないから含めていないケースでしょうが、
添付点がないことは GPOS
を調べないと実装は知り得ないので、
空の添付点リストを GDEF
に入れておくべきとも言えます。)
本来この情報は実装側で (必要なら) 自動生成して保持しておくべきもので、
フォントに含まれていても無視して良いのかも知れません。
[32]
GDEF
表の合字キャレットリスト
(LigatureCaretList
)
表は、
フォント中のすべての合字におけるキャレットの位置決定のための座標を指定するものです。
>>1
[33] 表示された文章中の合字の構成要素を選択して highlight するために使うことが出来ます。 >>1
[42]
「すべて」とはいいますが、グリフ級定義や GSUB
とは完全に独立しています。
フォント中の合字すべてがキャレット情報を持つことはデータ構造上保証されていません。
[34] 各合字は、 1つ以上のキャレット位置を持つことができます。 >>1
[35] 各キャレット位置は、 用字系や言語系の書字方向における基線に対する X または Y の値です。 >>1
[43] 合字キャレットリストでは、 キャレット位置の座標を直接指定する方法の他に、 グリフの contour point の index を指定する方法、 variable font 用の方法があります。 >>1
[2]
BabelStone Han :
glyph class
1, 2, 3
のグリフの一覧が入っています。
classFormat
2。
[3]
花園明朝 :
全文字
glyph class
1
とする一覧が入っています。
classFormat
2。
[4]
Nishiki-teki :
glyph class
1, 2, 3
のグリフの一覧が入っています。
classFormat
2。
MarkAttachClassDef
も
class 0
に1つだけ入っています。
classFormat
1。
LigCaretList
も入っていますが中身は空です。
[28] OpenType glyph processing (part 2) - Typography | Microsoft Docs, alib-ms, https://docs.microsoft.com/ja-jp/typography/develop/processing-part2#gdef-table