« OpenTypeレイアウトへの道(2)・・・ScriptList | トップページ | OpenTypeレイアウトへの道(4)・・・LookupList »

2008年7月22日 (火)

OpenTypeレイアウトへの道(3)・・・FeatureList

ということで、今回は前回の予告通りFeatureListである。

FeatureListはフォント内のすべてのフィーチャーを定義するが、その構造はScriptListのそれと似ている。

FeatureListの構造は次のようになる。

FeatureList
名前 説明
USHORT FeatureCount Featureレコードの数
FeatureRecord FeatureRecords[FeatureCount] Featureレコードの配列(タグのアルファベット順)

FeatureCountはFeatureレコードの数つまりフォント内のすべてのフィーチャーの数を表し、FeatureRecordsはFeatureレコードの配列である。

Featureレコードの構造は次のようになる。

Featureレコード
名前 説明
Tag FeatureTag フィーチャータグ
Offset(USHORT) Feature FeatureテーブルへのFeatureListの先頭からのオフセット

FeatureTagは、フィーチャーを識別するタグ、Featureは、Featureテーブルへのオフセットを表す。

Featureテーブルは1つ以上のルックアップを使ってフィーチャーを定義し、その構造は次のようになる。

Featureテーブル
名前 説明
Offset(USHORT) FeatureParams NULL
USHORT LookupCount ルックアップの数
USHORT LookupIndices[LookupCount] ルックアップのルックアップインデックスの配列

LookupCountはフィーチャーで使用するルックアップの数を表し、LookupIndicesは使用するルックアップのルックアップインデックスの配列である。それぞれのルックアップは、まだ説明していないLookupListで定義されるが、上記のルックアップインデックスを使って、そのフィーチャーのルックアップにアクセスされる。

前回と今回の上記を踏まえると、スクリプト、言語システム、フィーチャーそして今回出てきたルックアップの概念的な図は次のようになる。

Script_langsys_feat_lookup

以上を踏まえて、実際のフォントのFeatureListを解析してみた。

まずは、前回と同様に、MSゴシック(MSGOTHIC.TTC)のGSUBテーブルのFeatureListから。

Featuremsgothic

上の画像より計1つのフィーチャーvertが定義されていることが分かる。また、前回のScriptListの解析結果より、kana->JAN言語システム内にフィーチャーインデックスが0のフィーチャーが定義されていたが、そのフィーチャーがvertフィーチャーであった事も分かる。また、vertフィーチャーはルックアップインデックス0のルックアップを使って定義されていることも分かる。ルックアップはLookupListに定義されているので、ルックアップインデックス0のルックアップがどのように定義されているかはLookupListを解析しないと分からない。

vertフィーチャーは縦書きのためのフィーチャーであるが、何やらMSゴシックフォントは縦書き表示に対応しているようである。ははは・・(意味不明)。くどいようであるが、このvertフィーチャーによってどの横書き用のグリフがどの縦書き用のグリフに置換されるかはルックアップに定義されている。

同じように、Tahomaフォント(tahoma.ttf)のGSUBテーブルのFeatureListについて。

Featuretahoma

上の画像より計5つのフィーチャーが定義されていることが分かる。また、上の画像で選択されているligaフィーチャーはルックアップインデックス4、5の2つのルックアップを使って定義されていることが分かる。

« OpenTypeレイアウトへの道(2)・・・ScriptList | トップページ | OpenTypeレイアウトへの道(4)・・・LookupList »

フォント」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1497665/39651758

この記事へのトラックバック一覧です: OpenTypeレイアウトへの道(3)・・・FeatureList:

« OpenTypeレイアウトへの道(2)・・・ScriptList | トップページ | OpenTypeレイアウトへの道(4)・・・LookupList »

自作ソフトウェア

無料ブログはココログ

メモ