C言語で美咲フォントを扱う3
あまり進捗良くありませんが、とりあえずバイナリデータのどこにフォントがあるのか確認できるようになりました。
$ echo "犬" |nkf -s|hexdump 0000000 8c a2 0a
まあこんな感じでSjisのコードを調べた後、そのデータの配列を作成し、
char test_letter[2] = {0x8c,0xa2}; int block_index= block_potition(header.block,test_letter); //文字が存在しているブロックの先頭まで、何文字あったか確認する int base = count_letters_untill_block(block_size,block_index); //ブロックの先頭から何番目めに文字があるのか確認する int offset = char_2B_hex_minus(test_letter,header.block[block_index].start_code); int tmp =HEADER_SIZE + tablesize * (sizeof(bloack_table_entry)) + (base+offset) * (sizeof(font_data)); printf("tmp is %d\n",tmp);
こんな感じのコードを書くとFONTX2形式ファイル中の文字データの位置がわかります。 それをバイナリエディタで抜き出した後、適当に置換して見ました。*1
// 憂憂 憂 // 憂憂 憂憂憂 // 憂 憂憂憂憂憂 // 憂憂 憂 憂 // 憂憂憂 憂憂 // 憂 憂 // 憂 憂憂憂憂憂 // 鬱 鬱 鬱 // 鬱鬱鬱 鬱鬱鬱 // 鬱鬱鬱鬱鬱 // 鬱鬱鬱鬱鬱 鬱 // 鬱鬱鬱鬱 鬱 // 鬱 鬱 // 鬱鬱鬱 鬱 // 犬 犬 // 犬 // 犬犬犬犬犬犬犬 // 犬 // 犬 // 犬 犬 // 犬犬 犬犬 //
憂鬱と犬のデータ場所を探して見たけど、憂はなんか違う感じがする?
もしかして憂ではなく優を出している? と思い優を確認して見たところ、こっちの方が優っぽい。
優優優優優 優 優優優 優優 優優優 優優優優優優 優優優 優優 優 優 優優優 優優
bmpファイルにしたりすると、わかりやすいのかなぁ。
*1:もちろんいまは手作業でやっているがいずれこの部分もプログラムにするつもり