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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0227
xxx文字を平体にする方法5解決


xxx

リンク

2022/2/27(Sun) 00:41:35|NO.95591

題名の通り、文字を平体(文字の横幅を広げた字体)にする方法について質問させていただきます。

単にフォントとフォントサイズを指定して文字を表示させるだけであれば、

font "MS ゴシック",30

mes "こんにちは"

上記の構文で表示できましたが、


そこから文字の縦の高さは変えずに横幅だけを変えるにはどのようにすればいいのかご教授願いたいです。
mes構文では不可能なのでしょうか。

何卒よろしくお願い申し上げます。



この記事に返信する


zezenana

リンク

2022/2/27(Sun) 09:01:06|NO.95592

> xxx さん

Windows GDIにてフォント設定をするのはどうでしょうか?


#include "gdi32.as" #define CS_SJIS 128 fo_h=20:fo_w=40 hfo=CreateFont(fo_h,fo_w,0,0,0,0,0,0,CS_SJIS,0,0,0,0,msgothic) SelectObject hdc,hfo mes "テスト\nてすと\ntest" DeleteObject hfo



xxx

リンク

2022/2/27(Sun) 19:44:16|NO.95597

zezenana様

返信いただきありがとうございます。
この構文で文字列を平体にすることができました。さらにこの構文を使うことで、平体のまま文章を右から左にスクロールさせることにも成功しました。応用が利くのですね。

そしてよろしければ、この構文の

fo_h=20:fo_w=40



hfo=CreateFont(fo_h,fo_w,0,0,0,0,0,0,CS_SJIS,0,0,0,0,msgothic)

について教えていただけますでしょうか。
まず一つ目のfo_hとfo_wはそれぞれフォントの高さとフォントの幅を定義しているのは理解できたのですが、その単位を教えていただきたいです。
そして二つ目の構文ですが、msgothicはMSゴシック体ということは分かりましたが、その前の0の羅列が何を意味しているのか分かりませんでした。教えていただければ幸いです。



zezenana

リンク

2022/2/28(Mon) 06:52:48|NO.95600

>xxx さん

mesで平体フォントが利用できたようで何よりです。
WIN32 APIで直接設定していますので傾斜なども簡単にできるはずです。


-----
>フォントの高さとフォントの幅を定義しているのは理解できたのですが、その単位を教えていただきたいです。

単位は文字や図形サイズなどで利用されている(pt)で 1/72インチが基準となります。
DTPソフト等で利用される単位なので解像度がわかればピクセル変換も出来ます。

CreateFont のサイズ値(高さfo_h、幅fo_w)についてはあくまでも例です。

高さは正の値を入れることで文字セルの高さ(ディセント値+アセント値)となり
0の場合は、デフォルトの高さ(HSP3の fontだと18?)が使用されます。

フォントダイアログで選択するフォントサイズ値を指定する場合には
画面高さDPI値を基準にしたドット数に比例する論理サイズを負の値で入れる必要があります。

なぜか HSP3の font命令フォントサイズ p1はその論理サイズ値を採用していますので
そのまま使用することが出来ます。高さの値に font命令の p1をマイナス値で入れてください。

font msgothic,16 の場合、

CreateFont(-16,0,0,0,0,0,0,0,CS_SJIS,0,0,0,0,msgothic)

幅についてはフォントの平均文字幅を設定します。平均文字幅なのはプロポーショナルな
場合であり、モノスペースであれば文字幅となります。
0の場合には高さの設定にて自動的に決定します。


-----
>その前の0の羅列が何を意味しているのか分かりませんでした。教えていただければ幸いです。

私がそれをすべて説明するのには無理があるので、ネットの情報を活用してください。
CreateFont は、Win32 APIの命令ですのでグーグルなどで検索すればすぐに見つかります。

Microsoftドキュメントの英語/日本語ページもありますが、HSP3を取り扱っている
ちょくとさんのページがよくまとめられています。

https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-createfonta
公式のWin32 APIドキュメント(英語) - CreateFontA

https://docs.microsoft.com/ja-jp/cpp/mfc/reference/cfont-class?view=msvc-170#createfont
公式のMFCドキュメント(日本語) - CreateFont

http://chokuto.ifdef.jp/urawaza/api/CreateFont.html
ちょくとのページ Win32 API 関数リスト - CreateFont(A)



zrs90(5さい)

リンク

2022/2/28(Mon) 08:43:12|NO.95602

蛇足。

CreateFont の話は、zezenana さんが
仰る通りで、14個もパラメータがあるので
解説は、ムリでしょう。何せ、高さと幅の
2つだけで、この量ですから...

SelectObject
DeleteObject

も、この際、ついでに、Google検索して
調べると、良いと思います。

zezenana さん、xxxさん
私も、この件、参考になりました。
ありがとうございました。



xxx

リンク

2022/2/28(Mon) 21:52:59|NO.95603

zezenana様、zrs90様、コメントいただきありがとうございます。

単位はptでしたか。非常に詳細に説明していただき本当にありがとうございます。ここからピクセル数も換算できそうなので頑張ってみます。
そして0の羅列には非常に複雑な意味があるのですね……。zezenana様が貼ってくださったサイトをもとにして勉強してみようと思います。

改めまして、今回は質問に答えてくださり本当にありがとうございました。



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