同じフォントの文字列(複数行)を、,RichEditとワードに書いてみたところ、
同じ文字列であるにも関わらず、行毎の文字列の長さがRichEditとワード異なっていました。
フォントはプロポーショナルフォント(MS P明朝など)です。
そこで、ワードに書いた文字列を印刷出力→Distillerを選びPDF変換したものと、
RichEditに書いて同じく印刷出力→Distillerを選びPDF変換したものを比較してみると、見た目どおりに変換するのはワードでした。
RichEditでも、ワードと同じ変換をするには、どうすればよいでしょうか?
質問の意味がよく分かりません。フォントをつかって表示するのはアプリケーション
の仕事ですから、アプリごとに同じフォントを使っても表示が異なるのは当然です。
また、表示と印刷は全く次元が異なる問題ですから、ワードのほうが見た目に
近く印刷できる、ってことです。RichEdit で同じことをするのは、ワードを
作るのとほぼ同じだけ難しいでしょう。
追い打ちをかけるようですが,
ワードは完成したアプリケーションです.
一方,RichEditは開発言語のコントロールです.どのように文字列を表示し,
印刷するかは,開発者が行うものです.
例えば,ワードでは,多くの場合,段落の書式に[両端揃え]を用いますが,
これをRichEditで実現するコードは開発者が開発するわけです.
>RichEditでも、ワードと同じ変換をするには、どうすればよいでしょうか?
ワードがもつ文字列(段落)書式の方法や印刷の機能を実現する方法を教えて
ほしいというのであれば,それはかなり無理があります.まず,文章の編集
機能や印刷の機能を整理(学習)してみてはいかがでしょうか.
もし,[両端揃え]の意味や,ワードがその機能をもっていることを知らなか
ったとすれば,論外ですよ〜.
おかげで少し考える材料が出てきました。
元々フォントサイズ毎にフォントピッチが異なっているのか、フォントサイズ毎にフォントピッチの丸め誤差に違いが生じているのか分りませんが、フォントのサイズに比例して文字列長が延びるわけではないのですね。
画面に表示するときのフォントサイズに比べて、印刷時はプリンターデバイスの解像度の関係上、大きなフォントを使いますから、これが、画面上と印刷したものの見た目が異なってしまう理由でした。
そこで、フォントピッチをプログラム内で調整したいと思います。
Canvas上に文字列を描画するときにフォントピッチを変える方法がないでしょうか。
>Canvas上に文字列を描画するときにフォントピッチを変える方法がないでしょうか。
Win32APIの以下の関数を調べてみると何か情報があるかも知れません.
CreateFont
GetTabbedTextExtent
GetTextCharacterExtra
GetTextExtentExPoint
GetTextExtentPoint32
SetTextCharacterExtra
SetTextJustification
なるほど、Win32APIでDCの属性を変更すればよいのですね。
とても勉強になりました。ありがとうございました。
ツイート | ![]() |