fonts - 如何为自定义 FontFamily 添加权重?

标签 fonts uwp uwp-xaml font-family

我有来自同一个系列的多个 .ttf 文件,例如:

MyFont.ttf
MyFont_Bold.ttf
MyFont_Light.ttf
MyFont_Medium.ttf

如果我想使用每个权重,我应该像这样将主题定义为单独的 FontFamily:
<FontFamily x:Key="MyFont">
    ms-appx:///Fonts/MyFont.ttf#MyFont
</FontFamily>
<FontFamily x:Key="MyFont_Bold">
    ms-appx:///Fonts/MyFont_Bold.ttf#MyFont
</FontFamily>
<FontFamily x:Key="MyFont_Light">
    ms-appx:///Fonts/MyFont_Light.ttf#MyFont
</FontFamily>
<FontFamily x:Key="MyFont_Medium">
    ms-appx:///Fonts/MyFont_Medium.ttf#MyFont
</FontFamily>

并使用它们:
<TextBlock FontFamily="{StaticResource MyFont}" />
<TextBlock FontFamily="{StaticResource MyFont_Bold}" />
<TextBlock FontFamily="{StaticResource MyFont_Light}" />
<TextBlock FontFamily="{StaticResource MyFont_Medium}" />

有没有办法像这样使用主题:
<TextBlock FontFamily="{StaticResource MyFont}" />
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Bold" />
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Light" />
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Medium" />

最佳答案

TextBlock 有一个 TextBlock.FontWeight property 。使用此属性,我们可以为 TextBlock 设置字体粗细。因此,您可以使用如下代码:

<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Bold">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Light">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>
<TextBlock FontFamily="{StaticResource MyFont}" FontWeight="Medium">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>

但是,在使用自定义字体时,字符轮廓的粗细是根据您设置的字体计算的。它不能根据 FontWeight 使用相应的字体文件。计算出的粗细可能与自定义字体中的粗细不同。例如:

<TextBlock FontFamily="Assets/Fonts/consola.ttf#Consolas" FontSize="36">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>
<TextBlock FontFamily="Assets/Fonts/consolab.ttf#Consolas" FontSize="36">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>
<TextBlock FontFamily="Assets/Fonts/consola.ttf#Consolas" FontSize="36" FontWeight="Bold">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>

在上面的示例中,“consola.ttf”是具有常规字体粗细的字体文件,“onsolab.ttf”是具有粗体粗细的字体文件。在第三个 TextBlock 中,我使用了常规字体文件并将 FontWeight 设置为 Bold 。输出如下所示:
enter image description here

FontWeight 设置为 Bold 后可以看到,字符轮廓的粗细较大,但与使用粗体粗细字体文件的粗细不同。所以你可能需要根据你的实际场景来考虑是使用FontWeight还是不同的字体文件。

关于fonts - 如何为自定义 FontFamily 添加权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40757482/

相关文章:

vb.net - RichTextBox - 即使在粘贴后也保留原始格式(字体)

css - 在 Mac 上工作并在 Windows 上显示为 times new roman 在开发模式下的字体

c# - 无法编译Xamarin UWP应用

xaml - 在 UWP 中的应用程序级别调整焦点视觉属性

c# - UWP DatagramSocket 多播

ios - 如何在不更改xcode中的字体系列的情况下更改标签的字体大小

XAML Grid.ColumnSpan 到左侧

uwp - 如何更改 UWP TabViewItem 角半径?

c# - 如何从 DataTemplate 获取 XAML 控件的值

html - @font-face - 奇怪的 CSS 字体请求 URL