关于 silverlight:silverlight2 应用程序中的模糊字体

blurry font in silverlight2 app

我做了我的第一个 Silverlight 2 应用程序,但令人烦恼的是文本字体看起来模糊或参差不齐。

你可以在这里看到它:

替代文字 http://img516.imageshack.us/img516/1444/blurryfonthp3.png

这是 SL 的"特征"还是我做错了什么?

我知道 SL2 使用了一些花哨的技术来使应用程序独立于设备,但这种字体是不可接受的(我正在使用带有 Aero 的 Vista)。

附赠问题:SL2 中是否有任何参考业务应用程序?

最好的问候,

托马斯


我肯定会说它看起来很模糊 - 就像您在 OSX 或 Linux 上查看它一样。我也同意这是不可接受的——当然,与 WPF 一起,字体渲染也很糟糕。现在,虽然 Microsoft 一直Promise为 .NET 4 版本修复此问题,但事实上,我们中的许多人今天需要运送/出售东西,这导致了以下选择:

  • 您可以忽略常识并按原样发布软件 - 使字体更大以及您拥有什么。只要您的客户购买,有什么问题? (虽然不是我的选择)
  • 如果您正在使用 Silverlight,您可以等到将来的某个版本修复此问题(对于 WPF 也是如此)。祝你好运。看看 WPF 已经存在了多久,每个人都知道这个问题,猜猜看 - 它还没有被修复。
  • 如果您正在使用 WPF,您可以获得完美的字体渲染 - 一种算法甚至比 Vista 所做的稍微好一点(让我们面对现实,它几乎是完美的)。 WinForms 也是如此。理想 ClearType 的算法是明智地使用亚像素渲染、抗锯齿和使用字体提示(如果可用)的混合体。我已经做到了这一点,甚至在为 SIMD 等优化它时玩得很开心。不过,这是对您时间的重大投资。
  • 像素字体。我自己没有尝试过,但它应该可以工作。
  • 预渲染位图。哦,是的,如果您想杀死速度,请继续。话虽如此,我认为只要您知道您正在利用硬件加速,这是可以接受的。

我想我想说的是:WPF/WinForms 有解决方案(是的,WinForms ClearTypeGridFit 也不是最好的算法),但 Silverlight 没有解决方案.然而。我希望有人能证明我错了。


抗锯齿只是 Silverlight 的一个功能;不会说它看起来很模糊,我很喜欢它。

参考明智,我不认为有我见过的完全成熟的应用程序示例,但是如果您使用 IPropertyNotifyChanged / ObservableCollection 查看 Model-View-ViewModel 并浏览 Jesse Liberty 的博客和 Shawn Wildermuth,他们有大量关于数据传输和多页应用程序的信息——这两者你都需要做一个"商业应用程序"


WPF 和 Silverlight 上的 ClearType 字体渲染实现就是这样设计的。文本动画流畅,但看起来模糊。


我会用完另一个答案槽,因为这里有很多话要说。

我希望我能提供这些资源的链接 :) 我的意思是,那里没有这样的东西,而且我怀疑这样做的人是否会提供他们如何实现它的源代码。这主要是因为所需的大量工作令人难以置信。

这就是我的做法。首先,我找到了理想的(或几乎)类似 ClearType 的算法——它专门为我工作(没有提示,请注意,但考虑到性能成本,我不会被打扰)。然后,我将它连接到 .NET 中,这样我至少可以用文本渲染位图(我有一个 Silverlight 测试页面,可以显示它的实际效果)。因此,我将算法微调到可以使用它来代替例如标签的程度。我的应用充满了标签,所以我做了这些。 (您可以想象,文本框可能要复杂得多)。就是这样。

正如您从链接中看到的那样,在 Silverlight 中也有可能获得良好的 ClearType 样式文本。我只花了 2 天时间连接一个 Web 服务来呈现文本,而且速度相当慢,但我认为对于标签之类的东西,没有理由这样 - 尤其是缓存和其他诡计- 无法完成。