2013-04-24 2 views
2

При исследовании некоторых модульных тестов, которые терпят неудачу только на моей машине, я заметил, что TextBlock представляет текст по-разному на машинах Windows 7 и Windows 8. Для проверки этого вопроса, я создал пример приложения, содержащего только один TextBlock:Различия между текстовыми блоками WPF между Windows 7 и Windows 8

<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 больше - на самом деле кернинг между «у "и„о“является 1px толще:
difference win7/8

Я проверил файлы шрифтов Verdana.ttf на обеих машинах с программным обеспечением чтения шрифта и кернинг между„у“и„о“в списке есть один и такой же: -18.
Также проверены версии .NET Framework, которые также идентичны: 4.5.50709.
... и мне все еще интересно, что вызывает эту разницу?

+0

Возможно, что-то связано с системной темой Windows, так как вы заметите, что другие элементы также отличаются друг от друга между двумя версиями Windows, такими как стиль окна. – Rachel

+0

Пара вещей, которые нужно попробовать: 1. выключить сглаживание шрифтов (необходимо сделать на уровне ОС, видимо, не может быть сделано из WPF). 2. Посмотрите, не изменилась ли разница, когда вы играете с ScaleTransform на TextBlock , – nmclean

ответ

1

Я бы предпочел, чтобы это было связано с ClearType или Anti-Aliasing, Microsoft постоянно меняет этот код между каждой версией Windows. Не думайте, что вы можете что-то сделать с этим, просто нужно учитывать эти различия в своих модульных тестах.

Смежные вопросы