技术背景
windowsclient.net 上的 WPF 文本程序管理器之一有一篇关于 WPF 文本呈现的深入文章:WPF 中的文本清晰度。
问题归结为 WPF 需要一个线性缩放的字体渲染器来实现流畅的动画。另一方面,Pure ClearType 需要相当大的自由度来将垂直词干推入下一个像素。
如果比较经典的“级联”模式,差异就很明显了。左下角的WinForms,右上角的WPF:
虽然我也不喜欢 WPF 的字体渲染特性,但我可以想象如果动画会像在 Winforms 级联中那样跳跃会引起喧嚣。
玩注册表
我特别感兴趣的是 MSDN 文章“ ClearType Registry Settings ”的链接,它解释了注册表中可能的用户端调整:
- ClearType 级别:子像素提示的数量
- 伽玛级别
- 像素结构:显示像素中的色条是如何排列的
- 文本对比度级别:调整字形词干的宽度以使字体更重
使用这些设置并没有真正改善潜在问题,但可以通过减少敏感用户的颜色渗色效果来提供帮助。
另一种方法
Text Clarity 文章给出的最佳建议是增加字体大小和更改字体。Calibri 比标准的 Segoe UI 更适合我。由于它作为网络字体很受欢迎,我也尝试了 Verdana,但它的重量在 14pt 和 15pt 之间有一个令人讨厌的跳跃,这在为字体大小设置动画时非常明显。
WPF 4.0
WPF 4 将改进对影响字体呈现的支持。WPF 文本博客上有一篇文章解释了这些更改。最突出的是,现在(至少)有三种不同类型的文本渲染:
<grumble>这对每个设计师来说应该足够了。</grumble>