スクリプトを組んだところ問題点がありましたので報告します。
(HSP3.7b2にて確認。DFW同梱の afont8.pngを利用しました)
https://hsp.tv/make/tamane_dfw.html
-----
■問題点1
カナフォントのセル位置全てがASCIIコードとして+16ズレている
カラー違いも bfont8.png、cfont8.png も同様です。
例:「ア」($B1)を表示しようとすると「チ」($C1)が表示される
付属サンプル fwtest5.hspの 10行目 s1を以下に変更し実行することで
簡単に確認できます。
s1="アイウエオ:タマネ ドット フレームワーク"
ただし、12行目 df_addmesの rnd(16)が0か1の場合、
表示に問題が出る(カナ+コロンの不具合?)ので再度実行します。
-----
(暫定的な回避策)
1.afont8.pngのカナ画像の位置を全て変更して保存する。
人のドットキャラ以降に128x8ドットの透明を追加し
それ以降のカタカナ画像を全てシフトする(bfont8/cfont8も同様)
※WebDishサーバーでの利用は差し替えができないので回避出来ません
2.カナコード変換を行う。$A0から$DFの場合、コードを−16する。
※別な処理でも使う場合には無変換やデコードする必要があります。
3.スクリプト入力は意識して−16ズラしてカナ入力する(暗号みたい)
$90-$9Fはカナで入力できないので pokeを利用する
DFWの font8は独自の配置なので意図してズラしている場合も考えましたが、
ASCIIコード文字との違いはスクリプトのカナ入力の際に気になりました。
ちなみにスラッシュが別な位置にあること(スラッシュは空白、
¥が通常スラッシュ)やアンダーバーがアッパーバーになるのも
少し気になりました。
-----
■問題点2
8x8フォントのようなドットが密接するセルの場合には
以前から度々スレッドにて取り上げられている
celput命令の拡大、反転の際に画像バッファの取得位置ズレが発生します。
(DFWβでは画面拡大に viewcalcを利用しているので問題なし)
以下のサンプルスクリプトにて確認してください。
(HSP3.7b2の対策入り。DFW同梱の afont8.pngを利用します)
-----
(暫定的な回避策)
1.celdiv/celputを使わず gzoomを利用する
2.celload後、拡大利用する全てのgzoom結果をバッファして利用する
※celputでは zoomx,zoomyパラメータを利用しない。
※画像バッファを拡大ごとカラーごとに増やすことになる。
(Dishでは gmulcolorがあるのでカラーごとに増える点は回避できます)
ドットフォント+celput拡大利用は制作によってはよく利用しますので
位置ズレへのご対応のほどご検討よろしくお願いします。
-----
■問題点2サンプル利用方法
エディタの無題で実行するには、afont8.pngを hspが参照できる場所に
置いて下さい(hsp37beta\hsptvフォルダなど)
ファイル化している場合には同一フォルダに置いて下さい。
#define USE_CELPUT をコメントアウトすることで gzoomに差し替えたものを
確認できます。実行結果を並べて確認してください。
celputの拡大反転文字では文字欠けが発生します。
#includeのコメントを切り替えることで Win版Dish/IMG4も確認することが
できます(gmode 1で png透過差異が出るようにしています)
どちらも正常に表示されますが、gzoomの反転表示位置になぜか差異があります。
カナ表示のASCIIコードズレについては問題点1の通りです。
Win版Dish/IMG4の screen命令の前に celload/fontをするとリセットされる問題と
mes連続改行されない問題があるので回避しています(HSP3.7b2向け)
;#include "hsp3dish.as" ;#include "hgimg4.as" #define USE_CELPUT ;gzoom使用はコメント ;※afont8.png は、tamane_dfw05.zipに同梱されているもの screen 0,640,480 ;※Win版Dish/IMG4ではバッファ/font処理前に行う font msgothic,14:celload "afont8.png",1:celdiv 1,8,8,0,0 #ifdef USE_CELPUT u="afont8 celput" #else u="afont8 gzoom" #endif ;screen 0,640,480 ;※Win版Dish/IMG4 ではエラーやfont無効となる redraw 2:color ,,255:boxf m="(!#$%&)012345_\n@ABCDE~abcde\n[アイウエオ・ガパボ]" gmode 1:color 255,255,255:mes m:pos 8:mes u+" 8x8dot\n " ;※mesの連続改行問題は空白を入れて回避 af8mes m,0,1.0,1.0:pos 8:mes "\n \n"+u+" 4.0x2.0\n " af8mes m,2,4.0,2.0:pos 8:mes "\n \n"+u+" 2.0x4.0\n " af8mes m,8,2.0,4.0:pos 8:mes "\n \n \n"+u+" -2.0x-4.0\n " pos ginfo_cx+224,ginfo_cy+90:af8mes m,11,-2.0,-4.0 redraw 1:stop #deffunc af8mes str _p1,int _p2,double _p3,double _p4 cx=ginfo_cx:i=0:s=_p1:repeat c=peek(s,i):if c=0:break if c!=13{if c=10{pos cx,ginfo_cy+int(8.0*_p4) }else{ #ifdef USE_CELPUT celput 1,(256*_p2)+c,_p3,_p4 #else gzoom int(8.0*_p3),int(8.0*_p4),1,(c\64)*8,(32*_p2)+((c/64)*8),8,8 pos ginfo_cx+int(8*_p3) #endif }}i++:loop return