GDEF テーブルの概要

GDEF テーブル
GDEF テーブル」には、グリフのクラス分けの定義や、合字のカーソル位置の情報などが格納されています。

GlyphClassDefグリフを4種類に分類
AttachmentList接続ポイントの情報
LigatureCaretList合字のカーソル位置
MarkAttachClassDefマークグリフの分類
MarkGlyphSetsMarkAttachClassDef の拡張。
グリフセットによって、マークグリフをフィルタリングする。
ItemVariationStore可変フォント用

グリフの分類に関しては、GSUB・GPOS テーブルで使われます。

対象となるグリフを検索する際に、合字やマークグリフなどの、指定されたグリフタイプを無視することができます。

ただ、GDEF テーブルを格納しているフォントは少なく、日本語フォントではあまり意味のないデータなので、それほど重要性はありません。

軽くデータ構造だけ解説しておきます。
テーブルデータ
uint16メジャーバージョン = 1
uint16マイナーバージョン = 0, 2, 3
Offset16 glyphClassDefOffsetGlyphClassDef テーブルへのオフセット位置。
(GDEF テーブルの先頭を 0 とする)
0 の場合あり。
Offset16 attachListOffsetAttachmentList テーブルへのオフセット位置
Offset16 ligCaretListOffsetLigatureCaretList テーブルへのオフセット位置
Offset16 markAttachClassDefOffsetMarkAttachClassDef テーブルへのオフセット位置
ver 1.2 の場合、以下が続く
Offset16 markGlyphSetsDefOffsetMarkGlyphSets テーブルへのオフセット位置
ver 1.3 の場合、以下が続く
Offset32 itemVarStoreOffsetItemVariationStore テーブルへのオフセット位置
Glyph Class Definition
GSUB/GPOS で使われる「グリフクラス」を定義します。
ここで定義されていないグリフは、全て「クラス = 0」となります。

▼ クラス値
1ベースグリフ。単一文字
2合字グリフ。複数文字
3マークグリフ。結合文字
4複合グリフ。単一文字の一部