将font-family从磁盘加载到PrivateFontCollection

时间:2016-10-12 20:51:59

标签: c# gdi+ privatefontcollection

我正在使用以下代码将字体加载到内存中以使用GDI +生成图像:

var fontCollection = new PrivateFontCollection();
fontCollection.AddFontFile(Server.MapPath("~/fonts/abraham-webfont.ttf"));
fontCollection.Families.Count(); // => This line tells me, that the collection has 0 items.

没有例外,但AddFontFile方法运行后,fontCollection Families属性为空,没有任何例外。

我已验证路径有效(File.Exists返回true):

Response.Write(System.IO.File.Exists(Server.MapPath("~/fonts/abraham-webfont.ttf"))); // # => Renders "True"

当我打开文件时,TTF文件似乎工作正常,因此它不是无效的TTF文件: https://dl.dropboxusercontent.com/u/4899329/2016-10-12_22-44-52.png

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

Hans Passant的回答解决了这个问题:

PrivateFontCollection是出了名的flakey。今天非常常见的一种失败模式是该字体实际上是具有TrueType轮廓的OpenType字体。 GDI +仅支持" pure"那些。网上说,亚伯拉罕是OpenType字体。适用于WPF,而不适用于Winforms。