Engine

フォントファイル | ファイルフォーマット

フォントファイル　( *.fnt )　のフォーマットリファレンスです。
Version 1.0.0.0

最初のフォーマット

Version 1.1.0.0

[Chg] | オフセットがマイナスになることがあるので FNT_GLYPH_NFO 構造体のメンバの型を変更。 UInt8 から Int16 or UInt16 に変更したことで大きいフォントも扱えるようにした。

Version 1.2.0.0

[Imp] | 縁取りの対応。
[Chg] | 効果や縁のサイズを取得できるようにするため、ヘッダを修正。 また、不要になったパラメータを削除。

ファイルヘッダ
情報ヘッダ
グリフアロケーション
グリフイメージ

ファイルヘッダ

ファイルヘッダはフォントファイルを識別するためのものです。

ファイルヘッダ ( FNT_FILE_HEADER 構造体 )

- FNT_FILE_HEADER

名前 | 型 | 説明 | 値
--- | --- | --- | ---
magic | UInt32 | マジック値 | 0x4652504D
version | UInt32 | バージョン | 0x01020000

情報ヘッダ

情報ヘッダはフォントファイル全般の情報を記述します。

情報ヘッダ ( FNT_INFO_HEADER 構造体 )

- FNT_INFO_HEADER

名前 | 型 | 説明
--- | --- | ---
gryphBuffSize | UInt32 | グリフバッファのサイズ ( バイト単位 ) グリフのイメージを取得するのに必要なバッファのサイズになります。
firstCharCode | wchar_t | 最初のキャラクターコード ( ワイド文字 )
lastCharCode | wchar_t | 最後のキャラクターコード ( ワイド文字 )
effects | UInt32 | 効果 FNT_EFFECTS 列挙定数の組み合わせになります。
height | UInt32 | サイズ
weight | UInt32 | 太さ
borderSize | UInt32 | 縁のサイズ FNT_BORDERING が設定されていない場合は常に 0 になります。

- FNT_EFFECTS 列挙

名前 | 説明 | 値
--- | --- | ---
FNT_ITALIC | 斜体 | 0x00000001
FNT_BORDERING | 縁取り | 0x00000002

グリフアロケーション

グリフアロケーションは FNT_INFO_HEADER::lastCharCode - FNT_INFO_HEADER::firstCharCode + 1 の値の数だけ存在します。

グリフアロケーション ( FNT_GRYPH_ALLOC 構造体 )
・
・
・

- FNT_GRYPH_ALLOC

名前 | 型 | 説明
--- | --- | ---
imagePos | UInt32 | イメージを開始するファイルの先頭からのオフセット ( バイト単位 )
cellWidth | UInt16 | セルの幅
cellHeight | UInt16 | セルの高さ
x | Int16 | セルの左上からのＸ方向のオフセット
y | Int16 | セルの左上からのＹ方向のオフセット
width | UInt16 | 幅
height | UInt16 | 高さ

- グリフを表すパラメータの図解

    ┌─────────┐┬
    │                  ││
    │③┌───┐┬    ││
    │  │      ││    ││
    │  │  あ  ││ ⑤ ││
    │  │      ││    ││②
    │  └───┘┴    ││
    │  ├───┤      ││
    │      ④          ││
    └─────────┘┴
    ├─────────┤
              ①

① cellWidth
② cellHeight
③ x, y
④ width
⑤ height

グリフイメージ

全てのグリフイメージになります。
イメージの１ピクセルは 2Byte で表現されます。
上位 1Byte が色合い 0(黒)～255(白) で、下位 1Byte が不透明度 0～255 になります。