TextBox-> FontFamily = ref new FontFamily(“Arial”);给我Arial Narrow,而不是Arial

时间:2013-08-29 20:14:00

标签: fonts textbox windows-store-apps font-family

如果我使用以下代码行设置Windows::UI::Xaml::Controls::TextBox的字体:

textBox->FontFamily = ref new Windows::UI::Xaml::Media::FontFamily("Arial");

在x86模拟器上的

,我得到一个带有Arial字体的TextBox。大。

如果我在Surface RT设备上执行相同的代码行,我会得到一个带有Arial Narrow字体的TextBox。不太好。

我检查了我的设备以确保安装了Arial字体。它是。在我的设备上,我启动了WORD并开始在Arial中创作,我的角色确实是Arial(而不是Arial Narrow)角色。是否有一些技巧我应该知道让我的TextBox使用Arial字体?我试图用FontStretch财产愚弄它的价值,但它根本没有效果。

2 个答案:

答案 0 :(得分:0)

在xaml中完成。

我的意思是。

<TextBlock FontFamily="Arial"/>

或创建一个resurce:

<Page.Resource>
   <Style x:Key="BasicTextStyle" TargetType="TextBlock">
       <Setter Property="FontFamily" Value="Arial"/>
   </Style>
</Page.Resource>

虽然直接分配给对象的属性会覆盖全局样式

答案 1 :(得分:0)

显式强制字体选择的一种方法是使用Text Object Model接口(http://msdn.microsoft.com/en-us/library/windows/desktop/bb774052(v=vs.85).aspx)将FontStretch属性设置为Normal。通过这样做,保证始终使用Arial字体(不是Arial Narrow字体)。我希望这有帮助!

在XAML / C ++中

ITextDocument^ doc = myControl->Document;
ITextCharacterFormat^ format = doc->GetDefaultCharacterFormat();
format->FontStretch = Windows::UI::Text::FontStretch::Normal;
doc->SetDefaultCharacterFormat(format);

或者在XAML / C#中

ITextDocument doc = myControl.Document;
ITextCharacterFormat format = doc.GetDefaultCharacterFormat();
format.FontStretch = Windows.UI.Text.FontStretch.Normal;
doc.SetDefaultCharacterFormat(format);