我无法弄清楚如何确定如何在 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 浏览器对使用哪个字体名称来索引字体做出相互排斥的决定。对于任意字体,我该如何解决这个问题?