Downloading...

powered by hsp3dishw.js / OpenHSP


// HSPスクリプト: mes_test5

#include "hsp3dish.as"
*main
	redraw 0 : rgbcolor $000080 : boxf : pos 0,0
	rgbcolor $00FFFF : mes "あいうえお"
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy
	rgbcolor $00FFFF : mes " あいうえお"
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy
	rgbcolor $00FFFF : mes "あ いうえお"
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy
	rgbcolor $00FFFF : mes "あ  いうえお"
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy
	rgbcolor $00FFFF : mes "abcdefghijklmnopqrstuvwxyz"
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy+" (g j p q y 等が欠ける環境がある)"
	rgbcolor $00FFFF : mes "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy+""
	rgbcolor $00FFFF : mes ""
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy+{" (「mes ""」は文字高さにフォントサイズが返るβ9も同じ)"}
	rgbcolor $00FFFF : mes "1234567890"
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy+""
	rgbcolor $00FFFF : mes "記号_、。#$%&()!?_,.#$%&()!?"
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy+" (。やアンダーバー等も欠ける環境がある)"
	rgbcolor $00FFFF : mes "gjpqyM,;*^|\\ぁゎぴぽ齋鬱鑑龍馨驚|"
	rgbcolor $FFFFFF : mes "↑ ginfo _mesx="+ginfo_mesx+" / _mesy="+ginfo_mesy
	redraw 1
	await 33
goto *main

/*
// hsp3dishw.js の変更

// <上側のEM_ASM_内の変更>
const context = canvas.getContext("2d");
context.font = $1 + "px sans-serif";

if (typeof window.useActualBoundingBox === "undefined") {
	const msgABB = 'gjpqyM,;*^|\ぁゎぴぽ齋鬱鑑龍馨驚|';
	window.metricsABB = context.measureText(msgABB);
	if ((window.metricsABB.fontBoundingBoxAscent + window.metricsABB.fontBoundingBoxDescent) >= (window.metricsABB.actualBoundingBoxAscent + window.metricsABB.actualBoundingBoxDescent)){
		window.useActualBoundingBox = false;
	} else {
		window.useActualBoundingBox = true;
	}
}

const msg = UTF8ToString($0);
const metrics = context.measureText(msg);
HEAP32[$2 >> 2] = Math.max(metrics.width, metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight) | 0;

if (!window.useActualBoundingBox) {
	HEAP32[$3 >> 2] = (metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent) | 0;
} else {
	HEAP32[$3 >> 2] = Math.ceil(window.metricsABB.actualBoundingBoxAscent + window.metricsABB.actualBoundingBoxDescent);
}


// <下側のEM_ASM_内の変更>
context.font = $1+"px sans-serif";
 :
 :
if (typeof window.useActualBoundingBox === "undefined" || !window.useActualBoundingBox) {
	context.fillText(msg, 0, metrics.fontBoundingBoxAscent);
} else {
	context.fillText(msg, 0, window.metricsABB.actualBoundingBoxAscent);
}

*/