问题描述
我从dafunt.com下载了Roboto字体。 在我的应用程序中,我需要使用三种Roboto字体:
- Roboto Bold
- Roboto Medium
- Roboto Regular
但是我在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>
我已经在设计器中包含了应用程序的图像。
请注意,某些TextBlocks的字体有所不同。 这些变化是我无法理解的。
-
asdf1:似乎已被Roboto字体更改。如果这是Roboto-Bold或Roboto-Regular,则未知。
-
asdf2:似乎保持不变。
-
asdf3:自然与
asdf1
相同。 -
asdf4:我尝试使用
Roboto Bold
,但没有用。 -
asdf6:我尝试使用
Roboto Regular
,但是没有用。 -
asdf7:仅供比较。似乎与
asdf2
,asdf4
和asdf6
相同。
这是如此令人困惑。 我确定我使用正确的语法来引用XAML代码中的字体文件。但是由于字体名称看起来不太可靠,所以我不确定我的TextBlocks中使用了哪种字体。
关于如何清除此混乱的任何建议?
解决方法
我添加了另一个TextBlock,下面是我的ASDF1 TextBlock,但是没有Font和相同的Text。 我能够看到一些区别。 因此,字体实际上可以工作。 谢谢@UuDdLrLrSs。
奇怪的是,Roboto-Bold
和Roboto-Regular
具有相同的字体名称。