.CFF2 オプション番号
CFF2 ファイル形式は、CFF ファイル形式のバージョン 2.0 であり、CFF ファイル形式と同様にグリフ アウトラインとメタデータを効率的に格納できます。 CFF2 は、タグ CFF2 を持つ「sfnt」テーブルとして OpenType フォントのコンテキストで使用されることを意図しているという点で、CFF とは異なります。スタンドアロン プログラムとして使用することはできず、他の OpenType テーブルのデータに依存します。
CFF2 ファイル形式
CFF2 ファイル形式の仕様 には、内部データ レイアウト、データ型、テーブル、およびファイル形式に関するその他の内部情報に関する詳細が含まれています。開発者の参照用に参照できます。これらの詳細の一部は次のとおりです。
データレイアウト
CFF2 ファイル形式のバイナリ データは、多数の個別のデータ構造として論理的に編成されています。バイナリ データ内のレイアウトは、次の表に示すとおりです。
エントリー | コメント |
---|---|
ヘッダー | 固定位置 |
トップ DICT | 固定位置 |
グローバル サブル インデックス | 固定位置 |
バリエーション | 店舗 |
FDSelect | Font DICT INDEX に複数の Font DICT がある場合にのみ表示されます。 |
フォント DICT INDEX | |
フォント DICT の配列 | フォント DICT INDEX に含まれています。 |
プライベート DICT | フォント DICT ごとに 1 つ。 |
最初の 3 つの構造のみが固定位置に基づいています。残りはオフセットによって到達され、それらの順序は変更できます。
データ型
CFF2 ファイル形式では、次のデータ型が使用されます。
名前 | 範囲 | 説明 |
---|---|---|
uint8 | 0 ~ 255 | 8 ビット符号なし数値 |
uint16 | 0 ~ 65535 | 16 ビット符号なし数値 |
uint32 | 0 ~ 4294967295 | 32 ビット符号なし数値 |
オフセット | 可変 | 1、2、3、または 4 バイトのオフセット (インデックス テーブルの OffSize フィールドで指定) |
オフサイズ | 1 ~ 4 | 1 バイトの符号なし数値は、1 つまたは複数のオフセット フィールドのサイズを指定します |
すべてのマルチバイト数値データとオフセット フィールドをビッグ エンディアンのバイト順で格納します。 CFF2 形式は、アラインメントの制限を受けないため、パディング バイトがありません。
DICTデータ
CFF2 ファイルには、コンパクトなトークン化形式のキーと値のペアとして、フォント辞書データが含まれています。ディクショナリ キーは 1 または 2 バイトの演算子としてエンコードされ、ディクショナリ値は可変サイズの数値オペランドとしてエンコードされます。 DICT データ形式を使用する構造には、「Top DICT」、「Font DICT」、および「Private DICT」の 3 つがあります。さまざまなサイズの多数の整数オペランド型が定義され、次の表に示すようにエンコードされます (オペランドの最初のバイトは b0、2 番目は b1 など)。
サイズ | b0範囲 | 値の範囲 | 値の計算 |
---|---|---|---|
1 | 32 ~ 246 | -107 ~ +107 | b0 ~ 139 |
2 | 247 ~ 250 | +108 ~ +1131 | (b0 - 247) * 256 + b1 + 108 |
2 | 251 ~ 254 | -1131 ~ -108 | -(b0 - 251) * 256 - b1 - 108 |
3 | 28 | -32768 ~ +32767 | b1 « 8 |
5 | 29 | -(2^31) から +(2^31 - 1) | b1 « 24 | b2 « 16 | b3 « 8 | b4 |
ヘッダー
バイナリ データは、次の表に示す形式のヘッダーで始まります。
タイプ | 名前 | 説明 |
---|---|---|
uint8 | メジャーバージョン | フォーマット メジャー バージョン。 2 に設定します。 |
uint8 | マイナー バージョン | マイナー バージョンをフォーマットします。ゼロに設定します。 |
uint8 | ヘッダーサイズ | ヘッダー サイズ (バイト) |
uint16 | topDictLength | トップ DICT 構造体の長さ (バイト単位)。 |