2018/04/08文字表示Irrlichtの文字表示機能Irrlichtには文字表示機能が標準装備されているので、これを使いたい。文字の書体は、標準で英文フォントがビルトインされており、何もせずとも使えるが、どうにか読める程度の解像度しかなく、日本語も使えないので、専らデバッグ用である。日本語フォントは付属しないので、日本語表示するためには自分でフォントを用意する必要がある。フォントは独自のビットマップ形式フォントのみの対応なので、専用のFontToolを使って自分で生成する必要がある。Irrlichtのフォント周りはUnicodeベース(UTF-16LEだがサロゲートペアは不可)の多言語対応であるため、無改造で日本語を表示できる。FontToolについてフォント作成にはFontToolが必要である。FontToolを使う必要がある。FontToolにはマルチバイト文字の扱いに関するバグがあり、このままでは日本語の文字の一部(ひらがなの「め」以降など)がフォント生成できない。このため、最低でも、このバグを修正してFontToolをビルドする必要がある。そこで、日本語での利用に耐えうる最低限の改良をしたFontToolを作成した。日本語環境用FontTool改良点は下記である。日本語を含むフォント名が表示できるよう、表示に日本語フォント(VLゴシック)を使用するようにした。これに伴うGUIのレイアウト小変更。生成する文字を絞り込めるようにした。日本語フォントの多くには膨大な数の文字があり、そのまま使うと過剰なメモリ消費となりかねないため。絞り込みは、exeと同フォルダにフィルタファイル"FontTool-filter.txt"を置くと認識する。フィルタファイルはUTF-16LE(BOM付き)である必要がある。フィルタファイル内の文字の並びは順不同かつ同文字の重複は無視されるので、極端な話、作品中で使うテキストを全部連結して詰め込んでも良い。ユーザの入力した文言を表示することのないアプリであれば、使う文字だけに絞り込むのも良い。添付したサンプルのフィルタファイルの内容はASCII文字+旧JIS第1水準+αといったところ。フォント生成の手順は下記の通り。画像化したいフォントを選択。先頭が"@"の物は縦書き用なので、選んではいけない。AA(アンチエイリアス)する場合はAlphaにもチェックを入れる。出力はpngを選択する。日本語フォントなら、画像サイズは256x256以上を推奨。ビットマップ化したフォントデータを組み込む際には、それが許されているかをライセンスを見て確認すること。筆者の知る限り、このような扱いを許可しているフォントは少ない。文字の表示フォントのロードは下記のようにする。pIrrDevice-&gtgetGUIEnvironment()-&gtgetFont("myfont.xml");文字表示は下記のようにする。beginScene()およびISceneManager::drawAll()以降、かつ、endScene()以前で行なうこと。標準GUI部品にはテキスト入力ボックスが含まれるが、これはIMEに対応していないため、日本語入力は出来ない。IMEを使いたい場合はIrrlichtMLなどを参考にして改造すべし。デフォルトのフォントはエンジンにビルトインされており、BuiltInFont.h内のBuiltInFontData配列上にBMP形式で格納されている。CGUIFontクラスには、文字の拡大/縮小機能は無い。このため、サイズ毎にフォントを用意する必要がある。2018管理者宛メール。