UWP IoT如何添加自定义字体

时间:2018-09-01 14:49:49

标签: c# fonts uwp

我无法添加自定义字体。我遵循了here的步骤this page,但未使用字体。

我已将字体添加到我的项目中

enter image description here

确实出现在我的设计师视图中

enter image description here

在Windows中打开的字体(用于验证字体名称):

enter image description here

但是当我提到它们时,它们仍未在我的应用程序中使用。我尝试了以下语法

<TextBlock 
    Grid.Column="1" 
    Text="{x:Bind Text}"
    FontFamily="ms-appx:///Assets/Delphi-Soleto_Lt.ttf#Delphi-Soleto Light"/>

或者当我在Designer中选择字体时,由设计师填写

<TextBlock 
    Grid.Column="1" 
    Text="{x:Bind Text}"
    FontFamily="Delphi-Soleto Light"/>

或者按照this site的提议

<TextBlock 
    Grid.Column="1" 
    Text="{x:Bind Text}"
    FontFamily="/Assets/Delphi-Soleto_Lt.ttf#Delphi-Soleto Light"/>

非常感谢您的帮助...!

将GIT存储库上传到:

https://github.com/basprins/CustomFontWinIot

我正在尝试在BulletText.xaml中使用Delphi字体:

    <TextBlock 
        Grid.Column="1" 
        Margin="0, 13, 0, 0"
        Style="{StaticResource Normal}" 
        Text="{x:Bind Text}"
        FontFamily="{StaticResource DefaultFont}"/>

我在首页上添加了BulletText控件,该控件在应用启动时立即可见。

使用空白应用程序更新git repo,该应用程序引用不会显示的字体

在我的PC上,我没有 not 将字体安装到Windows中。我只是将它们添加到项目中。代码见github页面。设计器视图的屏幕截图

enter image description here

4 个答案:

答案 0 :(得分:2)

您不应使用FontFamily属性中的字体粗细索引来引用字体文件。如果需要设置字体粗细,则可以设置FontWeightTextBlock属性。试试这个:

<StackPanel>
    <!--Don't add "Light" in the FontFamily-->
    <TextBlock FontFamily="ms-appx:///Assets/Delphi-Soleto_Lt.ttf#Delphi-Soleto"
               Text="Hello world, this is my test"/>
    <!--Don't add "Thin" in the FontFamily-->
    <TextBlock FontFamily="ms-appx:///Assets/Delphi-Soleto_Th.ttf#Delphi-Soleto"
               Text="Hello world, this is my test"/>
    <!--This is the default font family, set the FontWeight property-->
    <TextBlock Text="Hello world, this is my test" FontWeight="Normal"/>
</StackPanel>

这里是效果:

enter image description here

答案 1 :(得分:0)

在UWP应用程序中使用自定义字体的一种方法是在 App.xaml 中定义:

1-在项目的根目录中创建一个文件夹,并将其命名为“字体”

2-选择自定义字体,然后按 F4 并将 复制到输出目录 设置为 始终复制 >

3-在 App.xaml 文件> Application.Resources 标签> ResourceDictionary 标签中,添加以下代码:

<FontFamily x:Key="DefaultFont">/Fonts/(Your FontName).ttf#(Font Title)</FontFamily>

这样做之后,您可以随时随地在元素中使用字体,如下所示:

<TextBlock Text="Your Sample Text" FontFamily="{StaticResource DefaultFont}"></TextBlock>

答案 2 :(得分:0)

到目前为止,我在winiot / UWP上最大的挣扎...但是这里...

对于要拔头发的其他人的一些考虑。

首先,有可能。但是许多网站都告诉您一个不同的故事,它使原本就过于复杂的功能恕我直言变得过于复杂。

在物联网设备上可视化字体所需完成的步骤:

将字体添加到您的项目中

大多数网站会告诉您的显而易见的第一步。不过有几点评论。

  • 存储字体的位置无关紧要。它们可以位于/ Assets,/ Fonts,/ Assets / Fonts,/ Resources或任何您喜欢的位置。
  • 您不必费心copy to output。定义方式无关紧要。
  • 您确实需要将构建操作保留为Content。这是默认设置,因此您也不必为此烦恼。

请参阅字体系列名称

弄清楚正确的字体名称可能太可怕了。约定如下[字体家族文件路径]#[字体家族名称]。

一个例子是:

Assets/Delphi-Soleto_Lt.ttf#Delphi-Soleto

或使用完整的xaml:

<TextBlock FontFamily="Fonts/Delphi-Soleto_Lt.ttf#Delphi-Soleto" Text="This is Delphi Soleto Light" />

是否使用msappx语法引用路径都没有关系,以下所有定义均适用:

<TextBlock FontFamily="Fonts/Delphi-Soleto_Lt.ttf#Delphi-Soleto" Text="This is Delphi Soleto Light" />

<TextBlock FontFamily="/Fonts/Delphi-Soleto_Lt.ttf#Delphi-Soleto" Text="This is Delphi Soleto Light" />

<TextBlock FontFamily="ms-appx:///Fonts/Delphi-Soleto_Lt.ttf#Delphi-Soleto" Text="This is Delphi Soleto Light" />
字体名称

然后是大字体,即字体名称。重要的是要知道,字体样式应该从字体名称中删除。例如,

  • 字体名称为Delphi-Soleto Light的文件'Delphi-Soleto_Blk.ttf'变为Delphi-Soleto
  • 字体名称为Delphi-Soleto Black的文件'Delphi-Soleto_Blk.ttf'成为Delphi-Soleto
  • 字体名称为Delphi-Soleto App Black的文件'Delphi-Soleto_A_Blk.ttf'成为Delphi-Soleto App

为了节省您的时间,让我从一开始就猜不到,这里有一个工具可以帮助您节省大量时间。注意Windows字体查看器,因为它可能不会显示您需要查看的内容。而是下载免费的dp4 font viewer

如果打开dp4字体查看器并找到保存字体的文件夹,您将看到正确的字体名称。请注意以下屏幕截图中的字体系列名称。

enter image description here

验证所需字体的文本

最后但并非最不重要的一点是,一些网站声称xaml Designer将立即以字体显示文本,这很容易测试。它不会站在我这边做。最终对我有帮助的是,将应用程序部署到目标(在我的情况下为RPI)并在调试器中运行该应用程序时更改XAML。这些更改确实会立即反映在您正在运行的应用中。

最后,我可以看着屏幕,看到字体可视化

enter image description here

我希望这会在那里!特别感谢Breeze Liu抽出宝贵的时间帮助我!

答案 3 :(得分:0)

只需添加2020年末的内容,在针对Windows 10版本1809(内部版本17763)的UWP项目中,我只能通过使用引号将其引用来显示自定义字体,

FontFamily="/Assets/Fonts/PT_Sans/PTSans-Regular.ttf#PT Sans"

如果没有前导斜线或uri以ms-appx:///开头,它将默认为标准字体。在上面拉了几根头发。

构建操作:内容

复制到输出目录:不复制

使用的字体是从Google下载的PTSans-Regular.ttf。