2013-04-24 76 views
2

在调查一些仅在我的机器上失败的单元测试时,我注意到TextBlock在Windows 7和Windows 8机器上呈现的文本不同。 要检查这个问题,我创建了一个包含只是一个TextBlock的示例应用程序:Windows 7和Windows 8之间WPF的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的厚:
difference win7/8

我检查上与字体阅读器软件两台机器Verdana.ttf字体文件,和之间的字距‘Y’和‘o’中列出的有一个和同样:-18。
还检查了.NET Framework的版本,它们也是相同的:4.5.50709。
...我仍然想知道造成这种差异的原因是什么?

+0

它可能与Windows系统主题有关,因为您会注意到两种版本的Windows(例如窗口样式)之间的其他元素也看起来不同。 – Rachel 2013-04-24 20:13:24

+0

有两件事要尝试:1.关闭字体平滑(需要在操作系统级别完成;显然不能从WPF完成)2.当您在TextBlock上使用ScaleTransform时,看看它们之间的差异是否一致。 – nmclean 2013-08-21 11:53:44

回答

1

我宁愿认为这是与ClearType或抗混淆有关的事情,微软会不断在每个Windows版本之间更改该代码。不要认为你可以做任何事情,只需将这些差异归因于你的单元测试。