WPF字体基于缩放呈现细化

时间:2019-05-15 17:05:37

标签: c# wpf user-interface fonts

我正在一个项目中,以从现有界面的PDF渲染中复制用户界面。原始文件使用20pt大小的字体“ MS UI Gothic”。在Visual Studio(2015、2017、2019)中,如果将缩放比例从100%放大到110%,则字体将显示几乎为粗体,就像在PDF副本中一样,但是缩放到100%时,字体将显示为细字体。运行应用程序时,字体显示为细字体。

<TextBlock Text="MS UI Gothic 20 looks thin" FontFamily="MS UI Gothic" FontSize="20" />
<TextBlock Text="MS UI Gothic 21 looks bold or correct" FontFamily="MS UI Gothic" FontSize="21" />

以下是我为显示问题而构建的测试。图像压缩使字体在20pt时看起来更粗,但是您仍然可以看到从21pt到20pt的变化以及它的细度。 WPF App showing bad rendering of MS UI Gothic

我尝试了一些TextOptions,其他人已使用它们来解决一些字体问题,但是它们对此没有影响。

我可能必须使用18或19的粗体,但是似乎还有其他方法可以使Windows正确呈现字体。另外,在Windows中查看字体查看器时,它们具有18pt和更大尺寸的渲染正确,但在12pt时存在问题。 Windows Font Viewer MS UI Gothic

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

经过更多测试,没有办法改变告诉WPF正确渲染的方式,我得出的结论是,我可以将字体从20px减少到19px,然后应用字体粗细。这会导致较小的字体呈现正确,并且不会过多更改布局和事物的大小。

<TextBlock Text="MS UI Gothic 20 looks thin" FontFamily="MS UI Gothic" FontSize="20" />
<TextBlock Text="MS UI Gothic 19 SemiBold looks correct" FontFamily="MS UI Gothic" FontWeight="SemiBold" FontSize="19" />

下面是更改的屏幕截图。

Using SemiBold with a 1pt smaller font looks correct

我希望这对其他人有帮助,我也考虑过使用different font,但这会增加将其包含在应用程序中的复杂性。