Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF-按字体名称访问Roboto字体时出现问题_Wpf_Xaml_Fonts_Truetype_Roboto - Fatal编程技术网

WPF-按字体名称访问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

我已经从下载了Roboto字体。 在我的应用程序中,我需要使用三种Roboto字体:

  • 机器人黑体
  • 机器人培养基
  • 机器人正规
但是在我的WPF应用程序中,我很难识别如何通过字体名称访问正确的字体。 如果我在窗口的
字符映射
应用程序中打开每个字体文件,我可以看到我认为的字体名称。这些是:

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
    的字体相同

这太令人困惑了。 我确信我使用了正确的语法来引用XAML代码中的字体文件。但由于字体名称似乎不太可靠,我不确定文本块中使用了哪些字体


有没有关于如何清除这一混乱的建议?

我添加了另一个文本块,在我的ASDF1文本块下面,但没有字体和相同的文本。 我看到了一些不同。 所以字体实际上是有用的。 谢谢@uuddlrss


仍然奇怪的是,
Roboto Bold
Roboto Regular
具有相同的字体名称。

在示例图像中,默认字体与Roboto非常相似。如果你在某个时候重新运行它,可能会使用时间或者类似的更清晰的东西,只是为了更容易地区分它们?很抱歉,我无法回答您的实际问题:(我认为如果字体名称相同,您可以通过
fontwweight
属性访问更多选项