我在我们的应用中使用自定义字体,并且发现如果我设置FontAttributes =" Bold"对于使用该字体的Label样式,它适用于iOS模拟器,但不适用于真实设备。
采取的步骤: 1.将字体Effra_Std_Reg.ttf添加到 resources 文件夹中。 2.将此添加到 Info.plist 中的由应用程序提供的字体元素并设置其构建操作。 3.在App.XAML中创建样式。 4.在我的页面上将这些样式添加到XAML。
全部以上版本适用于未设置FontAttributes的Label。一旦我设置FontAttributes =" Bold"在Style或Label本身上,系统字体用于insted。注意这适用于模拟器。
我知道FontFamily是ttf文件中定义的字体 Name - 而不是ttf文件名。
这是在运行iOS 10.3.3的iPad上。
我的App.XAML是:
<?xml version="1.0" encoding="utf-8" ?>
<Application x:Class="FontTest.App"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<Application.Resources>
<ResourceDictionary>
<Style TargetType="Label">
<Setter Property="FontSize" Value="30" />
</Style>
<Style x:Key="PlainLabelStyle" TargetType="Label">
<Setter Property="FontFamily">
<Setter.Value>
<OnPlatform x:TypeArguments="x:String"
Android="Effra_Std_Rg.ttf#Effra"
iOS="Effra" />
</Setter.Value>
</Setter>
</Style>
<Style x:Key="BoldLabelStyle" TargetType="Label">
<Setter Property="FontFamily">
<Setter.Value>
<OnPlatform x:TypeArguments="x:String"
Android="Effra_Std_Bd.ttf#Effra"
iOS="Effra" />
</Setter.Value>
</Setter>
<Setter Property="FontAttributes" Value="Bold" />
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
我的页面XAML(摘录)是:
<Label Grid.Row="4"
Grid.Column="1"
Style="{StaticResource BoldLabelStyle}"
Text="QWERTYUIOPASDFGHJKLZXCVBNM" />
答案 0 :(得分:0)
为了让它在设备上运行,我必须包含粗体字体文件(Effra_Std_Bd.ttf),并指定&#39; Effra-Bold&#39;的字体系列。
所以看起来FontFamily需要是 Name 和 Style 。
奇怪它在模拟器上有效。