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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0128
こいるフォントサイズを11と12の間(11.5)くらいのサイズにしたい3解決


こいる

リンク

2020/1/28(Tue) 18:25:08|NO.89354

font命令でフォントサイズを
「11.5」のように、小数を含んだ値に指定したいのですが、
整数しか入らないようで、できませんでした。

どうすればできるのでしょうか?



この記事に返信する


あらや

リンク

2020/1/30(Thu) 00:08:36|NO.89364

無理です。
(私が勘違いしていなければ)

font命令のサイズは、ピクセル単位での文字の高さなので
ディスプレイの構造的に11.5ピクセルという小数の指定は不可能です。

フォントの種類、そして使う文字がアルファベットや日本語だけだと分かりにくいですが
記号なども含めて表示してみると高さが指定したサイズになっているのがわかると思います。


// フォントサイズ11 枠を表示 color 255, 0, 0; line 8, 7, 173, 7; line 173, 7, 173, 19; line 173, 19, 8, 19; line 8, 19, 8, 7; // フォントサイズ11 文字を表示 color 0, 0, 0; font "メイリオ", 11; pos 10, 5; mes "ABC 123 あいう _+{}|:\\\"<>?"; // フォントサイズ12 枠を表示 color 255, 0, 0; line 8, 22, 182, 22; line 182, 22, 182, 35; line 182, 35, 8, 35; line 8, 35, 8, 22; // フォントサイズ12 文字を表示 color 0, 0, 0; font "メイリオ", 12; pos 10, 20; mes "ABC 123 あいう _+{}|:\\\"<>?";

スクリーンショットでそれぞれの文字列の『高さ』を調べてみて下さい。

各文字・各記号単独では上下に隙間が有ったりしますが、
文字列全体で確認するとちょうど11ドットと12ドットになっているはずです。



沢渡

リンク

2020/1/30(Thu) 12:35:55|NO.89369

非常に無理矢理なやり方ですが、別バッファに書いたテキストを拡大or縮小コピーすることで
擬似的に11.5サイズとか16.5サイズなどを表示するやり方もあります。

#include "user32.as" #module #define boxf2(%1,%2,%3,%4) boxf %1,%2,(%1)+(%3)-1,(%2)+(%4)-1 #defcfunc higher int h_a,int h_b //大きい方を返す if h_a>h_b : return h_a return h_b //zoommes_init p1,p2,p3,p4,p5,p6 //zoommes実行前に、これを実行する必要がある //p1 : フォント名 //p2 : フォントの元の大きさ //p3 : フォントのオプション(太字など) //p4 : サイズ変更前のサイズ比率 //p5 : サイズ変更後のサイズ比率 //p6 : この処理で使うバッファの番号 #deffunc zoommes_init str _fname,int _fsize,int _fopt,int _zm_b,int _zm_a,int _buf_n dim rect,4 fname=_fname : fsize=_fsize : fopt=_fopt : zm_b=_zm_b : zm_a=_zm_a : buf_n=_buf_n return #deffunc zoommes str _text,local text text=_text buf0=ginfo_sel x=ginfo_cx : y=ginfo_cy r=ginfo_r : g=ginfo_g : b=ginfo_b buffer buf_n,1,1 : gsel buf_n font fname,fsize,fopt DrawText hdc,varptr(text),-1,varptr(rect),0x400 //0x400:DT_CALCRECT 横幅・縦幅を事前調査 b_w=rect(2)-rect(0) //サイズ変更前の横幅 b_h=rect(3)-rect(1) //サイズ変更前の縦幅 a_w=b_w*zm_a/zm_b //サイズ変更後の横幅 a_h=b_h*zm_a/zm_b //サイズ変更後の縦幅 buffer buf_n,higher(b_w,a_w*2),b_h+a_h color 0,0,0 : boxf color r,g,b : boxf2 0,0,a_w,a_h color 255,255,255 rect=0,a_h,b_w,a_h+b_h font fname,fsize,fopt DrawText hdc,varptr(text),-1,varptr(rect),0 pos a_w,0 : gzoom a_w,a_h,buf_n,0,a_h,b_w,b_h,1 gsel buf0 : pos x,y gmode 7,a_w,a_h gcopy buf_n,0,0,a_w,a_h gmode 0 buffer buf_n,1,1 : gsel buf0 pos x,y+a_h return #global a="いろはにほへと\nちりぬるを\nわかよたれそつねならむう\nゐのおくやまけふこえてあ\nさきゆめみしゑひもせす" font msgothic,16,0 mes a mes zoommes_init msgothic,16,0,32,33,100 //フォントサイズ16のテキストを32分の33倍に縮小し、擬似的にサイズ16.5で表示 zoommes a mes zoommes_init msgothic,17,0,34,33,100 //フォントサイズ17のテキストを34分の33倍に縮小し、擬似的にサイズ16.5で表示 zoommes a mes font msgothic,17,0 mes a



こいる

リンク

2020/1/30(Thu) 15:33:13|NO.89372

>あらやさん
ピクセル単位なのですか。
知らなかったです。。。

>沢渡さん
サンプルを使ってみましたが、
あまりサイズが変わらなかったり、
文字がぼやけるたりするため、実用はできなさそうです。

無理そうだったので、
MSゴシックとは別のフォントを使って、サイズを調整したいと思います。

お二人ともありがとうございました!



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