我无法确定如何在WPF中正确呈现特定的OpenType字体(.NET 4.5 / VS2012 / Windows 8)。我的电脑上安装了一种名为“DINPro-黑色意大利”的字体。
文件名为: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工作:FontFamily="Comic Sans MS" (可怕的.)
现在,这就是为什么我真的很困惑:,如果我只是猜测一个不同的方式标点符号的字体名称,它正确地呈现!
这工作:FontFamily="Din Pro Black Italic"
总之,下面是WPF中不同FontFamily设置的屏幕截图:

两个问题:
1)我应该如何猜出正确的方式来告诉WPF来呈现这个字体?它必须在某个地方注册了规范名称,但是它在文件名、文件属性或Windows解析文件后报告的字体名称中是不可见的。
2)更糟糕的是,如果我试图在桌面应用程序和网络上呈现相同的字体,像Windows ,甚至IE这样的浏览器都会期望“DINPro-Black意大利语”,不会呈现出这个名字的间隔版本。WPF和windows浏览器似乎使相互排斥的决定使用哪个字体名来索引字体。对于任意字体,我如何解决这个问题?

发布于 2013-10-01 04:44:39
您可以将字体与应用程序一起打包,也可以从项目目录中引用它。如果您将字体放置在项目中的字体目录中,请说明。
您可以添加如下,
<TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#DinPro-BlackItalic”/>因此,您可以确定,字体将与应用程序一起部署。
发布于 2014-03-10 13:43:11
好的,我想我找到了解决办法..。
<TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#Din Pro”/>或
<TextBlock FontFamily=”/Fonts/DINPro-BlackItalic.otf#Din Pro Black Italic”/>没有试过你的代码,但这似乎对我有用.引用file+fontname的路径
Opentype文件有一个它们共享的逗号。这是它变得棘手的地方,因为你只能看到这个名字,如果你安装在你的电脑上的字体,并检查它的家庭树。就像你之前在你的问题中所展示的:
FontFamily="Din Pro Black Italic"这是我的经验,不是百分之百确定我是对的,只是它对我有用:)
发布于 2013-10-01 04:33:24
对于WPF,最好使用设计器来选择Textblock的字体。
对于浏览器,可以尝试使用Label或任何其他UI控件来显示。
https://stackoverflow.com/questions/18255174
复制相似问题