|
 |
|
2025/2/18(Tue) 21:04:58|NO.103072
HSP3.7のβ版について多くのご報告とご要望を頂き感謝致します。
HSP3.7β9でご指摘頂いた問題も含めて、いくつかの不具合を修正したバージョンとしてHSP3.7β10版を公開致しました。
新規の機能改修を今後のバージョンでも行っていきたいと考えています。
引き続き問題などあればお知らせ頂けると助かります。
HSP3.7β10(フルセット版)
https://www.onionsoft.net/hsp/file/hsp37b10.zip
HSP3.7β10(Windows版のみ)
https://www.onionsoft.net/hsp/file/hsp37b10le.zip
HSP3.7β(ネットワークインストール版)
https://www.onionsoft.net/hsp/file/hsp37upd.zip
※HSP3.7β8以降の環境ではHSP3アップデーターから更新が可能です
※HGIMG4(Angle最新版)などの追加パッケージは、HSP3アップデーターによりインストールしてください
詳細はこちらのページにて
https://www.onionsoft.net/wp/archives/3893
2025/02/14 3.7 beta10
Windows上での終了時、WM_DESTROYメッセージを処理できるように修正
exist命令で253文字以上のファイル名を指定した場合にアプリが落ちることがある不具合を修正
OBAQなどの外部拡張命令実行時にエラー10(サブルーチン外のreturn)が出ることがある不具合を修正
スクリプトエディタの予約キーワードに#aht, #ahtmes, #epackdir, #packdirを追加
スクリプトエディタの「定義へ移動」などのソース解析が新規ファイルでエラーになる不具合を修正
「定義へ移動」「すべての定義を参照」機能でモジュール内の命令や関数が検索できない不具合を修正
最適化により削除されるモジュール内でソース解析が正しく動作しない不具合を修正
スクリプトエディタのソース解析中にエラーが発生した際にダイアログを出すように修正
mod_tamakeisdモジュールのsdchr_puticonのX,Y調整位置が反映されない不具合を修正
hspoggプラグインのoggファイル再生時の末端にノイズが発生する不具合を修正
[HGIMG4] 最初にタッチした際のマルチタッチ情報が-1になっていなかった不具合を修正
[HGIMG4] gpclone命令でモデル形状の物理設定されたオブジェクト座標がリセットされない不具合を修正
[hspinet] SetNkfOption、NkfConvert等のNKF内蔵APIが使用できなかった不具合を修正
[HSP3Dish] スプライトのライフ値とパワー値を管理するes_setlife命令を追加
[HSP3Dish] es_check命令の検索オプションを追加
[HSP3Dish] objinfo関数で取得できる項目が標準HSP3と異なっていたものを修正
[HSP3Dish] linux,iOS,android,js(WebGL)でgettime(7)の値が1/10になっていた不具合を修正
[HSP3Dish][hsp3js] 加速度(ginfo_accel*)、ジャイロセンサー値(ginfo_gyro*)の取得に対応
[HSP3Dish][hsp3js] HGIMG4の表示解像度(ENV.HSP_SX,SY)変更に仮対応
[HSP3Dish][hsp3js] HGIMG4のオフスクリーンバッファへの描画に対応(zakki)
[HSP3Dish][hsp3js] フォント描画の高速化に対応(zakki)
[HSP3Dish][hsp3js] wpoke,wpeek,lpoke,lpeekの処理がインデックス値によりWindowsと異なる不具合を修正
[HSP3Dish][android] APIレベル35、Gradleバージョン8.6、NDKバージョン26にアップデート
[HSP3Dish][android] HGIMG4でAssetフォルダ内のgpbファイルが正しく読み込まれない不具合を修正
[HSP3Dish][dotfw] df_updateでUPDATE_PAUSEオプションが正しく動作しない不具合を修正
[HSP3Dish][dotfw] 敵の動作設定を行うdf_enemyconf命令を追加
[HSP3Dish][dotfw] df_getbgpointで得られる座標値が大きくなっている不具合を修正
[HSP3Dish][Windows] ginfo関数で割り込みIDを取得するginfo_intidの値が正しくない不具合を修正
[HSP3Dish] 標準スプライトで近くにあるオブジェクトを検索するes_nearobj命令を追加
以前の話題及び、ご報告は以下のスレッドから引き継いでいきます。
https://hsp.tv/play/pforum.php?mode=all&num=101997

| |
|
2025/2/19(Wed) 17:21:33|NO.103075
更新ご苦労様です。
ついでにmouse命令の件についてですが、マウスカーソルを表示させる際にmouseでパラメーターをすべて省略した場合、カーソル位置がマイナス座標の場合、マルチモニター環境だと消えてしまうので、mouse命令でパラメーターを省略した場合、mouse ginfo(0),ginfo(1),2 みたいに処理する仕様にしてほしいですが、どうですかね?
ほとんどのHSPプログラマーは、マウスカーソルを表示させる際にmouse命令のパラメーターを全て省略しているので、省略した場合、マルチモニター環境だと、HSPで開発されたゲームでカーソルを表示させる際に表示されない場合があるので、仕様を変更した方がいいんじゃないかと思います。
仕様変更検討よろしくお願いします。
|
|
2025/2/19(Wed) 21:18:31|NO.103078
>おにたまさん
HSP3.7β10のご提供、ありがとうございます。
https://hsp.tv/play/pforum.php?mode=all&num=103074
で報告されている方がいらっしゃいますが、こちらでも報告します。
β10のDish Helplerのオプションで、「SDKセットアップ」をクリックすると、
更新が途中で停止します。
以下、コンソールに表示されたメッセージです。
ご確認をお願い致します。
Loading package information...
[ ] 3% Loading local repository...
[= ] 3% Fetch remote repository...
Warning: Errors during XML parse:
Warning: Additionally, the fallback loader failed to parse the XML.
[= ] 4% Fetch remote repository...
[== ] 5% Fetch remote repository...
[== ] 6% Fetch remote repository...
[== ] 7% Fetch remote repository...
[=== ] 8% Fetch remote repository...
[=== ] 10% Computing updates...
License android-sdk-preview-license:
---------------------------------------
To get started with the Android SDK Preview, you must agree to the following terms and conditions. As described below, please note that this is a preview version of the Android SDK, subject to change, that you use at your own risk. The Android SDK Preview is not a stable release, and may contain errors and defects that can result in serious damage to your computer systems, devices and data.

| |
|
2025/2/19(Wed) 23:27:20|NO.103079
更新いつもありがとうございます。
レイヤーオブジェクトで、オブジェクトIDの部分を修正いただきましたが、
新たにオブジェクトの位置とサイズの構造体がhgimg4を指定すると0になってしまっているように思います。
/*~参考~
ウィンドウオブジェクト情報の取得
val = objinfo(p1,p2)
p1=0~ : ウィンドウオブジェクトID
p2=0~ : 取得するタイプ
解説
現在アクティブなウィンドウに配置されている、特定のウィンドウオブジェクトに関連する情報値を返します。
p1にウィンドウオブジェクトID、p2に取得タイプを指定することで、該当する情報データが返されます。
取得できるタイプは以下の通りです。
0 : モード(下位16bit)及びオプションデータ(上位16bit)
1 : オブジェクトが配置されているBMSCR構造体のポインタ
2 : ウィンドウオブジェクトのハンドル(HWND)
3 : owid (内部汎用データ)
4 : owsize (内部汎用データ)
5~8 : 代入変数の情報
9~11 : ウィンドウオブジェクトコールバックの情報
12 : 背景のブラシハンドル(HBRUSH)
13 : 背景カラー情報(RGB)
14 : 文字カラー情報(RGB)
15~16 : オブジェクト固有の付加情報(exinfo1,exinfo2)
ウィンドウオブジェクト情報は、通常の使用では利用する必要はありません。
外部API(DLL)等にウィンドウオブジェクトのハンドル(HWND)を渡す場合など、特殊な用途に利用することができます。
*/
;===★hgimg4をコメントアウトすると、取得の値が変わる===
;(修正確認)HSP3DISH,HSP標準layerobjのp4に設定したオプション値は配列の15番にセットされます→修正ありがとうございます
;(問題発生)★配列の5(objlayer_info_axis),6(objlayer_info_size)が、正しく取得できなくなりました。
;レイヤーオブジェクトの位置とサイズがhspdishでは0を返してしまいます。
#include "hgimg4.as"
layerobj 0, 0,objlayer_posteff|objlayer_multi,*layer_cmd, 999 :obj0=stat
layerobj 100,100,objlayer_posteff|objlayer_multi,*layer_cmd,1000 :obj1=stat
layerobj 200,200,objlayer_posteff|objlayer_multi,*layer_cmd,1001 :obj2=stat
*main
redraw 0
color:boxf:color 255,255,255
;===objinfoでオブジェクトの情報をすべて取得してログ出力===
pos 0,0:repeat 17: mes ""+cnt+":"+objinfo(obj0,cnt):loop
pos 100,0:repeat 17: mes ""+cnt+":"+objinfo(obj1,cnt):loop
pos 200,0:repeat 17: mes ""+cnt+":"+objinfo(obj2,cnt):loop
;font msgothic,12
pos mousex,mousey
mes "□"
redraw 1:await 1000/60
goto *main
*layer_cmd
return

| |
|
2025/2/20(Thu) 03:08:38|NO.103081
HSP3.7β10への更新ありがとうございます。
> [HSP3Dish][hsp3js] フォント描画の高速化に対応(zakki)
HSP3Dish.js のフォント描画高速化対応もありがとうございます。
ただ、mesが300×150ピクセルまでしか表示できなくなっているようです。
https://suwa.pupu.jp/HSP/sample/h37b10/mes37b10.html
どうやら、HSP3本体ソース hsp3dish/emscripten/fontsystem.cpp 815行目辺りで hsp3dishFontCanvas が作られますが、以降作り直しされることがなくなったので サイズ指定なし初期値の300×150ピクセルまで の制限となっているようです。
解決策としては、
hsp3dish/emscripten/fontsystem.cpp 850行目辺りで、canvasサイズがmesサイズ以下だったら width と height を大きくするような修正を施せば上手くいくようでした。
|
|
2025/2/20(Thu) 12:56:07|NO.103082
> ただ、mesが300×150ピクセルまでしか表示できなくなっているようです。
確かに…、作り直してappendするのが重いことにばっかり目が言ってました。
修正します。
|
|
2025/2/20(Thu) 19:37:54|NO.103085
>おにたまさん
私が報告していたNO.103078のSDK更新の件は、NO.103080でレスをされていたhsp3dh.exeに
差し替えたら更新できました。
引き続きandroidアプリのビルドを試してみます。
|
|
2025/2/21(Fri) 20:14:42|NO.103097
> zakki さん
> 修正しました。
> https://github.com/onitama/OpenHSP/pull/48
ありがとうございます。
hsp3dish/emscripten/fontsystem.cpp を書き換えて hsp3dish*.js を生成したところ問題の解消を確認しました。
1つ確認なのですが、
context.clearRect(0, 0, canvas.width, canvas.height);
は、
context.clearRect(0, 0, $2, $3);
のままの方がクリア範囲が少なく済む場合があってより処理が速くなるなんてことはありませんか?
せっかく頂いたフォント描画高速化の機会なので、できるのであれば現状の最速を目指せればと思いまして。
生意気な確認ですみません。。。
|
|
2025/2/21(Fri) 23:00:53|NO.103101
> MIZUSHIKIさん
確かに何も全体をクリアする必要はありませんね。
ctx.fillStyle = "black";
ctx.fillRect(10.9, 10, 119, 100.1);
ctx.fillStyle = "white";
ctx.clearRect(10, 10, 120, 100.5);
でうっすら輪郭が残るみたいな現象があって、今回扱ってる整数座標でもdevicePixelRatioが1じゃないときに
類似の挙動をしないかってことで1ピクセル余白を入れてpushしました。
それとフォントの計測回り実装まで考えると、こんな感じに一旦DOM側に移る処理をなくせば、もう5倍くらい速くなりそうなんですがどうでしょう?
なんとなくフォント設定や結合文字やサロゲートペアやinput命令あたりの組み合わせで動作確認と修正が必要な気がします。
https://github.com/zakki/OpenHSP-fork/tree/fix-js-mes-exp
|
|
2025/2/22(Sat) 15:22:41|NO.103105
> それとフォントの計測回り実装まで考えると、こんな感じに一旦DOM側に移る処理をなくせば、もう5倍くらい速くなりそうなんですがどうでしょう?
ユーザーとしては速くなればなるほど嬉しいのではないかと思います。
(私自身はどちらかというとゲームを作る側でなくてシステムとかツール作って楽しい勢なので実は・・・ではありますが。)
> なんとなくフォント設定や結合文字やサロゲートペアやinput命令あたりの組み合わせで動作確認と修正が必要な気がします。
> https://github.com/zakki/OpenHSP-fork/tree/fix-js-mes-exp
リンク先の fontsystem.cpp(Commit 81c2d5d) を反映させて hsp3dish*.js を生成して試してみました。
私の持っているサンプルとinput, buttonを使った簡単なテストしか出来ていませんが、今のところ問題は出てません。
https://suwa.pupu.jp/HSP/sample/h37b10b/mes_test.html
結合文字やサロゲートペアに関しては、何をどこまでどういう風に確認すれば良いか分からなかったので問題があるか私には分かりませんでした。。。
|
|
2025/2/25(Tue) 21:08:57|NO.103128
httploadに正しくないURLを指定してhttpinfoがエラーを返すと、以降は正しいURLを指定しても常にエラーを返すようになります。
以下は問題を確認するためのスクリプトです。(テスト環境 HSP3.7β10)
#include "hsp3dish.as"
; 画像URLリスト
; 画像の出典:https://maps.gsi.go.jp/development/ichiran.html
sdim img_urls, 128, 3
img_urls(0) = "https://cyberjapandata.gsi.go.jp/xyz/std/15/29099/12902.png"
img_urls(1) = "https://cyberjapandata.gsi.go.jp/xyz/std/15/29098/12902.png"
img_urls(2) = "https://cyberjapandata.gsi.go.jp/xyz/std/15/29097/12902.png"
dim wid, 3
wid = 1,2,3
idLoad = 0
dim stateLoad, 3
; 0 初期状態
; 1 ロード中
; 2 ロードが正常終了した
; 3 ロードが異常終了した
;------------------------------
; エラーを起こすためのurl
;------------------------------
; 2個目の画像のurlを正しくないものに置き換えます。
; ①存在しないサーバーを指定した場合
; 「リクエストができませんでした」となり、処理が継続できない。
;img_urls(1) = "https://aaaabbbbcccc.jp/"
; ②サーバーではない文字列を渡した場合
; 「無効なサーバーが指定されました」となり、処理が継続できない。
;img_urls(1) = ""
; ③404の画像アドレスの場合
; エラーにはならないので処理が継続されます。
; 2個目の画像のみ読み込まれませんが、処理は継続されて3つ目の画像も読み込まれます。
;img_urls(1) = "https://cyberjapandata.gsi.go.jp/xyz/std/none.png"
;------------------------------
; メインループ
;------------------------------
*main
redraw 1 : await 16 : redraw 0 : color 255, 255, 255 : boxf : color : pos 0,0
if idLoad < 3 {
if stateLoad(idLoad) = 0 {
stateLoad(idLoad) = 1
httpload img_urls(idLoad)
if stat : gosub *bad
}
; 結果待ちのためのループ
if stateLoad(idLoad) {
httpinfo res, HTTPINFO_MODE
if res = HTTPMODE_NONE : logmes "" + idLoad + ":通信初期化エラー " + HTTPMODE_NONE
if res = HTTPMODE_READY : logmes "" + idLoad + ":通信可能状態 " + HTTPMODE_READY
if res = HTTPMODE_REQUEST : logmes "" + idLoad + ":リクエスト通信準備 " + HTTPMODE_REQUEST
if res = HTTPMODE_SEND : logmes "" + idLoad + ":リクエスト送信 " + HTTPMODE_SEND
if res = HTTPMODE_DATAWAIT : logmes "" + idLoad + ":通信結果待機中 " + HTTPMODE_DATAWAIT
if res = HTTPMODE_DATAEND : logmes "" + idLoad + ":通信終了 " + HTTPMODE_DATAEND
if res = HTTPMODE_ERROR : logmes "" + idLoad + ":エラー発生 " + HTTPMODE_ERROR
if res = HTTPMODE_READY : gosub *comp
if res <= HTTPMODE_NONE : gosub *bad
}
; 次を読み込み
if stateLoad(idLoad) >= 2 : idLoad++
}
; 画像を表示
if stateLoad(0) = 2 : pos 10, 70 : celput wid(0), 0
if stateLoad(1) = 2 : pos 50, 120 : celput wid(1), 0
if stateLoad(2) = 2 : pos 100, 170 : celput wid(2), 0
; 読み込みの状態
pos 10, 10
repeat 3
mes "stateLoad = "+stateLoad(cnt)
loop
goto *main
;------------------------------
; エラー処理
;------------------------------
; 「無効なサーバーが指定されました」
; https:以外が指定された。
;
; 「リクエストができませんでした」
; 存在しないサーバーが指定された。
*bad
stateLoad(idLoad) = 3
httpinfo estr, HTTPINFO_ERROR
logmes "Error : " + estr
logmes img_urls(idLoad)
return
;------------------------------
; ダウンロード完了
;------------------------------
*comp
stateLoad(idLoad) = 3
httpinfo buf,HTTPINFO_DATA
httpinfo size,HTTPINFO_SIZE
if size <= 0 {
message = "Error:データがありません。"
return
}
if (peek(buf, 0) ! 0x89) & (peek(buf, 1) ! 0x50) & (peek(buf, 2) ! 0x4E) { ; PNG
message = "Error:画像がありません。"
return
}
stateLoad(idLoad) = 2
; メモリストリームで読み込む
memfile buf, 0, size
celload "MEM:.png", wid(idLoad)
return
実行すると画像が3つ表示されます。①、②いずれかのコメントを外すと問題が再現できます。
理想としている挙動は、2つ目の画像だけが表示されないまま3つ目の画像が表示される状態です。
また、このスクリプトの挙動が、Windows環境とブラウザ環境で異なる点も気になっています。以下のような動作結果を確認しました。
NG…3つ目の画像が表示されない。
OK…3つ目の画像が表示される。
① Windows:NG / ブラウザ:OK
② Windows:NG / ブラウザ:OK
③ Windows:OK / ブラウザ:NG
なおこの件は、こちらのスレッドで取り上げた内容と同じ内容です。
httploadのエラーからの復帰方法
https://hsp.tv/play/pforum.php?mode=all&num=103117

| |
|
2025/2/26(Wed) 20:24:49|NO.103134
> 結合文字やサロゲートペアに関しては、何をどこまでどういう風に確認すれば良いか分からなかったので問題があるか私には分かりませんでした。。。
sdim data, 256
data = "abあいう@"
utf8 = 240, 159, 141, 163, 47, 240, 159, 155, 171, 47, 227, 129, 140, 47, 227, 129, 139, 227, 130, 153, 47, 0
repeat length(utf8)
poke data, cnt+12, utf8.cnt
loop
mes_test.html のテストの初期化のとこでこんな感じで絵文字や濁点を入れるとカーソルずれたり落ちたりしないか不安でしたが杞憂でした。
元々IME使えませんしね。ペーストくらいは出来ると自由度上がりそうです。
|
|
2025/2/27(Thu) 23:08:45|NO.103144
サンプルのtamane_jump.hsp(珠音のジャンプアップ)の間違い箇所です。
【誤】#pack "parts.bmp"
【正】#pack "parts.png"
【誤】#pack "tamadot.bmp"
【正】#pack "tamadot.png"
スクリプト内ではPNG画像が使用されているので「実行ファイル自動作成」は問題なく通りますが、作成されたEXEを実行すると「#Error 13」が発生します。
|
|
2025/3/4(Tue) 00:22:53|NO.103199
>おにたまさん
NO.103078で報告したエラーは、新しいDish Helper(Ver1.992)で回避して
SDKセットアップが更新できたのですが、その後、「クリーン」および、「ビルド」が
エラーで通らなくなりました。
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> [CXX1101] NDK at C:\android\sdk\ndk\26.3.11579264 did not
have a source.properties file
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 1s
メッセージ通り、NDK 26.3.11579264のフォルダ内に「source.properties」が
存在していなかったので、別のバージョンのフォルダからコピーして、
内容を書き換えてみましたが、フォルダ内のファイル数が、他バージョンのものと
比べてかなり少なかったです。
3.7になって、ndkは手動でダウンロードしていませんでしたが、
今回は必要でしょうか。
「SDKセットアップ」は何度か実行して、パソコンの再起動もしています。
|
|
2025/3/5(Wed) 04:34:32|NO.103207
こんにちは。
別スレッドを立てるべきか迷いましたが、ここでも発生している問題なので…
この掲示板でpreタグで横に長い文章を投稿した場合に全体の表示が崩れてしまう問題についてなのですが、最小の変更で改善する方法として次のような方法はいかがでしょうか。
pforum.phpと同一ディレクトリのbbs.cssを開いていただくとpreタグが定義されています。
このpreの定義{}の中に次のコードを追加すれば、枠からはみ出しそうな場合にUIを崩さず横スクロールバーを表示するようになると思います。
width: 546px; overflow-x: auto;
・margin-left: 40pxのあとにセミコロンが無いようですので追記の際にはご注意ください。
・実際の掲示板での表示を確認したわけではないためwidthの範囲がおかしければ修正をお願いします。
もう少し拘りますと更に以下も同箇所に追記すればユーザーサイドでpre領域を拡大できるようになると思います。
resize: both; border: solid 1px #EEE; padding-bottom:10px; min-width:320px; min-height:24px;
・resizeプロパティでリサイズを有効化しています。
→このプロパティが導入されだしたのが2010年頃なのでHTML4との共存が推奨されるかは微妙です。
・borderを薄く指定しているのはどこまでがpre領域かわからなくなってしまわないための配慮です。
・padding-bottomを指定しているのはボーダーやスクロールバー表示時にpreの下部が窮屈になることを改善するための配慮です。
・サイズ変更可能にするならということでmin-widthとmin-heightで最低サイズを指定しています。
●以下は余談かもですが、おにたまさんのご判断で…
上記だけではスマートフォンでの表示においてスクロールバーが見え難く、範囲外のコードが隠れたまま気づかれない事があるかもしれません。
webkit-scrollbarの指定やjQueryを使って改善する方法もあるとは思いますが、このBBSはかなり古いHTML4で書かれていることもあり、あんまり弄りたくないですよね…(--;
例えばですが、今ほどの改変に加え、更に以下のコードをbbs.cssの末端に追加すればスマートフォン上でもスクロールバーが強制表示になると思います。
pre::-webkit-scrollbar {width:14px; height: 14px;}
pre::-webkit-scrollbar-track {background: #EEE;}
pre::-webkit-scrollbar-thumb {background: #CCC; border: solid 1px #EEE;}
@supports not selector(::-webkit-scrollbar) {pre {scrollbar-color: #EEE #CCC;}}
webkitが使えない場合の処理も併記していますが、ブラウザごとの互換性等は未検証です。
HTML4を使う場合は@supports not selectorは使わず直接scrollbar-colorを最初のpre内に指定しないとルール違反かもしれませんが、そもそもこのプロパティ自体が最近のものですし、当時の仕様的にはダメな気がします。(いずれにしても現行ブラウザを使う限り動作するとは思いますが…一応AndroidのChromium系ブラウザでざっくり動作確認済みです。)
HTML4上で更にシンプルで安全な導入をご存知の方はフォローいただければ幸いです。
…一番良いのはHTML5/CSS3仕様でモダンコーディングすることなんでしょうけれど(^^;
一先ずこの掲示板で交わされるコードはWindows上で扱われることを主としているので、この余談は組み込まなくても良いかもしれませんが…気になる場合はご検討ください。

| |
|
2025/3/6(Thu) 03:28:56|NO.103219
↑の書き込みにちょっと追記です。
あとから思ったのですが、更に縦にも長すぎるpreの場合、PC上で横スクロールバーに到達するためには相当下まで画面をスクロールさせる必要があることや、ソースコードで埋め尽くされたスレッド自体の読みやすさも考えると縦に長すぎるpreはデフォルトで一定サイズ以上は縮めて表示したほうがいいかもしれませんね。
pforum.phpが生成するHTMLのbodyの終端(</body>の手前)に以下のコードを張り付けることによって、ページ内のpreの縦幅が大きすぎる場合は縮めて表示することができると思います。
前述のリサイズ可能なUIであれば、ユーザーの任意で広げて読んでもらえる設計です。(スマホですとスクロールはPCより容易ですが広げる操作はちょっと難しいかもしれません。一長一短です。)
<script>
// すべてのpre要素の表示開始時に高さが600px以下になるように調整
document.querySelectorAll('pre').forEach(function(pre) {
if (pre.scrollHeight > 600) {
pre.style.height = '600px';
}
});
</script>
もしHTMLの改変が難しい場合(CSSのみで解決したい場合)、preの要素にmax-height:800px; などと追加して解決することもできますが、これですと手動でもこの大きさ以上に表示サイズを拡大することができなくなってしまうので利便性は低下します。
max-heightを設定してしまうとこれが最大サイズの値になるので、どうしてもこの方法を使う場合はやや大きめで大きすぎない値を設定するのがいいと思います。
…ってここまで調整していくと、もう少しpaddingも綺麗に設定したくなりますね^^;
preのpadding-bottom:10px; は padding: 0 5px 10px 5px; くらいに修正して、横増分に合わせてwidthも536pxくらいが丁度いいかも。
…すみません、スレッドの趣旨から少々脱線して一人で色々書いてしまいました。失礼しました;
|
|
2025/3/6(Thu) 05:52:38|NO.103220
HDLで表示してるコマンドをコピーするボタンを
HDLにつけるとかどうですか?
楽だし誤字が減ると思います
|
|
2025/3/8(Sat) 08:01:46|NO.103234
これはHSPの不具合というよりは、Windows側の仕様かもしれませんが
じつは2020年くらいに気づいていて報告していなかった問題です。
あまりやらない処理かもしれませんが、クリップボードにテキストを書き込んだ後に
すぐにその内容を取得するというものです。
一定のウエイトを入れないとエラー1またはフリーズ後に強制終了します。
XPなどではどうだったか覚えていないのですが、少なくともWindows10では発生しています。
ウエイトを入れれば解決はするのですが、一応報告させて頂きます。
以下がテストコードです。0ms 10ms では当方の環境ではエラーで落ちます。
#packopt name "testclip"
#include "hspext.as"
title "クリップボードのテスト"
font "MS ゴシック",25
pos 8,8
objsize 200,40
button "0 ms",*ms0
button "10 ms",*ms10
button "50 ms",*ms50
button "100 ms",*ms100
button "500 ms",*ms500
stop
*ms0
w=0: goto *main
*ms10
w=1: goto *main
*ms50
w=5: goto *main
*ms100
w=10: goto *main
*ms500
w=50: goto *main
*main
clrobj
a=0
b=""
url="0123456789","ABCDEFGHIJKLMNOPQRSTUVWXYZ=====// TEST //=====!!","クリップボードのテスト","test clip"
repeat 10000,1
repeat
clipset url(a): wait w // コピー
clipget b: if b=url(a) { break } // コピーが成功していれば抜ける
loop
redraw 0
color 255,255,255: boxf
color: pos 8,8: mes ""+cnt+" / 10000\n"+url(a)
redraw 1
wait 0
a++: if a=4 { a=0 }
loop
mes "OK"
|
|
2025/3/8(Sat) 17:06:26|NO.103235
[HSP3Dish][hsp3js] 不具合報告
普通にフォント指定なしでmesで28?文字位置より長いとブラウザ上で表示が切れてしまいます。
前のバージョンでは出力されていました。
|
|
2025/3/8(Sat) 19:39:13|NO.103236
|
|
2025/3/9(Sun) 08:21:58|NO.103241
zakkiさん
既知で対応済でしたか。ありがとうございます。
|
|
2025/3/14(Fri) 20:07:17|NO.103272
> zakki さん
> NO.103236
> 急ぎでしたら、hsp3dish.jsの直編集かOpenHSP版への差し替えでも。
> https://github.com/onitama/OpenHSP/actions/runs/13724172077
上記リンク先の hsp3dishw.js, hsp3dish.wasm で確認していたのですが、どうやら条件によっては文末に文字欠けが発生するみたいです。
・文頭にスペースが存在する場合
・文頭でなくても文中にスペースが2つ以上連続で存在する場合(文中1つは問題なし)
https://suwa.pupu.jp/HSP/sample/h37b10p1/mes_test.html <HSP3Dish.js>
(この現象は現在のHSP3.7β10でも同様です。)
https://github.com/onitama/OpenHSP/commit/adca5e1fa9349742a4d8600ea2b99df7ce671851
調べてみるとHSP3.7β10へのアップデートのときに、
document.createTextNode(UTF8ToString($0)); [左:814行目]
から
d.innerText = UTF8ToString($0); [右:811行目]
に変更したことで、HTMLの表記ルール(?)に吸収されてしまうようになってしまったみたいです。
ただ、今後のフォントシステムになりそうな下記のzakkiさんの更新内容、
> NO.103101
> それとフォントの計測回り実装まで考えると、こんな感じに一旦DOM側に移る処理をなくせば、もう5倍くらい速くなりそうなんですがどうでしょう?
> https://github.com/zakki/OpenHSP-fork/tree/fix-js-mes-exp
これを hsp3dishw.js の該当部分に書き換えて使ってみると、「innerText」を使わなくなり「measureText」で文字サイズを計測するようになったので『空白で文末が欠ける』問題は解消されていました。
しかし、今度は iOS, macOS, Android の端末で文字列高さが低くなり、一部文字の下端が欠けてしまうようになってしまいました。
https://suwa.pupu.jp/HSP/sample/h37b10p2/mes_test2.html <HSP3Dish.js>
(Windows PC では問題ありません。)
[※ 下記 mes_test3 のところで各端末の比較画像を置いてます。]
とりあえず、以前の div の機能を部分的に復活させて、フォントサイズが変わったときに一回だけ「高さだけの算出」に使えばひとまずは回避できそうかなとは思いました。
if (typeof window.fontHeights === "undefined")
window.fontHeights = {}; // 初期化
if (!window.fontHeights.hasOwnProperty($1)) { // 指定サイズの文字高さがまだ記録されていないときだけ
let d = document.getElementById("hsp3dishFontDiv");
if (!d) {
d = document.createElement("div");
d.id = "hsp3dishFontDiv";
d.style.setProperty("width", "auto");
d.style.setProperty("height", "auto");
d.style.setProperty("position", "absolute");
d.style.setProperty("visibility", "hidden");
d.style.setProperty("top", "0");
d.style.setProperty("left", "0");
document.body.appendChild(d);
}
d.style.setProperty("font", $1+"px 'sans-serif'");
d.innerText = "あ"; // innerTextだし適当な文字だけど、
window.fontHeights[$1] = d.clientHeight | 0; // 高さを測るだけなので問題なし。
}
let canvas = document.getElementById("hsp3dishFontCanvas");
if (!canvas) {
canvas = document.createElement("canvas");
canvas.id = "hsp3dishFontCanvas";
canvas.style.setProperty("visibility", "hidden");
canvas.style.setProperty("position", "absolute");
canvas.style.setProperty("top", "0");
canvas.style.setProperty("left", "0");
document.body.appendChild(canvas);
}
const context = canvas.getContext("2d");
context.font = $1 + "px 'sans-serif'";
const msg = UTF8ToString($0);
const metrics = context.measureText(msg);
HEAP32[$2 >> 2] = Math.max(metrics.width, metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight) | 0;
HEAP32[$3 >> 2] = window.fontHeights[$1]; // ここで記録した高さを使用
if ($4 !== 0) {
const metrics = context.measureText(msg);
//console.log({msg, metrics});
const arr = Array.from(msg);
:
:
// ↑ window.fontHeights として無理やりグローバル変数使ってるので良い感じに変更する必要あり。
https://suwa.pupu.jp/HSP/sample/h37b10p3/mes_test3.html <HSP3Dish.js>
https://suwa.pupu.jp/HSP/sample/h37b10p3/mes_test3.png <比較画像>
(Androidは元からg等の下端が欠けていたようです。)
hsp3dishw.js の該当部分を書き換えて使ってみてますが今のところ問題はなさそう(?)です。
が、これでも完全かというと、使っていくうちにまた問題が見つかるかもしれません。。。なかなか難しいですね。

| |
|
2025/3/14(Fri) 23:44:51|NO.103277
β版について多くのご報告とご要望ありがとうございます。
HSP3.7β10でご指摘頂いたhsp3jsの長い文字が切れる問題と、httploadの問題、Dish Helplerの「SDKセットアップ」に失敗する不具合を修正したバージョンをHSP3.7β10aとして差し替えさせて頂きました。
これ以外の機能を使用する場合は、特に差し替えの必要はありません。今後、アップデーター用のファイルも順次更新していきます。
引き続き問題などあればお知らせ頂けると助かります。
HSP3.7β10a(フルセット版)
https://www.onionsoft.net/hsp/file/hsp37b10.zip
HSP3.7β10a(Windows版のみ)
https://www.onionsoft.net/hsp/file/hsp37b10le.zip
2025/03/13 3.7 beta10a
コンパイル時にプラットフォームマクロ(_hspwin、_hsplinux)が定義されるように修正
[hspinet] jsonオブジェクトで実数を扱うためのjsonsetprmd,jsongetd,jsonputd命令を追加
[hspinet] jsonオブジェクトで配列を扱うためのjsongetarrayobj,jsongetarrayobjbyname命令を追加
[HSP3Dish] linux,iOS,android,js(WebGL)でviewcalc命令のvptype_translateが正しく設定されない不具合を修正
[HSP3Dish] httploadでエラーが発生した際に以降のリクエストができなくなる不具合を修正
[HSP3Dish][hsp3js] 大きいフォントが描画されない不具合に対応(zakki)
[HSP3Dish][android] β10版のhsp3dhでSDKダウンロードが正しくできなかった不具合を修正
|
|
2025/3/14(Fri) 23:45:41|NO.103278
>buhio さん
NO.103079につきまして、お手数おかけします。
ちょっと調整が必要なので今しばらくお待ちください。
>GENKI さん
httploadについて、ご報告ありがとうございます。
β10a版で対応させて頂きました。
>Drakuji さん
ご報告ありがとうございます。
Linux版は、githubのmasterに上がっているのがHSP3.6相当ですので、
git checkout hsp37b10 として、hsp37b10のブランチで確認頂いても宜しいでしょうか。
今後、masterの方もhsp3.7に移行していく予定です。
>Drip さん
掲示板のレイアウト改善について助言頂きありがとうございます。
こちらでbbs.cssを変更してみました。当面こちらで運用させて頂きます。
ブラウザのキャッシュにcssがある場合はクリアしないと反映されないので、今後cssのファイル名なども入れ替えを検討したいと思います。
>CORO3 さん
NO.103199につきまして、同様の症状が出た方はいらっしゃいますでしょうか。
こちらで何も入っていない状態からセットアップを行ってビルドは確認しています。
ndkを手動でダウンロードする必要はなく、最初に入れるものはコマンドライン版のSDKとJavaだけです。
完全に新しいプロジェクトを作成してもだめでしょうか。
簡単なプロジェクトでもエラーになるようでしたら、またお知らせください。
>窓月らら さん
NO.103234につきまして、ご報告ありがとうございます。
こちらでも同様に落ちることを確認しました。
何か足りない処理があるのかもしれないので、調査してみたいと思います。
>MIZUSHIKI さん
>zakki さん
hsp3jsの検証と修正ありがとうございます。
github上でビルドされると検証も手軽にできていいですね。
とても助かります…。
|
|
2025/3/15(Sat) 05:58:54|NO.103280
> zakkiさん
対応ありがとうございます!
> 描画側でフォントサイズじゃなく、baselineの位置に描画するのでどうでしょうか?
> 手元のWindows 11とAndroid 13のChormeとFirefoxは大丈夫そうです。
やってみました。
結果、私も Windows 11 (PC) と Android 13 の Chrome と Firefox で下端まで欠けることなく表示されることを確認しました。
<Android 画像>
https://suwa.pupu.jp/HSP/sample/h37b10p4/mes_test4_android.png
残りの iPhone, Mac ですが、それぞれ [ safari, chrome, Firefox ] で確認しました。
・iPhone については、どのブラウザも同じように表示されましたが、ほんっっの少しだけ g の下端が切れてるように見えます。(許容範囲内の気はします。)
・Mac に関しては、ブラウザによって状況が大きく異なりました。
今回、Safari は問題なし。 Chrome は下端欠け。 Firefox も下端欠け。となりました。
(前回画像のブラウザは Chrome でした。)
<比較画像>
https://suwa.pupu.jp/HSP/sample/h37b10p4/mes_test4.png
また、TextMetrics の各パラメータが気になったので Module.print してシステムメッセージボックスに表示して見たところ下記のようになりました。
が、あまり役に立ちそうもないデータにしかなりませんでした。一応、載せておきます。
<HSP3Dish.js>
https://suwa.pupu.jp/HSP/sample/h37b10p4/mes_test4.html
・iPhone
[↓ msg: fontBoundingBoxAscent, fontBoundingBoxDescent, actualBoundingBoxAscent, actualBoundingBoxDescent, emHeightAscent, emHeightDescent, hangingBaseline, ideographicBaseline]
【safari, chrome, firefox (すべて同一値でした)】
あいうえお: 16, 3, 16, 2, 16, 3, 16, -3
abcdefghijklmnopqrstuvwxyz: 16, 3, 14, 4, 16, 3, 16, -3
ABCDEFGHIJKLMNOPQRSTUVWXYZ: 16, 3, 14, 1, 16, 3, 16, -3
1234567890: 16, 3, 14, 0, 16, 3, 16, -3
・Mac
[↓ msg: fontBoundingBoxAscent, fontBoundingBoxDescent, actualBoundingBoxAscent, actualBoundingBoxDescent, emHeightAscent, emHeightDescent, hangingBaseline, ideographicBaseline]
【safari】
あいうえお: 16, 3, 16, 2, 16, 3, 16, -3
abcdefghijklmnopqrstuvwxyz: 16, 3, 14, 4, 16, 3, 16, -3
ABCDEFGHIJKLMNOPQRSTUVWXYZ: 16, 3, 14, 1, 16, 3, 16, -3
1234567890: 16, 3, 14, 0, 16, 3, 16, -3
【chrome】
あいうえお: 16, 2, 14.634000778198242, 0.7380008697509766, undefined, undefined, 12.800000190734863, -2
abcdefghijklmnopqrstuvwxyz: 16, 2, 13.949999809265137, 3.798001289367676, undefined, undefined, 12.800000190734863, -2
ABCDEFGHIJKLMNOPQRSTUVWXYZ: 16, 2, 14.076000213623047, 1.0080013275146484, undefined, undefined, 12.800000190734863, -2
1234567890: 16, 2, 14.076000213623047, 0.18000125885009766, undefined, undefined, 12.800000190734863, -2
【firefox】
あいうえお: 16, 3, 14.633999633789061, 0.7379994710286475, 15.157894736842104, 2.8421052631578956, 12.126315789473685, -1.4210526315789478
abcdefghijklmnopqrstuvwxyz: 16, 3, 13.949998982747395, 3.7980000813802093, 15.157894736842104, 2.8421052631578956, 12.126315789473685, -1.4210526315789478
ABCDEFGHIJKLMNOPQRSTUVWXYZ: 16, 3, 14.075998942057291, 1.0079996744791675, 15.157894736842104, 2.8421052631578956, 12.126315789473685, -1.4210526315789478
1234567890: 16, 3, 14.075998942057291, 0.18000081380208321, 15.157894736842104, 2.8421052631578956, 12.126315789473685, -1.4210526315789478

| |
|
2025/3/15(Sat) 07:54:49|NO.103281
>おにたまさん
プロジェクトを新規作成という説明でしたので、projectフォルダのみ空フォルダを作って
試していたのがまずかったようです。
β9までの環境が残っていると、アップデートがうまくいかないようで、
結局androidフォルダ、JDK、SDKフォルダを再作成して、初めてセットアップしたときと
同じ状態に戻すことでアップデートでき、ビルドも一応通りました。
アプリの動作や、AdMobの件はまだ未確認ですが、ご報告まで。
|
|
2025/3/16(Sun) 15:57:45|NO.103282
> MIZUSHIKI
> NO.103280
まず、
そもそもなんで sans-serif(=ゴシック体) を指定しているのに、iPhone と Mac_Safari は明朝体のフォントを表示するんだって今更になって疑問に思い始めました。
context.font = $1+"px 'sans-serif'";
↓
context.font = $1+"px sans-serif";
のように シングルクォーテーション を外してやると iPhone, Mac_Safari でも他と同じようにゴシック体でのフォント表示になりました。
ただし、下端欠けも同じように再発生してしまいました(T-T)
また副作用(?)で、Android の Chrome で ginfo_mesy が 21→26 に変化しました。(Firefoxは変化なし)
ただ、特に下端欠けは発生してません。(なので問題は無い(?)、のかな?)
ということで(?)、各フォント指定を「'sans-serif'」から「sans-serif」に変更した方が良いと思います。
========================================================
さて、
iPhone, Mac で fontBoundingBox, actualBoundingBox を見ていくうちに、説明されている仕様上からは本来 fontBoundingBox の方が大きくならないといけなさそうなのに actualBoundingBox の方が大きくなる場合があることがわかりました。
【仕様】
fontBoundingBox : ベースラインから、テキストのレンダリングに使用されるすべてのフォントの最も高い境界矩形の上端下端までの距離
actualBoundingBox : ベースラインから、指定されたテキストをレンダリングするために使用される境界四角形の上端下端までの距離
一番下(または上)まではみ出しそうな文字としてテキトーに集めた下記文字列を測ってみた結果は以下のようになりました。
gjpqyM,;*^|\ぁゎぴぽ齋鬱鑑龍馨驚|
【結果】
<iPhone : 各ブラウザ全て同じ>
fontBoundingBox : 16 + 3 = 19
actualBoundingBox : 16 + 4 = 20
<Mac>
・Safari
fontBoundingBox : 16 + 3 = 19
actualBoundingBox : 16 + 4 = 20
・Chrome
fontBoundingBox : 16 + 2 = 18
actualBoundingBox : 15.246000289916992 + 3.798002243041992 = 19.044002532958984 → (切り上げると)20
・Firefox
fontBoundingBox : 16 + 3 = 19
actualBoundingBox : 15.245999145507811 + 3.7980000813802075 = 19.04399922688802 → (切り上げると)20
fontBoundingBox が「すべてのフォントの最も高い境界矩形」としてのサイズをちゃんと出せていないなら、適当な文字の actualBoundingBox を一度確認して、fontBoundingBox より大きければそちらを採用するしかない。
・・・のかなぁ、と思いますが如何でしょうか。
(「上下にはみ出しそうなテキトーな文字列」は再考しなければいけないと思いますが。)
一応、「はみ出しそうな文字列の actualBoundingBox の方が大きい場合は採用」としてテストしてみると下端欠けは無くなりました。
<HSP3Dish.js>
https://suwa.pupu.jp/HSP/sample/h37b10p5/mes_test5.html
(hsp3dishw.jsの変更点もHTMLの下の方に載せておきました。)
<比較画像>
https://suwa.pupu.jp/HSP/sample/h37b10p5/mes_test5.png

| |
|
2025/3/16(Sun) 16:50:24|NO.103283
Twitter(X)のHSP3公式の「Geminiサンプル準備中」の投稿を読みました。
https://x.com/hsp3info/status/1900361615536771481
Geminiのサンプルをフルパッケージに同梱されると「HSP3を使っているユーザーは全員自動生成を使ってコードを生成している」と思われかねません。これはオリジナリティを大切にするユーザーにとって致命的な問題となるでしょう。
Geminiのサンプルを公開したいなら、フルパッケージには同梱せず、別々の配布ファイルにしてユーザーの任意でダウンロードできるようにすることを推奨します。
|
|
2025/3/18(Tue) 00:02:23|NO.103285
ありがとうございます。β10a版でhttploadの不具合修正が確認できました。
Windowsでもブラウザでも同じ期待通りの動作をするようになりました。
|
|
2025/3/18(Tue) 05:20:59|NO.103288
> zakki さん
> https://github.com/zakki/OpenHSP-fork/commit/ab8714a35d7fce1f648bbd8853f132591ec27c57
私の方でも確認してみたところ、下端欠けや斜体にしたときの末尾欠け等に関しては問題なくフォントを表示することができました。
ただ、文字列によってちょくちょく ginfo_mesy の値が変化するようにもなってしまいました。
仕様的にはどうなのかなとも思ったのですが、まぁ問題は無い・・・のかもしれませんね。
もともと mes "" の空指定時はフォントサイズを返していたので絶対固定というわけでも無さそうですし。
> フォントとスタイルの変更に対応しました。
font も使用するフォント,スタイルを指定できるようになったのですね。 ありがたいです!
ただ、初期フォント名が決められていないせいか font命令を使用していないスクリプトだと今までと異なる表示になってしまいました。
(私の環境だとだいぶ小さい文字が表示されました。)
おそらく hgio_fontsystem_init でフォント名が ""(空欄) に上書きされてしまうためだと思います。
また、今までは特に指定できなかったので「font "",30」等のようにしてフォントサイズを変更していました。
この場合も sans-serif ではない意図しないフォントになってしまいますので、font ""(空欄) の場合の初期値を「sans-serif」にしてしまった方が良いかもしれません。
あと、今までフォントを変えられなかったのはキャッシュの問題だったのかなと思ってました。
以下のように同じ文字列でフォント名だけを変更してみたところ、2行目の「あいうえお」も 1行目のfontで表示した文字列がそのまま貼り付けらてしまいました。
(3行目の「かきくけこ」は問題なくsans-serifで表示されました。)
font "",18 : mes "あいうえお"
font "sans-serif",18 : mes "あいうえお"
font "sans-serif",18 : mes "かきくけこ"
もし、texmes.cpp の texmesManager::texmesGetCache でフォント名も考慮したキャッシュ判定が出来れば、自由にフォントを変えられるかもしれませんね。

| |
|
2025/3/18(Tue) 12:56:34|NO.103289
調べてる時はキャッシュ機構も更新しないとと思ってましたが忘れてました。
初期値自体は"sans-serif"にしてるんですが、その後の初期化で""に上書きされて意味をなしてませんでした。
font命令で指定されたフォントサイズをそのまま使うんじゃなくて、
バウンディングボックスの高さがそのサイズになるように
実際のフォントサイズをスケーリングすると環境ごとの差異は少なくなるかもしれませんね。
ちょっと実験してみます。
|
|
2025/3/18(Tue) 22:23:17|NO.103294
↑buttonについてはredrawするたびにobjprmで書き換えたら直りました。失礼しました
mesのほうは原因不明です。サンプルプログラムでも消えます
|
|
2025/3/19(Wed) 06:20:26|NO.103299
> zakki さん
> https://github.com/zakki/OpenHSP-fork/tree/fix-js-mes-exp
> フォントキャッシュでフォントを考慮するようにした
フォントキャッシュの件、同じ文字列でもフォント名が異なればキャッシュからではなく新規に表示され、問題が解消したのを確認しました。
> font命令でのフォントサイズと一致するフォントサイズを二分探索するようにしてみました。
よく使うであろう Windows と AndroidのChrome での見た目が大分変わってしまいました。
<HSP3Dish.js>
今回: https://suwa.pupu.jp/HSP/sample/h37b10p6/mes_test5.html
前回: https://suwa.pupu.jp/HSP/sample/h37b10p5/mes_test5.html
おそらくこれは fontBoundingBox を参照しているからだと思われます。
もともと Windows版 では ginfo_mesy=27 になるなど上下の余白が大きく取られていました。
この余分な余白分も考慮して18ピクセル(font指定値)に合わせようとしているため小さくなり、realSizeとしてフォントサイズ12で表示されてしまっています。
--------------------
想像ですが、余白が大きくなるWindows等は「Á, Ä, É, Ñ」のような文字まで考慮してfontBoundingBoxを決めているのではないかと思います。
これらは上側に突出していますが、下側にも未だ見ぬ突出文字があるのではないでしょうか。
--------------------
MEASURE_TEXT="emjgXあ門_^";
として高さ基準となる文字列を決めているので actualBoundingBox のみで getSize() の高さ計算をしても良いと思います。
但しこの場合、下側の EM_ASM_({})内での
context.fillText(msg, 0, metrics.fontBoundingBoxAscent);
も、fontBoundingBoxAscent ではダメで、MEASURE_TEXT で context.measureText() した actualBoundingBoxAscent を使用しないといけないと思います。
また、MEASURE_TEXT がこの文字列のままだと「ぴぽ齋鬱鑑龍馨驚」の上端が欠けて表示されたので「MEASURE_TEXT="emjgXあ門_^ぽ驚";」として増やしました。
<HSP3Dish.js>
https://suwa.pupu.jp/HSP/sample/h37b10p7/mes_test5.html

| |
|
2025/3/19(Wed) 16:56:08|NO.103301
zrs90(5さい) さん
解決しました、ありがとうございました
|
|
2025/3/20(Thu) 18:54:04|NO.103306
> fontBoundingBoxAscent ではダメで、MEASURE_TEXT で context.measureText() した actualBoundingBoxAscent を使用しないといけないと思います。
measureTextとフォント指定の環境の差異吸収するのは諦めてし指定フォントサイズはそのまま使ってレンダリングするようにして
欠け防止のために高さ方向に余白を入れて行送りは指定フォントサイズ分にして重ねて表示するようにしました。
和文フォントが入ってるWindowsやiOSでは、CSS方式で代替フォントを列挙するとWindows版と似た感じになってるようです。
font {""MS Gothic", "Yu Gothic", "Meiryo", "Hiragino Kaku Gothic ProN", "Osaka", sans-serif"}, 18, 0
Androidだとアルファベットが英文フォントっぽくアライメントされるので、gやjが若干次の行にかぶりますが欠けはしません。
被らないように行間を開けたいときは ENV.HSP_FONT_LEADING = "1.2"; みたいに指定できます。
現行JS版と表示が結構変わるので実際この方式で行くべきかは議論があると思います。
https://github.com/zakki/OpenHSP-fork/tree/fix-js-mes-exp
|
|
2025/3/23(Sun) 16:08:11|NO.103321
> 「font命令で指定したサイズがそのままHTMLのフォントサイズ指定と一緒にならない」というのを嫌った形でしょうか?
font指定とginfo_mesyの関係を1:1にして固定解像度で座標指定した画面デザインをしやすくする意図で、
HSP_FONT_LEADINGがginfo_mesyを大きくするんじゃなくて表示サイズを小さくする方向なのも同じです。
この比率もテキスト読むって用途でウェブサイト作るなら、1.2~1.5くらいが見やすいと思いますが
Win32版が余白開けずに詰めてるので1.0~1.1くらいが差異が小さくていいんじゃないかと思ってます。
|
|
2025/3/23(Sun) 19:26:00|NO.103324
hspの編集中のテキストを読み取る常駐処理を作ってます。
以前からなのですがずっと起動してるとエディタを巻き込んで応答なしになります。
今回のバージョンでも発生します。
以下のhsed_getactfootyidかなと思うのですがどなたか原因解明してもらえないでしょうか。
#use hsedsdk
repeat
hsed_getactfootyid footyId: i1=stat
hsed_gettext txt, footyId: i2=stat
title strf("footyId[%d] %d %d",footyId,i1,i2)
wait 10
loop
|
|
2025/3/30(Sun) 10:16:00|NO.103328
なかなか話題として取り上げられないので、こちらにも載せさせて頂きます。
> 「HSP3dish helper」での[data]フォルダ、[res]フォルダの扱いについて
http://hsp.tv/play/pforum.php?mode=all&num=103226
Drakujiさんがおっしゃるように、
> 暫定リファレンス注意書きの追加、
> もしくは、DishHelperの改良対応を待つ、
私たちの側は、そうでしかないですが、
初心者(初めて使う人)は、ここで躓くことが多いように思えてならないのです。
|
|
2025/4/1(Tue) 22:58:44|NO.103333
> dataファイルの代わりに、#packdir指定で作ったDPMをアップロードして実行っていうのもできなくはないです。
これ、ものすごい重大かつ重要なことだと思います!!
つまりは、今まで dataフォルダ, resフォルダ という固定名称フォルダにしかデータを置けなかったけれど、本家HSP3と同じ書き方ができるようになって #pack, #packdir でパックしたいファイルを好きなように配置できる ということですよね?
(「本家HSP3と同じ書き方になる」ということが重要。)
==============================
今まで通りdataとresにファイルを格納したい場合は下記指定で良いはず。
#packdir "data/*"
#packdir "res/*"
==============================
もし DPM (#pack, #packdir) 対応されるなら、これを機会に HSP3Dish helper を ver.2.0 に上げて良いくらいの素晴らしい出来事だと思います!
(現在 helper のバージョンは1.993 [←1.992←1.991←1.99←1.98←1.97])
|
|
2025/4/2(Wed) 05:34:37|NO.103335
helper のバージョンには、気づきませんでした。
確かに、[hsp37b10a] の helper は、1.993。
ver.2.0 に期待したいです。
蛇足.)
GPB converter のことですが、初期にはバージョンナンバーが付いていなくて、
違いが判別できない状態で使っていて、混乱してしまいました。
バージョンナンバー添付は重要ですね。
|
|
2025/4/3(Thu) 22:06:36|NO.103338
>MIZUSHIKI さん
>zakki さん
hsp3jsでのテキスト描画について、検証と修正ありがとうございます。
かなり良い感じの描画になってきて嬉しく思います。
私としては、MIZUSHIKI さんの sample/h37b10p8/mes_test5x1100.html あたりが一番しっくり来ます。
あまりにも他のプラットフォームとフォントのサイズが変わっていなければ、メリットが大きいので多少の変更は問題ないかと考えています。
>youdai さん
GeminiのAIを使用したサンプルにつきまして、ご意見ありがとうございます。
これは、あくまでもWEB APIを使用するサンプルとして用意される予定のもので、AIによる生成を推奨しているわけではありません。
素材の生成は別として、HSPの文法や処理のヒントとしての利用を示す例として準備しています。
>ねんねこ さん
iOS版についてのご報告ありがとうございます。
引き続き、こちらでも確認していきたいと思います。
>さか さん
ご報告ありがとうございます。
hsed_gettextは、以前にも似たような問題があったような記憶があるので再度確認してみたいと思います。
>アキアキノヒロロ さん
hsp3jsについてのご意見ありがとうございます。
もともと、HSP3Dish helperはソースを変換するためのものとして作成されていて、変換のためのソースやデータを別途用意する所がスタートだったため、現在のような形になっています。
zakkiさんや、MIZUSHIKIさんが書かれているように、実行ファイル生成と同様に、#pack, #packdirでパックしたファイルを使用するような形にまとめるのがシンプルがわかりやすいと思います。
今後のバージョンで対応を検討していきたいと思います。
|
|
2025/4/5(Sat) 17:36:49|NO.103341
> dataファイルの代わりに、#packdir指定で作ったDPM
> hsp3dish.jsとhsp3dhをカスタマイズするので難易度高いですが。
> https://x.com/k_matsuzaki/status/1898005319126856168
zakkiさんのを参考に、、、というかそのまま適用させて頂いたら、暗号化されてない状態の start.ax ならDPM対応をテストできました。
https://github.com/MIZUSHIKI/OpenHSP-fork/commit/18ce4ed68e6543895196cc8f4bb00148d7473937
hsp3crypt.cpp に「このモジュールは暗号化・複合化を行わないダミー版です」って書いてあるからこれ以上は試せない(いじくりまわせない)、、、ような気がしてます。
pack_make命令(hspcmp.as)の、
[hspcmp3.cpp]pack_make -> FilePack::SavePackFile -> FilePack::RegisterFromPacklist を見ると
case '#': // crypt value
crypt = atoi(s1+1);
break;
って書いてあるから、
・ HSP3Dish helper でdpm作成前に packfile に適切な crypt value (#***) を追記。
・ html出力時に「ENV.HSP_CRYPT_VALUE = "$$$cryptvalue$$$";」に値を書き残す。
みたいな感じで行けるようになったりとかはしないでしょうか?
というかそれ以前にhtml内にキーを書くのは流石にマズイでしょうか。
|
|
2025/4/6(Sun) 07:13:22|NO.103345
> というかそれ以前にhtml内にキーを書くのは流石にマズイでしょうか。
・・・自分で読み返してそれは明らかにマズイでしょ。と思い直したのでここのアイディア部分は忘れてください。
|
|
2025/4/12(Sat) 10:25:14|NO.103349
『HSP3Dish helper』ですが。
[hsp3dish.]asでの [.hsp]ファイルでも、読込みファイルを [res/~~]で設定すれば、
「HGIMG4を使用する」をチェックしての変換が可能です。[data]フォルダも要りません。
[hsp3dish.js] でなく、[hsp3dish-gp.js] が出来ています。
ということは、変換は「HGIMG4を使用する」ですべてまかなえることになります。
[hsp3dish.js] でなく、[hsp3dish-gp.js] だけで用が足りる訳です。
となれば、[data]フォルダはやめにして、[res/~~]での読込み設定に統一したって
いいように思えてくるのですけれど。
この考えはダメなのでしょうか。
注.もちろんこの場合でも、[res/~/~~] はエラーになりますが。
#pack, #packdir の方向を否定するわけでは、ありませんが、どうなのでしょうか。
|
|
2025/4/14(Mon) 15:48:44|NO.103354
『HSP3Dish helper』の繰り返しになりますが、
HGIMG4のWebアプリを作っていますが、その際、
resフォルダに入れなくともいいものも全てresフォルダに直に入れて読み込ませる形で、
hspファイルを作っています。
こうすると、このままで、hspファイルを実行できる上に、
そのままの形で、『HSP3Dish helper』で変換できます。
変換したものをそのままアップして開いたWebアプリはエラーになりません。
ということは、hspファイル実行でエラーにならないものを作れれば、
そのままの形を変換に使えて、Webアプリも正常動作するということです。
HGIMG4だけでなく、hsp3dishでも、このresフォルダ方式が有効です。
もし、resフォルダにはresフォルダに入れなければいけないものだけにして、
その他のものは、dataフォルダに入れるべきだとするなら、
そのdataフォルダに対する扱いも、上のresフォルダに対する扱いと同様にすれば、
hspファイルで、[data/~~]と記述しても、問題なくできるのではと思うのですが。
『HSP3Dish helper』をそのような仕組みにはできないのでしょうか。
これも、#pack, #packdir の方向を否定するわけではありませんが、
resフォルダに入れたものは、[res/~~]
dataフォルダに入れたものは、[data/~~]
と、スクリプトにそのまま素直に記述して、
そのままを実行にも変換にも使える、というのが一番ふさわしいように思えるのですが。
#pack, #packdir の方向を併用してもともですが。
|
|
2025/4/15(Tue) 01:49:16|NO.103357
> アキアキノヒロロさん
たいした利点に感じないかもしれませんが、以下の様にスクリプトと同じフォルダにファイルを置けるようになります。
📁フォルダ
┣📄 sample.hsp
┗🖼️ a.png
#packdir "a.png" ; "*.png"で全png指定もできます
picload "a.png"
「スクリプトと同じフォルダに置く」というのは通常のHSP3スクリプトで一般的に用いられる使い方なので、初めてでも直感的に理解できるものになるのではないでしょうか。
==============================
「dataだとかresだとか、どこかのフォルダにまとめないといけない」というjs版固有の縛りが無くなります。
よって、dataフォルダに入れたものを「#packdir "data/*"」した場合は「picload "data/b.png"」として読み込むような記述になります。
==============================
また、おそらく #epackdir による暗号化も対応されると思うので、下記のようなyoudaiさんが言っていた件も解決できるのではないかと思われます。
> https://hsp.tv/play/pforum.php?mode=all&num=101997#102689
> youdaiさん
> ●.dataを暗号化する必要あり
> 出力された.dataファイルの中身を確認してみたのですが、シェーダー部分が丸見えでした。
> これでは独自シェーダーを実装して公開することが事実上できないので、.dataを暗号化して出力できるオプションが必要だと思います。
> 特に著作権保護の観点から、.dataの暗号化は必須だと思います。
通常のHSP3と同じになるので「直感的 かつ 暗号化も同様の手順」という、初心者にとっても、より優しい方法になるのではないかと予感してます。
ということで、せっかくの機会なのでDPM対応を進めて頂ければ嬉しいな、と私は期待しています。
|
|
2025/4/15(Tue) 11:55:43|NO.103360
MIZUSHIKI さん、ご返答ありがとうございます。
私は、今まで #pack, #packdir を使ったことがありませんでした。
パックする必要性を感じなかったからです。別に隠そうとも思いませんでしたし、
逆にいいように使って頂いた方が嬉しいくらいでしたし。
第一、真似されるほどのものが作れている訳でもありませんでしたから。
なので、#pack, #packdir については無知でしたので、あらためて
『HSP3 プログラミング・マニュアル』 「5.20.ファイルのパックと暗号化」
を参照しました。
これが、変換時の参照ファイルに利用できるようになれば、
確かに便利ですし、直感的に理解できるのもいいです。
特に、「#packdir "data/*"」とするだけで、[data]フォルダ内のすべてのファイルが
読込み対象になるというのがいいですね。(「#packdir "data/*.png"等」も。)
これまで、このことを知らずにいたので、
それぞれのファイル名を上げて、一つ一つ「#packdir "data/~~"」と記述しないといけなくて
面倒臭いだけだと思っていたので、大違いです。
「HSP3dish helper」のver.2.0 が待ち遠しいです。
私の[res]フォルダ方式は、それまでの仮の自己流バージョンとしておきます。
|
|
2025/4/24(Thu) 12:43:25|NO.103379
こんにちわ。
gpload、gpmesh、gpcloneについてのご報告と確認です。
①gploadで存在しないファイルを指定する、gpmeshで頂点データがないまま実行すると、オブジェクトidに-1が返ってきます。
しかし、findobjでオブジェクト検索すると、オブジェクトidとして内部で生成されているように見えます。
これは、無効なモデルが生成された場合は内部のオブジェクトidも作成されないのが正しい動作かなと思い、ご報告いたします
(実際、パーティクルなどが上限を超えてしまい生成されなくなる現象になりました。
②gpcloneには、引数にイベントIDを指定することができますが、うまく動作させられませんでした。
明示的にseteventすると通常通り動作します。
よろしくお願いいたします。(以下検証コード)
#include "hgimg4.as"
gpreset
setcls 1,0
; テクスチャマテリアル作成
gptexmat id_ptex, dir_exe+"/sample/hgimg4/res/efx.png" ,GPOBJ_MATOPT_BLENDADD|GPOBJ_MATOPT_NOZWRITE|GPOBJ_MATOPT_NOLIGHT
; イベントリストを登録
newevent ev1 ; 新しいイベントIDを取得
event_setdir ev1, -0.1,0.1,-0.2, 0.1,0.4,0.1
event_adddir ev1, 0, -0.05, 0
event_wait ev1, 40
event_delobj ev1 //一定時間で削除
gpplate id_splash, 0.8,0.8,-2,id_ptex ; クローン元板ノードを追加
*main
redraw 0
gpclone id_clone,id_splash;,ev1//←イベント指定が機能していない?
if id_clone>-1{
setobjmode id_clone, OBJ_MOVE|OBJ_XFRONT ; 自動移動を設定する
setevent id_clone, ev1//←明示的にイベントを指定しないと動かない
}
//空のメッシュを作成しようとするとオブジェクトidが-1なのに内部的に生成される?
;メッシュクリアー
gpmeshclear
//空のまま生成
;gpmesh id_mesh //無効なgpmesh
gpload id_mesh,""//無効なgpload
gpdraw
getreq drawnobj,SYSREQ_DRAWNUMOBJ
pos 0,0
color 255,255,255
mes "SYSREQ_DRAWNUMOBJのシステム値:"+drawnobj
mes "生成されたid_mesh:"+id_mesh
mes "生成されたid_particle:"+id_clone
findobj
objcount=0
pos 400,0
repeat
nextobj val
if val==-1{break}
objcount++
if objcount>1000{
//1000以上でデバッグ出力
mes ""+val+"無効なオブジェクトで-1なのにオブジェクトIDがでてくる"
}
loop
pos 0,450
mes "findobjの数"+objcount+"←生成されていないのに1023までいく(デフォのMAXオブジェクト数)"
redraw 1
await 16
goto *main

| |
|
2025/4/25(Fri) 14:53:40|NO.103380
hgimg4でのunityとの連携で、
materialやshaderの互換ができるといいんじゃないかな。
shaderは初心者には難しい?
|
|
2025/4/28(Mon) 19:47:04|NO.103395
いまでもhgimg3を使ってる人が一定数いるようなので、
要望を上げておきます。
1.modelshadeの拡充。今風のリアルなshaderが使えたら。
2.getcoliまわり。 hgimg4で修正された形状・sizeなどgetset操作の反映。
3.ボーンのget・set。武器装備ができれば。
ボーンについては、getxinfoでmotion中のxyz座標が表示はされます。
motionの動きに合わせて数値も動きます。
が、それを取得はできないようです。
setxinfoのxyz数値はmotionで動きません。
ボーン座標の取得にfv系の命令などいろいろ試しましたができないようです。
以上。ご検討のほど。
|
|