▼kojimaさん:
遅くなりまして申し訳ありません。
>▼英人さん:
>>お世話になります。
>>JW ver5.11eから 最新の8.24aへ乗り換え中です。
>>ver5.11eのとき作っていた外変の移植をしていますが、文字列の長さを実寸で求める方法を教えていただけたらと思います。
>>
>>当時は、全角と半角で文字幅を計算し、文字間隔を加える方法で計算していました。現在は、MS ゴシックを使用すれば、同じのように思えますが、
>>他のフォントを使用した場合は、どうなのでしょうか。
>
>図寸・実寸ともフォントの種類は無関係です。
>(見た目の感覚と差異があるかも?)
フォントによっては、文字の配置を調整して表現されているものもありますよね。
それが、JWでは1文字毎に位置調整されて画面と、プリンターに出力されているのかな?
それとも、文字列の幅と高さに倍率をかけて従来と近い値にしているのかな?
と考えた次第です。
PictureBoxに文字を表示するときに、MeasureTextという関数があって、
textSize = TextRenderer.MeasureText(word, dfnt)
こんな風に使っていました。(Visual Basic)
文字の長さの実寸は、今までどおりで良いと教えていただいて、ありがとうございます。
全角と半角の文字をプログラムで判別するのに、
Visual Studio 2005でのBasicで使っていたものが使えなくなったので、
苦労しているときに、上記のことを考えたのです。
一応、そちらも解決いたしましたので、別に投稿しておきます。
ありがとうございました。
>
>>
>>Visual Studioで Basicで開発していますが、全角、半角が昔の処理ではうまく判別できないのもあり、さらにフォントが違う場合にはどうするのだろうかと思っています。四角の枠にぴったり文字を入れ、印刷までする予定です。
>
>作図済の文字列の場合は、somenさんのレスの通りです。
>
>そうでない時は、
>jwc_temptxtの以下の項目から、図寸*縮尺倍率でだします。
>
>hs 50 100 200 30 30 30 30 30 30 30 30 30 30 30 30 1#レイヤグループ毎の縮尺の逆数
>hcw 1.4 1.8 2.4 3.2 3.5 4.2 7 8 9 10#文字種毎の幅
>hch 2 2.5 3 4 5 6 7 8 9 10#文字種毎の高さ
>hcd 0 0 0 0.5 0.5 1 1 2 2 2#文字種毎の間隔
>
>半角文字の場合は、文字幅・文字間隔ともに1/2になります。
>文字列を1文字単位にして、幅と間隔を合計する。(図寸)
>合計値に縮尺の逆数(倍率)を掛算する。
>
>半角・全角が混じった文字列の場合は、文字間隔は前の文字に依存します。
>半角文字・全角文字の並びだと文字間隔は*1/2となり
>全角文字・半角文字の並びだと文字間隔は*1です。