XAML 在C#/WinUI 3应用程序中安装自定义字体

zbwhf8kr  于 2023-09-28  发布在  C#
关注(0)|答案(2)|浏览(158)

请帮助我了解如何自定义字体安装在桌面应用程序上的WinUI 3。
我使用了以下安装方法:
1.在App.xaml中定义的字体资源

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/>
        </ResourceDictionary.MergedDictionaries>
        <FontFamily x:Key="AmoreizaBoldFont">/Sources/Fonts/Amoreiza Bold.ttf#Amoreiza</FontFamily>
        <FontFamily x:Key="AmoreizaRegularFont">/Sources/Fonts/Amoreiza.ttf#Amoreiza</FontFamily>
        <FontFamily x:Key="RobotoFont">/Sources/Fonts/Roboto-Regular.ttf#Roboto</FontFamily>
        <FontFamily x:Key="HellowinsFont">/Sources/Fonts/Hellowins.ttf#Hellowins</FontFamily>
        <FontFamily x:Key="YuGothicMediumFont">/Sources/Fonts/YuGothM.ttc#Yu Gothic</FontFamily>
    </ResourceDictionary>
</Application.Resources>

1.然后在MainWindow.xaml中使用这些资源<TextBlock FontFamily="{StaticResource HellowinsFont}" Text="Title"/>
具体来说,在这个例子中,一切都正常。但问题是,我完全不明白它是如何运作的,以及为什么会运作。我一直在寻找一个非常,非常,非常长的时间来找到一个字体名称后的#符号。就像猜谜游戏。我试图使用允许您查看字体更详细属性的应用程序,更具体地说,我使用了dp 4字体查看器应用程序,但它也没有帮助我。在某些情况下,此名称完全不明显,不会出现在此程序中。问题是我怎么知道这个名字一定有办法不陷入猜谜游戏。
第二项质询。作为我的测试结果,我意识到更改字体文件的名称会导致字体无法再次工作。当然,前提是所有路径/名称也已更新。即使使用正确的#FontName。为什么会这样?这里的文件名是如何绑定的?
第三个问题。假设我奇迹般地让前面的代码工作了,但当我试图添加更多字体时:

<FontFamily x:Key="Font1">/Sources/Fonts/Raleway-Italic-VariableFont_wght.ttf#Raleway</FontFamily>
<FontFamily x:Key="Font2">/Sources/Fonts/Raleway-VariableFont_wght.ttf#Raleway</FontFamily>

我又什么都没得到。这些字体是从Google Fonts下载的。文件名未更改。#FontName我已经尝试了一堆不同的,但我找不到任何东西。我用了dp 4字体查看器,但它也没有帮助我。
请解释我做错了什么:)

zvokhttg

zvokhttg1#

我怎么会知道这个名字一定有办法不陷入猜谜游戏。
这个链接可能会有帮助。通常,它是Title属性,没有Font Style,如 RegularBold(如果有的话)。您可以通过右键单击 *.ttf文件并选择 * 属性 *,然后选择 * 详细信息 * 来查看标题
第二项质询。作为我的测试结果,我意识到更改字体文件的名称会导致字体无法再次工作。当然,前提是所有路径/名称也已更新。即使使用正确的#FontName。为什么会这样?这里的文件名是如何绑定的?
您可以使用文件资源管理器更改 *.ttf文件名。我的第一个猜测是,您正在文件资源管理器中更改文件名,而不是在Visual Studio的解决方案资源管理器中更改。
第三个问题。假设我奇迹般地让前面的代码工作了,但当我试图添加更多字体时:我又什么都没得到。
确保新 *.ttf文件的Build Action设置为Content

nhn9ugyo

nhn9ugyo2#

参考:https://learn.microsoft.com/en-us/answers/questions/1195617/how-to-use-my-downloaded-fonts-in-winui-3
1.我可以在 *Windows字体查看器 * 中找到字体名称。

  1. 1.我不能复制。

<FontFamily x:Key="Font1">/Assets/static/DancingScript-Bold.ttf#Dancing Script</FontFamily>
        <FontFamily x:Key="Font2">/Assets/static/DancingScript-Medium.ttf#Dancing Script</FontFamily>
        <FontFamily x:Key="Font3">/Assets/static/DancingScript-Regular.ttf#Dancing Script</FontFamily>
        <FontFamily x:Key="Font4">/Assets/static/DancingScript-SemiBold.ttf#Dancing Script</FontFamily>
        <FontFamily x:Key="Font5">/Assets/static/BricolageGrotesque_28pt_SemiCondensed-Bold.ttf#Bricolage Grotesque 28pt SemiCondensed</FontFamily>
        <FontFamily x:Key="Font6">/Assets/static/BricolageGrotesque_Condensed-Bold.ttf#Bricolage Grotesque Condensed</FontFamily>
        <FontFamily x:Key="Font7">/Assets/static/BricolageGrotesque-Bold.ttf#Bricolage Grotesque</FontFamily>

<StackPanel>
        <TextBlock FontFamily="{StaticResource Font1}" Width="400" Text="Sample text formatting runs"></TextBlock>
        <TextBlock FontFamily="{StaticResource Font2}" Width="400" Text="Sample text formatting runs"></TextBlock>
        <TextBlock FontFamily="{StaticResource Font3}" Width="400" Text="Sample text formatting runs"></TextBlock>
        <TextBlock FontFamily="{StaticResource Font4}" Width="400" Text="Sample text formatting runs"></TextBlock>
</StackPanel>

相关问题