DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォントをBold/Italicなどにすると画像出力?

環境/言語:[XP SP3 VB.NET 2008 Express]
分類:[.NET]

DOBON.NETにはいつも感謝しています。
VB.NetでフォントをBold/Italicなどにすると「文字」として出力されず、「画像」として出力されているようですが・・・
根拠はFinePrintというプリンタドライバに出力して「画像を印刷しない」設定にすると消えるフォントがあります
フォントの設定は
Dim fnt As Font = New Font(fntname, 10, FontStyle.Italic)
文字出力は
grfx.DrawString(fntname & "ABCabc", fnt, Brushes.Black, xpos, ypos)
として出力しました
よく使用する「明朝」「ゴシック」もBold/Italicで「画像」出力されているようです。これらのフォントでもStrikeout/Underlineは「文字」出力されているようです。
これはVB.Netの仕様でしょうか、コードに誤りがあるのでしょうか?
他に何かフォント設定が必要なのでしょうか?
「文字」出力にこだわる理由はフォントスタイルとサイズでPDFのしおりが作成できるためです。(「画像」ではしおりが作成されないので)
よろしくお願いします。
キーワードから検索すると、過去の MSDN フォーラムのスレッドが出てきますね。

フォントスタイルがBold、Italicの文字列がイメージで描画されてしまう。
http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/3e1d5c07-3260-40dd-aaa7-8d9dfb3fbc4f/


想像に過ぎませんが、印刷に際して GDI+ を用いているので、フォントが何らかの条件を満たしていないと画像として出力されてしまうのかもしれません。

VB.NET の制約と言うよりは、.NET Framework が利用している GDI+ の制約になると思われますので、C# だろうと同じことが起きます。
そして、この挙動が GDI+ の制約だった場合、GDI+ を使う限り、回避策はないと予想されます。(DrawString を使わずに印刷できるのかなど、かなり難しいことに挑戦する必要があると予想される)

// 解決策でなくてすみません。
Azuleanさん、
調査不足でした。
でも参考になるコメントをいただき、ありがとうございます

■No31010に返信(Azuleanさんの記事)
>
> フォントスタイルがBold、Italicの文字列がイメージで描画されてしまう。
> http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/3e1d5c07-3260-40dd-aaa7-8d9dfb3fbc4f/
>
>
> 想像に過ぎませんが、印刷に際して GDI+ を用いているので、フォントが何らかの条件を満たしていないと画像として出力されてしまうのかもしれません。
>
> VB.NET の制約と言うよりは、.NET Framework が利用している GDI+ の制約になると思われますので、C# だろうと同じことが起きます。
> そして、この挙動が GDI+ の制約だった場合、GDI+ を使う限り、回避策はないと予想されます。(DrawString を使わずに印刷できるのかなど、かなり難しいことに挑戦する必要があると予想される)
>
> // 解決策でなくてすみません。


お知らせいただいたスレッドの中に

"MS ゴシック" や "MS 明朝" といった標準の日本語フォントでは、 "Century" や "Times New Roman" といった標準の英語フォントとは異なり、 ボールドやイタリックのスタイル フォント ファイルがありません。 このようなボールドやイタリックのスタイルフォントがない日本語フォントでは、 GDI がスタイルのシミュレートを行いグリフ ビットマップ (文字の形状) を作成しています。

との説明がありました。

印刷などに関してVB6とNETとの違いに苦しんでいます。

TextRenderクラスを使ってみれば、との情報もありました。
これらを参考にします。
■No31013に返信(谷澤 捷嘉さんの記事)
自己レス
また 調査不足でした。

DOBONさんの
TextRenderer.DrawTextメソッドを使用する方法

TextRender.DrawTextは印刷では使用できません
とありました。

PDFドライバが認識できるフォント・スタイルで出力することとします

ありがとうございました
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板