【发布时间】:2013-04-24 15:19:53
【问题描述】:
在调查一些仅在我的机器上失败的单元测试时,我注意到 TextBlock 在 Windows 7 和 Windows 8 机器上呈现的文本不同。 为了检查这个问题,我创建了只包含一个 TextBlock 的示例应用程序:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock Text="yo" FontSize="100" FontFamily="Verdana" />
</Grid>
</Window>
您可以看到(或者至少我希望如此)Windows 7 上的文本长了 1px - 实际上“y”和“o”之间的字距增加了 1px:
我使用字体阅读器软件检查了两台机器上的 Verdana.ttf 字体文件,其中列出的“y”和“o”之间的字距相同:-18。
还检查了 .NET Framework 的版本,它们也相同:4.5.50709。
...我仍然想知道是什么导致了这种差异?
【问题讨论】:
-
这可能与 Windows 系统主题有关,因为您会注意到其他元素在两个版本的 Windows 之间看起来也有所不同,例如窗口样式。
-
几件事要尝试: 1. 关闭字体平滑(需要在操作系统级别完成;显然不能从 WPF 完成) 2. 看看差异是否仍然一致,当你在 TextBlock 上使用 ScaleTransform。
标签: wpf windows-8 textblock kerning