2013-04-24 80 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版本之間更改該代碼。不要認爲你可以做任何事情,只需將這些差異歸因於你的單元測試。