WPF:字体(大小)在XP和Vista/7上的呈现方式不同

sag*_*ibb 2 wpf fonts rendering windows-xp font-size

代码非常简单:

<TextBlock TextAlignment="Center" Text="{Binding TimeAgo}" Foreground="White" FontSize="12" FontFamily="Calibri" Background="Transparent"/>
Run Code Online (Sandbox Code Playgroud)

据我所知,WPF本身支持Calibri字体.但是,XP和Vista/7上的字体呈现方式不同:

XP: 替代文字

Vista的: 替代文字

我的主要问题是字体的大小(它在XP上渲染得更大),因为我有专门的,有限的文本空间.

我目前正在使用UseLayoutRounding ="True"但删除它没有任何区别.我也在使用:

<ResourceDictionary Source="/PresentationFramework.Aero, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
Run Code Online (Sandbox Code Playgroud)

但删除它也没有任何区别(根据字体的大小).

Nir*_*Nir 8

WPF没有任何字体的原生支持,它只能使用机器上安装的字体.

较大的文字不是Calibri(看起来像Arial或Tahoma对我来说),你可以看看"g"的形状,看看那些字体不一样.

如果您或其他软件(如Office 2007或更高版本)首先安装它,您只能在XP上使用Calibri.

  • @tutipute - 通常你必须购买许可证才能在你的应用程序中分发字体(即使它只用于你自己的应用程序),我不知道关于Calibri的规则,如果你有权嵌入字体只需遵循这些步骤:http://msdn.microsoft.com/en-us/library/ms753303.aspx或那些如果你想在Blend中这样做:http://msdn.microsoft.com/en-us/library/cc296385.aspx (2认同)