恵梨沙フォント は 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