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では表示されないので問題だと
わかりました。
参考にさせて頂きます。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.93112への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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