ingen084's blog

前のブログが何故か落ちちゃったので。

MonoGameでのWpfFontPipelineの不具合について

  • ingen084
  • 2016/03/23 13:13
  • コメントなし

XNA(Monogame)のスプライトフォント生成にものすごく便利なWpfFontPipelineですが、生成されるフォントが必ず太字になる不具合を見つけたのでここに書き記しておきます。

渡されたスタイルのフラグをand演算をしてフォントの太さなどを決めているようなのですが、
[code]// フォントスタイルの変換
var fontWeight = ((input.Style & FontDescriptionStyle.Bold) == FontDescriptionStyle.Bold) ? FontWeights.Bold : FontWeights.Regular;[/code]
何故かわかりませんがMonoGameではスタイルのフラグが
[code]Bold=0b
Italic=1b
Regular=10b[/code]
のように定義されていて、(0とand演算すると絶対に0になっちゃいます)
たとえRegularが指定されていてもフォントが太字になってしまいます。
修正は簡単
[code]// フォントスタイルの変換
var fontWeight = ((input.Style & FontDescriptionStyle.Regular) == FontDescriptionStyle.Regular) ? FontWeights.Regular : FontWeights.Bold;[/code]
BoldとRegularを反対にするだけです。
生成済みdllは要望があれば配布します?

この記事に対するコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です