恵梨沙フォント は Allegro で使えるか?(Allegro 日本語化計画)
Allegro は 8x8ドット拡張子.fnt の PC Bios font が使えるらしい。
Allegro の GUIやデフォルトで使われている8x8 ドットフォントを日本語フォントにできたらとても使いやすくなると思う。
現在のAllegro GUIでは ファイル名やパスが日本語だと文字化けしてしまう。(これにTrueTypeFontを適用することはできない)
8x8ドットで日本語のフォントといえば 恵梨沙フォント というのがあります。
恵梨沙フォント HomePage
このサイトで配布されている恵梨沙フォント のオリジナル版 は、
拡張子が .fnt なのでひょっとしたら読み込めるんじゃと思って試したら、なんとフォントらしき文字が表示された!
もちろん、恵梨沙フォントはJISコードなので、ズレがあり 思い通りの文字が表示できない 。

set_uformat(U_ASCII);// この設定の場合。
allegro_init();
install_keyboard();
FONT *f;
f = load_font( "ELISA100.fnt", makecol(0, 0, 0) ,NULL);// 恵梨沙フォント を読み込む
char strings[]={0xCE , 0xCF , 0xD0 , 0xD1, 0xD2, 0xD3,0xD4, 0xD5,0xD7,0xE6 ,0xE7,0xE8 }; //文字
textout_centre_ex(screen, f , strings , 160 ,105, makecol(0, 0, 0), -1);//表示
readkey();
destroy_font(f);
参考:ずれたままのコードでひらがなを表示する対応表。
0xD1ぁ
0xD2あ
0xD3ぃ
0xD4い
0xD5ぅ
0xD6う
0xD7ぇ
0xD8え
0xD9ぉ
0xDAお
変換ツールもないし、恵梨沙フォント の詳細な仕様が分からないので、いちおうここまで。
英文字も文字化けしてしまうため 問題はまだ山積みだったりする。
このずれが、Allegro 内部の問題で、外部からなんとかできないものだったら難しいな...。
余談:
Allegro 本体 の bios フォント関連の関数はここで定義されている。
allegro-4.1.18/src/font.c // 文字コードの定義 等
allegro-4.1.18/src/fontbios.c // 読み込み関数
fontbios.c の ソース中にある
static FONT* import_bios_font(AL_CONST char* filename)
という関数の 256 という部分を、1024等に変更する。
gl = _al_malloc(sizeof(FONT_GLYPH*) *1024);//256
for(i = 0; i < 1024; i++) {//256
mf->end = 1024;//256
と、 読み込める fnt フォントの制限を突破ことができる(grabber で確認)。
この変更を行った場合、Allegro 本体を再インストールすると、おそらく
ascii font以外のフォントを読み込めるかもしれないが、失敗したときの事を考えるとおすすめできない。
試す場合は自己責任でおねがいします。
余談2:
恵梨沙フォント のリストを表示するにはGrabber のソースコードに手を加えることで可能。
grabber で読み込める bios フォントの制限を取っ払う方法。
Grab のフォントオブジェクト読み込みプラグインをいじって
allegro-4.1.18/tools/plugins/datfont.c
を編集する。
ソース中にある
static FONT* import_bios_font(AL_CONST char* filename)
という関数の 256 という部分を、1024等に変更する。
gl = _al_malloc(sizeof(FONT_GLYPH*) *1024);//256
for(i = 0; i < 1024; i++) {//256
mf->end = 1024;//256
変更したら grabber.c をコンパイルする。改変版はdopinggrabberというなまえにでもしとく。
gcc -Wall -o dopinggrabber grabber.c datedit.c plugins/*.c -I /home/allegro/allegro-unstable/ `allegro-config --libs`
これでコンパイルできる。
これでELISA.fnt を grabber から 読み込むと 0xFF 以降の文字も見る事ができます。
想定外の使い方なので、試す場合は自己責任でおねがいします。
2005/04/20