HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0913
zezenana珠音DFWβ付属の 8x8フォントと celput命令の問題について0解決


zezenana

リンク

2022/9/13(Tue) 09:13:36|NO.97126

珠音ドットフレームワーク(DFW)β付属の 8x8フォントを活用させて頂こうと
スクリプトを組んだところ問題点がありましたので報告します。
(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



この記事に返信する


ONION software Copyright 1997-2023(c) All rights reserved.