WPF字体质量
我正在开发一个WPF应用程序,但我注意到,在某些字体大小下,文本的渲染效果不如您在“控制面板->字体”中看到的示例好。我使用的是较大的Segoe UI字体(WPF字体质量,wpf,fonts,font-size,Wpf,Fonts,Font Size,我正在开发一个WPF应用程序,但我注意到,在某些字体大小下,文本的渲染效果不如您在“控制面板->字体”中看到的示例好。我使用的是较大的Segoe UI字体(FontSize=“36”),其效果在竖直的线条上更为明显,例如字母“U”的一面可能比另一面稍厚。 ) 在某些字体大小下,字体质量会提高,例如FontSize=“48”(我认为这相当于36pt),但使用有限的字体大小并不总是可行的 我可以通过对TextBlock应用以下属性来提高字体质量:- TextOptions.TextFormattin
FontSize=“36”
),其效果在竖直的线条上更为明显,例如字母“U”的一面可能比另一面稍厚。
)
在某些字体大小下,字体质量会提高,例如FontSize=“48”
(我认为这相当于36pt),但使用有限的字体大小并不总是可行的
我可以通过对TextBlock应用以下属性来提高字体质量:-
TextOptions.TextFormattingMode="Display" TextOptions.TextRenderingMode="ClearType"
考虑到质量的提高,我很想知道为什么WPF不能对所有文本都这样做,还是因为性能的原因?我在考虑创建一个全局样式,将其应用于所有控件,或者这会导致问题吗
(我尝试上传一个屏幕截图,但必须以低质量存储图像,你无法真正了解字体问题)。以下是WPF文本团队编写的关于此功能的示例
文本格式化模式的注意事项
:
理想理想文本度量是用于
自WPF引入以来的文本格式。这些指标导致
字形的形状保持其轮廓的高保真度
字体文件。在以下情况下,不考虑图示符的最终位置:
创建字形位图或相对于每个位图定位字形
其他的
显示在这种新的格式化模式下,WPF使用GDI
兼容的文本度量。这确保每个图示符的宽度为
多个整像素,并定位在整像素上。使用
GDI兼容的文本度量还意味着字形大小和线条
breaking类似于基于GDI的框架。也就是说,字形大小
不是WPF使用的断线算法的唯一输入。
即使我们使用与GDI相同的度量,我们的断线也不会
完全一样
由于这些属性在.NET4.0中是新的,所以它们保留了原始WPF算法作为默认值,这是理想模式
对于textrendingmode
自动除非系统设置已更改,否则此模式将使用ClearType
设置为在机器上专门禁用ClearType
锯齿不会使用抗锯齿来绘制文本
灰度灰度抗锯齿将用于绘制
文本
ClearTypeClearType反序列化将用于绘制文本
由于默认设置为Auto
,因此通常会得到ClearType
渲染
现在,由于这些是附加属性,并且它们继承,因此您可以在根
窗口中设置它们。无需创建大量的样式。当ClearType打开时,我注意到在处理大量数据(超过10000项)时会出现一些小的性能问题。将TextFormattingMode更改为Display不会对性能产生明显影响
这就是说,在我所有的WPF应用程序中,我都使用全局样式来改进文本呈现,除非性能影响大到足以让UI感觉黏性。我们(imgur)不会以低质量存储图像。如果保存PNG并上传,它不会变成JPEG。您还可以从此处的缩小图像链接到全尺寸图像。您是否使用其他字体尝试过此操作?我相信,修改这些属性是否会对性能产生任何影响(可能是由于更复杂的算法)中充分回答了这个问题,包括为什么默认WPF字体呈现为“模糊”的问题?另外,我想知道修改这些属性是否还有其他缺点或缺点。WPF团队中没有人提到过使用不同渲染模式的性能影响,所以我想说,如果存在性能损失,那么可以忽略不计。至于缺点,我认为主要是ClearType。例如,它在CRT显示器上工作不好。