C# 如何在Xamarin表单中使用重字体?

C# 如何在Xamarin表单中使用重字体?,c#,xaml,xamarin,fonts,xamarin.forms,C#,Xaml,Xamarin,Fonts,Xamarin.forms,我试图在XAML中使用Avenir Next Heavy字体 FontAttributes没有用于Heavy的选项,因此我使用Avenir Next Heavy导入了一个.ttf文件。尽管只包含重型字体,.ttf文件显示为普通字体,但在FontAttributes中未显示重型选项。您应该使用FontFamily而不是FontAttributes。如果你在那里读到这篇文章,你会看到他们正在创建像BoldFont、NormalFont这样的样式,并用这种样式映射他们的自定义字体 <Resour

我试图在XAML中使用Avenir Next Heavy字体


FontAttributes没有用于Heavy的选项,因此我使用Avenir Next Heavy导入了一个.ttf文件。尽管只包含重型字体,.ttf文件显示为普通字体,但在FontAttributes中未显示重型选项。

您应该使用FontFamily而不是FontAttributes。如果你在那里读到这篇文章,你会看到他们正在创建像BoldFont、NormalFont这样的样式,并用这种样式映射他们的自定义字体

<ResourceDictionary>
    <OnPlatform x:TypeArguments="x:String" x:Key="HeavyFont">
        <On Platform="Android" Value="YourFont-Heavy.ttf#YourFont" />
        <On Platform="iOS" Value="OpenSans-Bold" />
    </OnPlatform>
    <OnPlatform x:TypeArguments="x:String" x:Key="RegularFont">
        <On Platform="Android" Value="YourFont-Regular.ttf#YourFont" />
        <On Platform="iOS" Value="OpenSans-Regular" />
    </OnPlatform>
</ResourceDictionary>
在创建标签或设置字体时,您会喜欢:

<StackLayout>
    <Label text="Helloworld heavy" FontFamily="{StaticResource HeavyFont}" />
    <Label text="Helloworld normal" FontFamily="{StaticResource NormalFont}" />
</StackLayout>
确保在特定于平台的项目中添加字体。如果你读了那篇文章,你应该会很好。资源字典,如果您想在全局范围内定义它,您可以在App.Xaml中定义它;如果您只需要在那个范围内定义它,您可以直接在ContentPage/视图内定义它

更新:如果您使用的是Xamarin.Forms 4.5.530及更高版本 -Xamarin表单中有新的更新以支持嵌入式字体。您是对的,您不必将字体复制粘贴到您的平台细节中,并尝试查找Android、iOS字体系列名称-您只需使用嵌入的字体文件名并指定要调用该字体的任何别名:

将字体复制到共享项目的任何目录中。 按如下方式注册字体:

[程序集:ExportFontRukmini-bold.ttf,别名=MyRukminiBoldFont]


就这样。您现在可以像以前一样使用字体了。如果您遇到问题。

我尝试了以上两种方法。第一个链接介绍字体属性等。不幸的是,这没有帮助,因为FontAttributes只允许正常、粗体和斜体。找不到Heavy。@FabriBertani作为我的问题详细信息,我试图添加自定义字体,但仍然无法访问其Heavy属性,尽管字体是重字体。由于您没有重属性,您可以创建一个自定义字体并添加它,或者仅使用重字体获得.ttf。这是我做的。它不起作用。在android中,您应该完全匹配字体名称,包括符号YourFont-heavy.ttfYourFont后的文本。决定为我的字体使用不同的文件。ttf突然间,它起了作用。感谢Nirmal。自Xamarin.Forms 4.5.530及更高版本以来,无需指定平台,也无需向每个本机项目添加字体文件。这里有一个很棒的指南@chri3g91,你说得对。我会更新答案,以防有人搜索。谢谢你提供的信息。