Yabu.log

ITなどの雑記

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:もちろんいまは手作業でやっているがいずれこの部分もプログラムにするつもり