2010-12-14 12 views
2

GDIを使用してテキストをデバイスコンテキストに描画していますが、角度が0,90,180、または270の場合にカーニングまたは文字の配置が異なることに気付きました。角度を1ずつ大きくすると、文字の配置が目立つようになります。Win32 TextOutを使用して角度でテキストを描画する

よりもむしろ角度でHFONTを作成し、私は、デバイスコンテキストのワールド座標を変換するためにModifyWorldTransformを使用しています、と私はデバイスコンテキストにテキストを描画するTextOutを使用しています。

テキストは90度の正確な倍数で描画されているが、他の角度で描画されていない場合、GDIはフォントヒントやその他の特殊なテクニックを使用していると思います。

このヒントを無効にする方法はありますか?0度でレンダリングされたテキストは1度でレンダリングされたテキストと大きく異なることはありませんか?

ここで私は(モノタイプCorsivaフォント)何を意味するかの例です:

0度
0 degrees

1度:一部のフォントについては
1 degree

、などArialやTahomaのように目立ったものではありませんが、私はその違いを完全に取り除きたいと思います。テキストは最高の状態でレンダリングされません。

答えて

1

これはフォントヒントではなくアンチエイリアスによるものだと思います。次のように試してみることができます:

  • 無効(フォント)AAですが、これは受け入れ可能な結果を​​もたらさないでしょう。
  • 考えられる角度ごとにフォントハンドルを作成し、問題が解決しないかどうかを確認します。私はそれがないと思うが、それはかなりの解決策ではない。
  • テキストをビットマップにレンダリングします(例:CreateCompatibleBitmap()を使用)。テキストをレンダリングし、回転したビットマップをレンダリングします。これは、異なる回転/異なるテキストが必要な頻度に依存します。
  • fdwOutputPrecisionfdwQualityで再生します。CreateFont()です。これは一番簡単な解決策かもしれませんが、私は少し実験しなければなりません。

HTH

+0

アイデアのおかげで、残念ながら私はAAを無効にしても、結果は同じである(テキストはアンチエイリアスではありませんを除きます)。私がCreateFontの精度/品質を試しても、それは結果を変えません。(私は今のところそれを我慢しなければならないと思っています。 – dreamlax

関連する問題