我已经从dafunt.com下载了 Roboto 字体。在我的应用程序中,我需要使用三种 Roboto 字体:
- Roboto 粗体
- 机器人中号
- Roboto 常规
但我无法确定如何在我的 WPF 应用程序中通过字体名称访问正确的字体。如果我在 Window 的Character map
应用程序中打开每个字体文件,我可以看到我认为的字体名称。这些是:
File-name Font name
===============================
Roboto-Bold.ttf Roboto
Roboto-Medium.ttf Roboto Lt
Roboto-Regular.ttf Roboto
注意Robot-Bold
并Roboto-Regular
具有相同的字体名称。
所以我对如何在我的 WPF 应用程序中访问正确的字体感到困惑。
在我的 Visual Studio 项目中,我创建了一个名为Fonts
. 这三个字体文件放在那个文件夹中,字体文件包含在我的项目中。每个字体文件的Build Action
设置为Resource
。
XAML 代码
<Window x:Class="Main.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Main"
xmlns:fa="http://schemas.fontawesome.io/icons/"
mc:Ignorable="d"
Loaded="Window_Loaded"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style x:Key="RobotoBold">
<Setter Property="TextElement.FontFamily" Value="pack://application:,,,/Main;component/Fonts/#Roboto" />
</Style>
<Style x:Key="RobotoMedium">
<Setter Property="TextElement.FontFamily" Value="pack://application:,,,/Main;component/Fonts/#Roboto Lt" />
</Style>
<Style x:Key="RobotoRegular">
<Setter Property="TextElement.FontFamily" Value="pack://application:,,,/Main;component/Fonts/#Roboto" />
</Style>
<Style x:Key="RobotoBoldV2">
<Setter Property="TextElement.FontFamily" Value="pack://application:,,,/Main;component/Fonts/#Roboto Bold" />
</Style>
<Style x:Key="RobotoMediumV2">
<Setter Property="TextElement.FontFamily" Value="pack://application:,,,/Main;component/Fonts/#Roboto Medium" />
</Style>
<Style x:Key="RobotoRegularV2">
<Setter Property="TextElement.FontFamily" Value="pack://application:,,,/Main;component/Fonts/#Roboto Regular" />
</Style>
</Window.Resources>
<StackPanel Orientation="Vertical">
<TextBlock Text="asdf1" Style="{StaticResource RobotoBold}" />
<TextBlock Text="asdf2" Style="{StaticResource RobotoMedium}" />
<TextBlock Text="asdf3" Style="{StaticResource RobotoRegular}" />
<Separator Height="6" Visibility="Hidden" />
<TextBlock Text="asdf4" Style="{StaticResource RobotoBoldV2}" />
<TextBlock Text="asdf5" Style="{StaticResource RobotoMediumV2}" />
<TextBlock Text="asdf6" Style="{StaticResource RobotoRegularV2}" />
<Separator Height="6" Visibility="Hidden" />
<TextBlock Text="asdf7" />
</StackPanel>
</Window>
我在 Designer 中包含了应用程序的图像。
请注意,某些 TextBlock 的字体有一些变体。这些变化是我无法理解的。
asdf1:似乎已经被字体 Roboto 改变了。这是 Roboto-Bold 还是 Roboto-Regular 未知。
asdf2:似乎没有改变。
asdf3:自然是一样的
asdf1
。asdf4:我试过了,
Roboto Bold
但没有用。asdf5:由于某种原因
Roboto Medium
有效。但是没有名称为Roboto Medium
.asdf6:我试过了,
Roboto Regular
但没有用。asdf7:只是为了比较。似乎与
asdf2
,asdf4
和的字体相同asdf6
。
这太令人困惑了。我确定我使用正确的语法来引用 XAML 代码中的字体文件。但由于字体名称似乎不太可靠,我不确定我的 TextBlocks 中使用了哪些字体。
关于如何清除这个烂摊子的任何建议?