WPF-按字体名称访问Roboto字体时出现问题
我已经从下载了Roboto字体。 在我的应用程序中,我需要使用三种Roboto字体:WPF-按字体名称访问Roboto字体时出现问题,wpf,xaml,fonts,truetype,roboto,Wpf,Xaml,Fonts,Truetype,Roboto,我已经从下载了Roboto字体。 在我的应用程序中,我需要使用三种Roboto字体: 机器人黑体 机器人培养基 机器人正规 但是在我的WPF应用程序中,我很难识别如何通过字体名称访问正确的字体。 如果我在窗口的字符映射应用程序中打开每个字体文件,我可以看到我认为的字体名称。这些是: File-name Font name =============================== Roboto-Bold.ttf Roboto Roboto-Medium
- 机器人黑体
- 机器人培养基
- 机器人正规
字符映射
应用程序中打开每个字体文件,我可以看到我认为的字体名称。这些是:
File-name Font name
===============================
Roboto-Bold.ttf Roboto
Roboto-Medium.ttf Roboto Lt
Roboto-Regular.ttf Roboto
请注意,Robot Bold
和Roboto Regular
具有相同的字体名
因此,我对如何在WPF应用程序中访问正确的字体感到困惑
在我的VisualStudio项目中,我创建了一个名为font
的文件夹。这三个字体文件放置在该文件夹中,字体文件包含在我的项目中。生成操作
设置为每个字体文件的资源
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>
我已经在设计器中包含了应用程序的图像
注意,有些文本块的字体有一些变化。
这些变化是我无法理解的
- asdf1:似乎被字体Roboto改变了。如果这是Roboto Bold或Roboto Regular,则未知
- asdf2:似乎没有改变
- asdf3:自然与asdf1相同
- asdf4:我试过使用
,但没有成功Roboto Bold
- asdf5:由于某种原因,
。但是没有名为Roboto媒体
的字体文件Roboto Medium
- asdf6:我试过使用
,但没有成功Roboto Regular
- asdf7:只是为了比较。似乎与
、asdf2
和asdf4
的字体相同asdf6
有没有关于如何清除这一混乱的建议?我添加了另一个文本块,在我的ASDF1文本块下面,但没有字体和相同的文本。 我看到了一些不同。 所以字体实际上是有用的。 谢谢@uuddlrss
仍然奇怪的是,
Roboto Bold
和Roboto Regular
具有相同的字体名称。在示例图像中,默认字体与Roboto非常相似。如果你在某个时候重新运行它,可能会使用时间或者类似的更清晰的东西,只是为了更容易地区分它们?很抱歉,我无法回答您的实际问题:(我认为如果字体名称相同,您可以通过fontwweight
属性访问更多选项