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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0627
hspハート型の文字を表示したいのですが5解決


hsp

リンク

2021/6/27(Sun) 07:36:31|NO.93112

文字化けして?の文字が表示されてしまいます
表示する方法はないでしょうか?



この記事に返信する


ゆうやん

リンク

2021/6/27(Sun) 08:28:42|NO.93113

エディタがUnicodeに対応していないためです。
Shift-JISにはハートの記号が存在しないため、存在しない文字は「?」(疑問符)になります。

VSCodeの環境を構築し、hsp3utfをインクルードすれば正しく表示されます。

↓こちらを参考に
https://qiita.com/vain0x/items/1c0be49b3b22142dbfd1



hsp

リンク

2021/6/27(Sun) 16:36:38|NO.93114

ゆうやんさんありがとうございます。Unicode未対応なんですね。
外字エディタで自作してシフトJISに追加でもいけました。(^^)



ゆうやん

リンク

2021/6/27(Sun) 17:56:14|NO.93116

VScodeの環境の構築が面倒であれば、ginger.exeをダウンロードし、HSP3インストールフォルダに配置し、
メモ帳などのテキストエディタでHSPのスクリプトファイルをUTF-8(BOMなし)で保存。
https://github.com/vain0x/hsp3-ginger/raw/main/hsp3-ginger/bin/ginger.exe

コマンドプロンプトで、以下のコマンドを実行してやることで可能です。
ginger build --release ディレクトリ名とHSPスクリプトファイル名(拡張子も含む)

また、テキストエディタで下記の内容をANSIで拡張子を.batにして保存し、バッチファイルにドラッグ&ドロップしてやることで、実行することが可能です。

@echo off rem HSP3のインストールフォルダは場合によって違うかも? rem HSPのスクリプトエディタを開き mes dir_exe で実行してディレクトリ名を確認してください。 rem C:\hsp361 であれば C:\hsp361\ginger build --release %1 rem exeを作成したいのであれば、runをbuildに変更する。 C:\hsp351\ginger run --release %1 pause



Drip

リンク

2021/6/27(Sun) 19:02:36|NO.93117

こんにちは。

Windows限定であればShiftJISのまま、古来からWindowsに同梱されている記号フォント2種を使用して表示する方法もあります。
以下のようにモジュール化して使用すれば気軽にフォントを変えながら描画することもできるので、よろしければお試しください。


#module #deffunc _font str f,int s,int p //_mesで使うフォントを宣言 myfont=f //標準フォントを記憶 mysize=s //標準サイズを記憶 myprm=p //標準スタイルを記憶 font myfont,mysize,myprm //標準フォントを指定 return #deffunc _mes str s //文字列中の{64}や{64_}等を工具や指等の特殊文字で描画する命令(数値は記号のアスキーを10進で直指定) if mysize=0:myfont=msgothic:mysize=16 //フォントが未定義なら勝手に定義 rct=s,"","" //オリジナル文字列, 1行分の文字列, 取得した特殊文字コード rcp=ginfo_cx,0,0 //表示位置X, 文字列全体の処理したインデックス, 1行中に見つかった特殊文字のインデックス repeat //行取得ループ getstr rct(1),rct,rcp(1) //インデックスの位置から1行分をrct(1)に取得 if strsize<1:break:else:rcp(1)+=strsize //処理する文字がなければ処理終了。あればインデックスを送る repeat //1行中に含まれる特殊文字と文字列を表示するループ rcp(2)=instr(rct(1),0,"{") //特殊文字のインデックスを取得 if rcp(2)>-1:{ //特殊文字が見つかったら mes strmid(rct(1),0,rcp(2)),1 //特殊文字までの文字列を描画 getstr rct(2),rct(1),rcp(2)+1,'}':rcp(2)+=strsize+1 //特殊文字の文字コードをrct(2)に取得 rct(1)=strmid(rct(1),rcp(2),strlen(rct(1))-rcp(2)) //特殊文字コード以降の文字列でこの行を上書き if rct(2)!"":if peek(rct(2),strlen(rct(2))-1)='_':{ //{xx_}ならWebdings、{xx}ならWingdingsを参照 font "Webdings",mysize,myprm }else{ font "Wingdings",mysize,myprm } poke rct(2),0,int(rct(2)):poke rct(2),1,0:mes rct(2),1 //特殊文字を描画 font myfont,mysize,myprm //フォントを標準のフォントに戻す }else{ //特殊文字が無くなったら処理終了 break } loop mes rct(1) //残っている文字列を描画 pos rcp,ginfo_cy //行を移動する loop return #global _font msgothic,24 //事前にフォントを指定しておきましょう objsize ,,40 //今回は改行の幅を広く取ります pos 100,50 //ここからテスト文字描画 color 192:_mes "ハートも表示できます{89_}\nお知らせがあります{37}" color ,,192:_mes "気分が晴れません{83}\n{89}召還魔法{89}" color 128,128:_mes "いいね{74} だめだね{76}" color 255:_mes "待ってるわ{150_}{150_}{150_}" color:_mes "{64_}設定 {97_}新しい機能 {97_}素晴らしい互換性" color ,192:_mes "充電が完了しました{126_}" stop //★このstopを解除すると記号文字一覧を確認できます。 repeat 2 screen 1+cnt,30*16+30,30*16,0,(ginfo_winx+ginfo(4))*cnt,ginfo(5) color ,,255 repeat 16 pos 0,cnt*30:mes (cnt*16) loop color if cnt=0:{ font "webdings",24:title "webdings (指定例:{64_})" }else{ font "wingdings",24:title "wingdings (指定例:{64})" } repeat 256 pos cnt\16*30+30,cnt/16*30:a=" ":poke a,0,cnt mes a loop loop



hsp

リンク

2021/6/27(Sun) 20:18:32|NO.93118

ゆうやんさん、Dripさんありがとうございます。
考えてみれば外字エディタでは他人のPCでは表示されないので問題だと
わかりました。
参考にさせて頂きます。



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