BGEE font tool (bgfnt.exe)
BGEEのフォントはfntファイルとbmpファイルから構成されていますが、今回作成したツールは、Bitmap Font Generatorで作成したフォントデータをBGEE用に変換するものです。ツールは以下からダウンロードしてください。
BGEE Font tool ver.1.2
http://www.mediafire.com/download/f945bnsgofl475s/bgeefonttool_ver.1.2.zip
- 2014/01/22: ゲームが複数フォントイメージに非対応だったので複数のフォントビットマップを1画像にまとめる機能を実装。
- 2013/12/04: -cのディレクトリパス不具合を修正。
■その他必要なツール
Bitmap Font Generator (http://www.angelcode.com/products/bmfont/)
■必要な知識
- コマンドプロンプトを使ってツールを実行するための基本的な知識
- Bitmap Font Generatorを使ったビットマップフォントの作成方法
■Fontの作成方法
以下の方法は、日本語フォントについてですが、英語版オリジナルのフォント(GUIFont.bifの中に含まれている)ものも作成することは可能です。
1) 作成するフォントに組み込む文字をオリジナルのfntファイルから抽出
対象となるfntファイルですが、日本語の場合はBGEEのインストールフォルダ内の以下のフォルダにあるfntファイルを利用します。Data\00766\lang\ja_JP\fonts
MSGOTHIC.fntになります。こちらをツールと同じフォルダにコピーします。
次に、以下をコマンドプロンプトで実行します。char.txtにMSGOTHIC.fntに含まれる文字がUnicodeで出力されます。bgfnt -e MSGOTHIC.fnt char.txt
2) Bitmap Font Generator でビットマップフォントを作成
Bitmap Font Generator を以下の設定にします。明示されてないチェックボックスは全てOFFです。・Font Settings
Font: 好きなフォントを選択
Charset: Unicode
Size: 適当な大きさ(おそらく公式日本語フォントは19pxくらい)
Height: 100
Render from TrueType outline: チェック
TrueType hinting: チェック
Font smoothing: チェック
Super sampling: チェック
level: 2
Outline thickness: 0
・Export Options
Padding: 全て0
Spacing: 全て1
Texture: width:1024 height: 1024
Bit depth: 32
Chnl Value: A,R,G,B 全て glyph
Font descriptor: XML
Textures: png
Compression: Deflate
以下の手順で作成する文字の登録を行います。
・"Edit -> Clear all chars in font"で一旦文字選択をクリア
・"Edit -> Select chars from file"を選んで、1)で作成したchar.txtを選択
最後に"Save bitmap font as"でビットマップフォントを生成します。
指定したフォントのフォント名に日本語が含まれている場合は、作成されたfntファイルのテキストの文字コードはOS標準の文字コード(日本語OSだとCP932)になってしまうので、適当なテキストエディタでUTF-8に変換してください。
3) BGEEのフォントファイル形式に変換
2)で生成されたfntファイルとpngファイルを全てbgfntのフォルダにコピーします。2)でフォントサイズを大きくした場合には、pngファイルが2つ以上作成される場合もありますが、その場合は作成されたpngは全てコピーします。
bgfnt で変換します。ちょっと分かりにくいですが、Bitmap Font Generatorのフォントファイルもfntで、BGEEのフォントファイルもfntと拡張子は同じなのですが、中身は全く異なります。bgfnt -c <作成するBGEE用のfntファイル名> <2)で作成したfntファイル>
上記で変換を行うとfntファイルと同じ名前のbmpも生成されます。
4) BGEEに作成したフォントを適用
3)で作成したfntとbmpをBGEEの以下のフォルダにMSGOTHIC.fnt、MSGOTHIC.bmpとしてコピーします。bmpが2つ以上ある場合は、MSGOTHIC1.bmp、MSGOTHIC2.bmp・・・としてください。Data\00766\lang\ja_JP\fonts
5) ゲームを起動
BGEEを起動すると新しく作成したフォントでテキストが表示されるようになります。
■その他
ツール自体には、上記以外にも利用可能な機能があります。
1つめは、複数の文字サイズを1つのfntファイルに組み込む機能です。使い方はツールのreadmeを参照してください。実際英語のオリジナルフォントでは複数のサイズのフォントが組み込まれたfntが使われています。ただ、日本語などの英語以外の言語で専用のフォントを準備した場合には、私の確認した限りでは、サイズの使い分けは出来ないようです。2サイズ以上MSGOTHICに組み込んでもゲームは使用してくれませんでした。
2つめは、文字の左右のスペース指定です。日本語ではほとんど不要と思いますが、文字ごとに左右のスペースを個別に指定できるようなフォーマットになっていますが、ツールでは全文字一律で左右のスペースを指定する形になります。こちらも使い方は、ツールのreadmeを参照してください。
■制限事項
fntのファイルフォーマットのうち、いくつかのデータはまだ何を表しているのかわからないものがあります。したがって生成したフォントや条件によっては文字表示がおかしくなる可能性があります。その場合には、こちらで報告いただければと思います。
■フォントを変更したゲーム画面サンプル
私が作成した隷書体フォントでのゲーム画面です。
Comments
1) BMfontでchar.txtを読み込むと、1文字読み込めない(?)エラーが必ず発生するようです。
2) それに関連してか、bgfnt -c <2)で作成したfntファイル> <作成するBGEE用のfntファイル名>でコマンドを打つと「16進数値○○は無効な文字です」というエラーが発生します。
3) Readmeにはbmfnt -c [BGEE fnt file] [BMFontの file 1]と書かれているので、この順番でコマンドを打つと、「○○png is not found」のエラーが出ます。pngファイルは同じディレクトリに置いてるはずなんですが・・・・・・どうもpngのパスを取得できていないようです。
なお使用しているBMfontのバージョンは1.13、Font Settingsで選択しているフォントはMeiryo UIでサイズ16、char.txtをUTF-8(BOM付き)で保存しています。全てデスクトップ上に置いたフォルダ内で作業しました。
フォントサイズ由来のバグであろう、ツールチップの不具合もだいぶ解消されました。
ただ、フォント名に日本語が入っているフォントを指定してBMfontで吐き出しコンバートすると
「指定されたエンコードに無効な文字があります。行3、位置15」のエラーが出ます。
外部から落とした「梅ゴシック」、内部に組み込まれている「MSPゴシック」でも全く同じ内容のエラーが出ます。
「MS UI Gothic」や「Meiryo UI」などの英語名フォントだと問題なくコンバートできます。
あとは、複数サイズですねえ。これが出来れば開発側の対応を待たなくても済むかも(笑)
DLTCEPではたぶん、GUIfont.bifではなくCHUを編集してウインドウごとにサイズ指定しないとダメかも知れません。
そのCHUですが、BGEEでUI仕様が大幅に変わったせいかDLTCEPで編集して吐き出したものを使うと
高確率でCTDを引き起こします。DLTCEP側ではBGEEのUIに対応する予定も無いっぽいのですが。
もしfnt側でサイズ指定できるとしたら、超ラッキーなんですけどねえ・・・・・・
てっきりchar.txtの方だと勘違いしておりました。
日本語を含んだフォント名でもうまくいきました。ありがとうございます。
さっそく色々なフォントを試してみましたがとても使い勝手が良いです。
私はバッチファイルで作業をすることが多いのでコマンドラインツールは非常に助かります。
あとで、ツールチップの表示を少し改善するフォントをアップしてみたいと思います。
使い方自体はver.1.1と変わりません。
Sorry for this bump. Just thought this information could be helpful, in case someone is searching for the English guide hot to manage the tool.
http://www.shsforums.net/topic/56710-bigger-fonts-for-baldurs-gate/page-2
writemyessaytoday.net