如何在Windows Universal应用程序中使用自定义字体?

fan*_*k78 13 c# fonts xaml windows-phone-8.1 win-universal-app

就像我的其他Windows Phone 8项目一样,我想使用自定义字体.但是使用新的通用应用程序架构,我很难将其付诸实施.

我在共享项目中创建了一个"Fonts"文件夹,我将具有Build Action属性的字体文件添加到"Content".

我还在共享项目中创建了一个"Themes"文件夹,并为其添加了一个ResourceDictionnary("Generic.xaml").

我添加了一个FontFamily资源:

<FontFamily x:Key="RexBoldFontFamily">/Fonts/Rex Bold.otf#Rex Bold</FontFamily>
Run Code Online (Sandbox Code Playgroud)

我在App.xaml中引用它是这样的:

<Application.Resources>

    <ResourceDictionary>

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Themes/Generic.xaml"/>
        </ResourceDictionary.MergedDictionaries>

        <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="true" />

    </ResourceDictionary>

</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

在我的Windows Phone项目的MainPage.xaml中,我试图像这样使用它:

<TextBlock Text="{Binding HelloWorld}" Foreground="{ThemeResource RedBrush}" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="{StaticResource RexBoldFontFamily}" FontSize="22"/>
Run Code Online (Sandbox Code Playgroud)

我知道这是字体的名称,因为这适用于我的一个Windows手机应用程序.所有这一切都很好,因为它适用于色彩资源.

任何人都成功共享字体并使用它,

Igo*_*lic 15

你做得很好,除了字体名称('#'后面的部分).它似乎是Rex,而不是Rex Bold.

<FontFamily x:Key="RexBoldFontFamily">/Fonts/Rex Bold.otf#Rex</FontFamily>
Run Code Online (Sandbox Code Playgroud)

  • 重要的是要理解这部分#Rex是字体的首选系列.对于某些字体来说,要想做到这一点真的很难.如果有疑问,你可以随时查看这篇博文:http://www.blendrocks.com/code-blend/2015/01/04/a-complete-guide-to-working-with-custom-fonts-in-your -Windows和窗口,电话应用程序 (4认同)
  • 这个博客救了我的命。谢谢! (2认同)