【问题标题】:WPF does not render Windows OpenType font nameWPF 不呈现 Windows OpenType 字体名称
【发布时间】:2013-08-17 18:56:35
【问题描述】:

我无法弄清楚如何确定如何在 WPF(.NET 4.5 / VS2012 / Windows 8)中正确呈现特定的 OpenType 字体。我的电脑上安装了一种名为“DINPro-BlackItalic”的字体。

文件名为:DINPro-BlackItalic.otf

Windows 报告字体名称为:DINPro-BlackItalic

在 WPF 中,我做了一些简单的事情,如下所示:

<TextBlock Text="This is a sample sentence in DINPro-BlackItalic"
               FontFamily="DinPro-BlackItalic" FontSize="24" />

FontFamily="#DinPro-BlackItalic"

这不起作用(显然不是斜体),它回退到默认字体。我已经尝试了许多其他变体,它们适用于字体目录中的其他字体。

例如,Comic Sans 的作品:FontFamily="Comic Sans MS"(太棒了...)

现在,这就是我真正感到困惑的原因:如果我只是猜测另一种标点字体名称的方式,它会正确呈现!

这可行:FontFamily="Din Pro Black Italic"

总之,这是 WPF 中不同 FontFamily 设置的屏幕截图:

两个问题:

1) 我应该如何猜测以正确的方式告诉 WPF 呈现此字体?它必须在某处注册一个规范名称,但它在文件名、文件属性或 Windows 解析文件后报告的字体名称中不可见。

2) 更糟糕的是,如果我尝试在桌面应用程序和 Web 上呈现相同的字体,Windows 甚至 IE 上的 Chrome 等浏览器会期望“DINPro-BlackItalic”和不会呈现名称的间隔版本。似乎 WPF 和 Windows 浏览器互斥决定使用哪个字体名称来索引字体。对于任意字体,我该如何解决这个问题?

【问题讨论】:

    标签: wpf fonts render


    【解决方案1】:

    您可以将字体与应用程序一起打包,您可以从项目目录中引用它。 假设您将字体放在项目的字体目录中。

    可以如下添加,

    <TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#DinPro-BlackItalic”/>
    

    因此,您可以确定字体与应用程序一起部署。

    【讨论】:

      【解决方案2】:

      好的,我想我找到了解决方案..

      <TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#Din Pro”/>
      

      <TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#Din Pro Black Italic”/>
      

      没有试过你的代码,但这似乎对我有用..引用文件的路径+字体名

      Opentype 文件具有它们共享的通用名称。这就是它变得棘手的地方,因为如果你在你的电脑上安装了字体,你只能看到这个名字,并在家族树中检查它。就像你之前在你的问题中展示的那样:

      FontFamily="Din Pro Black Italic"
      

      这是我的经验,不是 100% 确定我是正确的,只是它对我有用 :)

      【讨论】:

        【解决方案3】:

        对于 WPF,最好与设计器一起尝试为 Textblock 选择字体

        对于浏览器,可以尝试使用 Label 或任何其他 UI 控件来显示。

        【讨论】:

          【解决方案4】:

          适合我的语法是:

          /{Application Name};component/{Font Folder in Project}/#{Font Name (not filename)}
          

          例子:

          /ApplicationName;component/Fonts/#Proxima Nova Lt
          

          【讨论】:

            猜你喜欢
            • 2017-02-19
            • 2018-11-01
            • 2016-11-04
            • 2020-07-29
            • 2022-06-14
            • 2020-12-27
            • 2023-03-25
            • 2015-09-22
            • 2012-09-03
            相关资源
            最近更新 更多