Skip to content

BGEE font tool (bgfnt.exe)

jpmodjpmod Member Posts: 16
edited January 2014 in 日本語
ある程度の使い勝手になるようツールを拡張したりテストしたりしていて遅くなってしまいましたが、 @synctam さんからのリクエストもあったので、ツール公開に合わせて新しくスレッドを建ててみました。

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のファイルフォーマットのうち、いくつかのデータはまだ何を表しているのかわからないものがあります。したがって生成したフォントや条件によっては文字表示がおかしくなる可能性があります。その場合には、こちらで報告いただければと思います。

■フォントを変更したゲーム画面サンプル

私が作成した隷書体フォントでのゲーム画面です。

image
Post edited by jpmod on

Comments

  • norilmnorilm Member Posts: 45
    edited December 2013
    早速使わせていただきましたが、いくつか問題が発生しました。

    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付き)で保存しています。全てデスクトップ上に置いたフォルダ内で作業しました。
  • jpmodjpmod Member Posts: 16
    すみません。バタバタしながら公開したのでチェックが甘かったようです。。
    norilm said:

    1) BMfontでchar.txtを読み込むと、1文字読み込めない(?)エラーが必ず発生するようです。

    こちらは、fntに元々登録されている文字の中で最後の文字が通常使用しない文字になっているためで、ツールの不具合ではありません。この状態のままフォントを作成されても特に問題は発生しません。
    norilm said:

    2) それに関連してか、bgfnt -c <2)で作成したfntファイル> <作成するBGEE用のfntファイル名>でコマンドを打つと「16進数値○○は無効な文字です」というエラーが発生します。

    こちらは、投稿した手順が間違っており、ツールのreadmeの使い方が正しいです。自分の投稿した文章を修正しました。
    norilm said:

    3) Readmeにはbmfnt -c [BGEE fnt file] [BMFontの file 1]と書かれているので、この順番でコマンドを打つと、「○○png is not found」のエラーが出ます。pngファイルは同じディレクトリに置いてるはずなんですが・・・・・・どうもpngのパスを取得できていないようです。

    画像のディレクトリパスの処理に問題があったので修正しました。新しいver.1.1をダウンロードしてみてください。
  • norilmnorilm Member Posts: 45
    で・き・ま・し・た。すっごい感動です。本当にフォントが変更されてます。
    フォントサイズ由来のバグであろう、ツールチップの不具合もだいぶ解消されました。

    ただ、フォント名に日本語が入っているフォントを指定してBMfontで吐き出しコンバートすると
    「指定されたエンコードに無効な文字があります。行3、位置15」のエラーが出ます。
    外部から落とした「梅ゴシック」、内部に組み込まれている「MSPゴシック」でも全く同じ内容のエラーが出ます。
    「MS UI Gothic」や「Meiryo UI」などの英語名フォントだと問題なくコンバートできます。

    あとは、複数サイズですねえ。これが出来れば開発側の対応を待たなくても済むかも(笑)

    DLTCEPではたぶん、GUIfont.bifではなくCHUを編集してウインドウごとにサイズ指定しないとダメかも知れません。
    そのCHUですが、BGEEでUI仕様が大幅に変わったせいかDLTCEPで編集して吐き出したものを使うと
    高確率でCTDを引き起こします。DLTCEP側ではBGEEのUIに対応する予定も無いっぽいのですが。
    もしfnt側でサイズ指定できるとしたら、超ラッキーなんですけどねえ・・・・・・
  • jpmodjpmod Member Posts: 16
    norilm said:


    ただ、フォント名に日本語が入っているフォントを指定してBMfontで吐き出しコンバートすると
    「指定されたエンコードに無効な文字があります。行3、位置15」のエラーが出ます。

    こちらについては、手順にも記載していたのですがわかりにくかったかもしれないので、記述位置を変えて赤字にしておきました。
    norilm said:


    DLTCEPではたぶん、GUIfont.bifではなくCHUを編集してウインドウごとにサイズ指定しないとダメかも知れません。
    そのCHUですが、BGEEでUI仕様が大幅に変わったせいかDLTCEPで編集して吐き出したものを使うと
    高確率でCTDを引き起こします。DLTCEP側ではBGEEのUIに対応する予定も無いっぽいのですが。
    もしfnt側でサイズ指定できるとしたら、超ラッキーなんですけどねえ・・・・・・

    fntファイルはあくまでも文字とビットマップフォントを紐付けて、保持するためのフォーマットというだけで、どのフォントをどう使用するかは、どこかほかのところ(おそらくUIを定義しているファイル内)でフォント指定を行っているんだと思います。が、どこなのかはわかりません。
  • norilmnorilm Member Posts: 45
    あ、なるほど、吐き出したfntファイルをUTF-8に変換するんですね。
    てっきりchar.txtの方だと勘違いしておりました。

    日本語を含んだフォント名でもうまくいきました。ありがとうございます。
  • synctamsynctam Member Posts: 12
    いつもすばらしいツールを提供していただき、ありがとうございます。
    さっそく色々なフォントを試してみましたがとても使い勝手が良いです。
    私はバッチファイルで作業をすることが多いのでコマンドラインツールは非常に助かります。
    あとで、ツールチップの表示を少し改善するフォントをアップしてみたいと思います。
  • jpmodjpmod Member Posts: 16
    日本語フォントをもう少し見やすくしようといろいろいじってみたところ、fntファイル自体は、複数のフォントビットマップファイルに対応しているフォーマットにも拘らず、ゲームプログラム自体は対応していなくてうまく表示ができないことがわかったので、複数のビットマップがある場合は、1枚のビットマップに合成する機能を追加実装しました。

    使い方自体はver.1.1と変わりません。
  • AndraxxusAndraxxus Member Posts: 1
    hi, can any of you explain to me, how to turn a exocet.ttf font into a form so Icewind dale EE can use it? and also where shoud i put the output file and how to activate it?
  • TerryMulhernTerryMulhern Member Posts: 3
    I found a short guide in one of the old threads on shsforums. Once generated, you need to place "normal.bmp" and "normal.fnt" files into the game's "override".
    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
Sign In or Register to comment.