OS/2 テーブル
「'OS/2' テーブル」には、フォントの色々な情報が格納されています。
必須テーブルです。
テーブルデータのバージョンは 0〜5 まであります。
実際には、ver 1 or 3 を使用しているフォントが多いです。
必須テーブルです。
テーブルデータのバージョンは 0〜5 まであります。
ver 0 | TrueType revision 1.5 で定義 |
---|---|
ver 1 | TrueType revision 1.66 で定義 |
ver 2 | OpenType 1.1 で定義 |
ver 3 | OpenType 1.4 で定義 |
ver 4 | OpenType 1.5 で定義 |
ver 5 | OpenType 1.7 で定義 |
実際には、ver 1 or 3 を使用しているフォントが多いです。
テーブルデータ
uint16 version | バージョン番号。0〜5 |
---|---|
int16 xAvgCharWidth | フォント内のすべての、幅が 0 でないグリフの平均幅。 |
uint16 usWeightClass | フォントの太さ (1〜1000)。 100 : Thin 200 : Extra-light (Ultra-light) 300 : Light 400 : Normal (Regular) 500 : Medium 600 : Semi-bold (Demi-bold) 700 : Bold 800 : Extra-bold (Ultra-bold) 900 : Black (Heavy) |
uint16 usWidthClass | フォントの相対的な文字幅。 1 : Ultra-condensed [50%] 2 : Extra-condensed [62.5%] 3 : Condensed [75%] 4 : Semi-condensed [87.5%] 5 : Medium (normal) [100%] 6 : Semi-expanded [112.5%] 7 : Expanded [125%] 8 : Extra-expanded [150%] 9 : Ultra-expanded [200%] |
uint16 fsType | ドキュメントへのフォント埋め込みに関するフラグ。 0-3bit: 使用許可。有効な値な以下のみ。 [0] フォントは埋め込み可能で、そのフォントをインストールすることもできる [2] 埋め込みを許可しない [4] 表示と印刷のためにのみ埋め込むことが可能 [8] 編集可能 (表示と印刷に加えて、編集を行うこができる) 8bit: フォントの埋め込み時に、サブセットを許可しない 9bit: ビットマップのみ埋め込み可能 他のビットは予約扱いで、0。 |
int16 ySubscriptXSize | 下付き文字の推奨水平幅 (フォントデザイン単位) |
int16 ySubscriptYSize | 下付き文字の推奨垂直高さ |
int16 ySubscriptXOffset | 下付き文字の推奨 x 移動値 |
int16 ySubscriptYOffset | 下付き文字の推奨 y 移動値 |
int16 ySuperscriptXSize | 上付き文字の推奨水平幅 |
int16 ySuperscriptYSize | 上付き文字の推奨垂直高さ |
int16 ySuperscriptXOffset | 上付き文字の推奨 x 移動値 |
int16 ySuperscriptYOffset | 上付き文字の推奨 y 移動値 |
int16 yStrikeoutSize | 取り消し線の太さ (フォントデザイン単位) |
int16 yStrikeoutPosition | 取り消し線の上の位置 (ベースラインに対する位置) |
int16 sFamilyClass | 上位バイトにファミリークラス、下位バイトにサブクラス。 'Sans Serif' などのファミリーに分類させる。 ClassID = 0、SubclassID = 0 で、定義なし。 |
uint8 panose[10] | 各バイトで書体の特性を定義。 PANOSE 書体でフォントをマッチングする時に使います。 最初の 1byte がファミリの種類で、以降の値は、その種類によって異なります。 [0] Family Kind 2=Latin text(通常), 3=Latin Hand Written(手書き), 4=Latin Decorative(装飾), 5=Latin Symbol(記号など) なお、10個の各値は、共通で以下の値を指定できます。 0 = Any (任意の数値にマッチ) 1 = No Fit (適合しない。未定義の書体時など) |
uint32 ulUnicodeRange1 uint32 ulUnicodeRange2 uint32 ulUnicodeRange3 uint32 ulUnicodeRange4 | 計 128 bitのフラグ値。 ((ulUnicodeRange4 << 96) | (ulUnicodeRange3 << 64) | (ulUnicodeRange2 << 32) | ulUnicodeRange1) cmap に「platformID = 3、encodingID = 1 or 10」(Windows における Unicode) が含まれる場合、フォントに含まれている Unicode ブロックを指定するためのフラグ。 |
Tag achVendID | フォントベンダーID。 Microsoft によって ID が登録されている。 空白にする場合は、スペースを4つ並べる。 自作フォントの場合は、適当な名前を付ける。 |
uint16 fsSelection | フォントパターンに関するフラグ。 0 bit : italic or oblique の斜体グリフが含まれる 1 bit : 下線が引かれている 2 bit : グリフの前景と背景が逆になる 3 bit : 中を塗りつぶさないアウトライン 4 bit : 打ち消し線が引かれている 5 bit : 太字 6 bit : 標準の太さ 7 bit : デフォルトの行間として、以下の式を勧める 「sTypoAscender - sTypoDescender + sTypoLineGap」 8 bit : name テーブルの nameID = 21, 22 を使用しない 9 bit : oblique の斜体グリフが含まれる 10-15 bit : 予約(0) |
uint16 usFirstCharIndex | cmap に「platformID = 3、encodingID = 0 or 1」が含まれる場合、フォント内の最小の Unicode インデックス。 他の ASCII 文字などの文字セットでは、0x0020 となる。 最小値が 0x10000 以上の場合は、0xFFFF をセットする。 |
uint16 usLastCharIndex | 上と同じで、最大の Unicode インデックス。 U+10000 以上をサポートする場合は、0xFFFF にする。 |
int16 sTypoAscender | 印刷上のグリフの高さ。 縦書きの場合、em ボックスの上。 |
int16 sTypoDescender | 印刷上のグリフの深さ。 縦書きの場合、em ボックスの下。 |
int16 sTypoLineGap | 印刷上の行間。 sTypoAscender/sTypoDescender の値と組み合わせて行間を決める。 |
uint16 usWinAscent | Windows でのグリフの高さ。 Windows GDI では、usWinAscent/usWinDecent を使って、レンダリング時のサイズが決められている。 座標が usWinAscent より上の位置はクリッピングされるため、クリッピングさせたくない場合はこの値を yMax 以上にする。 |
uint16 usWinDescent | Windows でのグリフの深さ |
ver 1 以降の場合、以下が続く | |
uint32 ulCodePageRange1 uint32 ulCodePageRange2 | 計 64 bit のフラグ値。 ((ulCodePageRange2 << 32) | ulCodePageRange1) cmap に「platformID = 3、encodingID = 1」 (Unicode BMP) が含まれる場合、どのコードページ (言語) が含まれているかを表す。 bit | code | 説明 | page | ------------------------- 0 bit | 1252 | Latin 1 1 bit | 1250 | Latin 2: Eastern Europe ... 17 bit | 932 | JIS/Japan ... 31 bit | ---- | Symbol Character Set |
ver 2 以降の場合、以下が続く | |
int16 sxHeight | ベースラインと、「x」のグリフの高さの間の距離。 文字「x」がない場合は、0 に設定する。 |
int16 sCapHeight | ベースラインと、「H」のグリフの高さの間の距離。 |
uint16 usDefaultChar | フォントでサポートされていない文字の場合に、デフォルトとして使用する文字の Unicode 値。 0 の場合は、グリフ ID = 0 とする。 アプリケーションはこの値を使用しないことを推奨する。 |
uint16 usBreakChar | デフォルトのブレーク文字の Unicode 値。 ほとんどのフォントでは、U+0020 (空白) を指定する。 アプリケーションはこの値を使用しないことを推奨する。 |
uint16 usMaxContext | 合字などの機能で、先読みする文字の最大数。 フォントがペアカーニングの機能のみを持つのであれば、2文字を扱うので、2。 3文字を1文字に置き換えるような機能があれば、3。 |
ver 5 以降の場合、以下が続く | |
uint16 usLowerOpticalPointSize uint16 usUpperOpticalPointSize | この値は STAT テーブルに置き換えられています |
プログラム
>> 06_os2.c
OS/2 テーブルのデータを表示するプログラムです。
OS/2 テーブルのデータを表示するプログラムです。
---- OS/2 ---- version: 3 xAvgCharWidth: 956 usWeightClass: 400 usWidthClass: 5 fsType: 0x0000 ySubscriptXSize: 1024 ySubscriptYSize: 1579 ySubscriptXOffset: 0 ySubscriptYOffset: 307 ySuperscriptXSize: 1024 ySuperscriptYSize: 1579 ySuperscriptXOffset: 0 ySuperscriptYOffset: 0 yStrikeoutSize: 160 yStrikeoutPosition: 858 sFamilyClass: 0x0801 panose: 2,11,5,0,0,0,0,0,0,0, ulUnicodeRange1-4: 0x00000000_00000012_3AC7EDFA_E00002FF achVendID: 'IPA ' fsSelection: 0000_0000_0100_0000b usFirstCharIndex: 0x0020 usLastCharIndex: 0xFFE8 sTypoAscender: 1802 sTypoDescender: -246 sTypoLineGap: 0 usWinAscent: 1802 usWinDescent: 401 ulCodePageRange1-2: 0x00000000_00020001 sxHeight: 1040 sCapHeight: 1483 usDefaultChar: 0x0000 usBreakChar: 0x0020 usMaxContext: 6