力技で実行ファイルにフォントを埋め込もうと、
pset命令でフォントを描画する関数を自動生成するスクリプトを書いたんですが、
何故か92行でエラーが出ます。
何が問題なのでしょうか・・・
全く見当がつかず困っております・・・(HSP3のバージョンは3.5.1です)
;マクロ定義----------------------------------------------------
;==バッファの設定== #define buff_info_id 0 ;情報などを表示するウィンドウのID #define buff_font_id 1 ;フォントを描画するバッファID #define buff_font_x 16 ;フォントを描画するバッファのサイズ #define buff_font_y 16 ;==フォントの設定== #define font_name msgothic ;使用するフォント #define font_size 12 ;フォントのサイズ #define color_white color 255,255,255 ;色指定(白) #define color_black color 0,0,0 ;色指定(黒) ;初期化----------------------------------------------------- ;バッファを作成する buffer buff_font_id,buff_font_x,buff_font_y ;フォントテーブル(仮) font_table={"!\"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_` abcdefghijklmnopqrstuvwxyz{|}~ ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞ ただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽ まみむめもゃやゅゆょよらりるれろゎわゐゑをん ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾ タダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポ マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ "} ;テーブルから改行を取り除く font_table=strtrim(font_table,0,13) font_table=strtrim(font_table,0,10) ;現在描画するキャラクタ(仮) font_table_currentchar="" ;スクリプト生成用中間データ保存用変数 font_script_out="" ;最終出力データ font_script_bitmap="" ;ビットマップ font_script_size="" ;フォントサイズ temp="" ;一時変数 flag=0 ;一時フラグ ;フォントスクリプト生成処理-------------------------------- for font_table_index,0,varsize(font_table),font_table_currentchar_size ;キャラクタが全角か半角か調べて文字コードを取得 font_table_currentchar="" if peek(font_table,font_table_index) >=129 and peek(font_table,font_table_index) <= 159 or peek(font_table,font_table_index) >= 224 and peek(font_table,font_table_index) <= 252 { ;全角 font_table_currentchar_size=2 font_table_currentchar_code=wpeek(font_table,font_table_index) }else{ ;半角 font_table_currentchar_size=1 font_table_currentchar_code=peek(font_table,font_table_index) } wpoke font_table_currentchar,0,font_table_currentchar_code ;wpoke get_str,0,get_int ;バッファにフォントを描画する gsel buff_font_id color_black:boxf color_white:font font_name,font_size:pos 0,0:mes font_table_currentchar ;中間データに書き込み(フォントサイズ) notesel font_script_size noteadd "case "+font_table_currentchar_code noteadd "return "+ginfo_mesx ;描画されたフォントを解析してスクリプトに変換 temp="" for y,0,buff_font_y,1 flag=0 for x,0,buff_font_x,1 pget x,y if ginfo_r!0 or ginfo_g!0 or ginfo_b!0 { if flag=1 : temp+":" ;同じ行に続けて書き込む場合はダブルクォーテーション追加 temp+"pset x+"+x+",y+"+y+"" flag=1 } next ;あまりにも1行が長いとスクリプトエディタが落ちるので改行を追加 if flag=1 { temp+"\n" } next ;中間データに書き込み(ビットマップ) notesel font_script_bitmap noteadd "case "+font_table_currentchar_code noteadd temp noteadd "return" next ;中間データをもとに最終的なスクリプトを生成 notesel font_script_out noteadd "#module \"sub_fontdrawscript\"" ;文字列描画 noteadd "#deffunc pfontdraw var code,int x,int y" noteadd "switch code" noteadd font_script_bitmap noteadd "swend" noteadd "return" ;文字サイズ取得 noteadd "#deffunc pfontxsize var code" noteadd "switch code" noteadd font_script_size noteadd "swend" noteadd "return" noteadd "#global" ;処理結果(仮)---------------------------------------------- gsel buff_info_id mesbox font_script_out,640,480,0 notesave "font.hsp"