4

System.Drawing.Graphics クラスと DrawString() メソッドを使用して、画像にテキストをレンダリングしています。

この画像のテキストを非常に具体的な方法で生成して、ピクセルごとに正確に既存の画像と一致させる必要があります。

問題は、DrawString() によって生成されたテキストが、既存の画像内のテキストとは異なるカーニングを持っていることです (私の最善の推測では、文字あたり約 0.5 ~ 1 ピクセルです)。

この名前空間とメソッドを使用しているときにカーニングを変更できるかどうか、誰か教えてもらえますか?

また、これは私たちが使用しているカスタム フォントであり、これをオープン タイプ (ソース イメージで使用) から True タイプに変換する必要がありました。この段階でカーニングが変更された可能性はありますか?

4

1 に答える 1

3

http://blog.stevex.net/rendering-text-using-the-net-framework/

これらの問題は、テキストのカーニングが異なる方法で (より正確に) 測定されることですが、多くの場合、アプリ開発者がこれらの機能を使用したい方法と互換性がありません。

ソリューション:

ExtTextOut は、この種のカーニングを行うほどスマートではなかったため、この問題は発生しません。残念ながら、.NET フレームワークにはフォールバックできるテキスト描画関数がありません。したがって、古い動作を取得する唯一の方法は、GDI の ExtTextOut 関数への P/Invoke を使用することです。

リンクにはいくつかのサンプルコードがあります..お役に立てば幸いです!

于 2010-07-13T08:00:36.880 に答える