我正在使用以下代码将字体加载到内存中以使用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文件:
有什么建议吗?
答案 0 :(得分:1)
Hans Passant的回答解决了这个问题:
PrivateFontCollection是出了名的flakey。今天非常常见的一种失败模式是该字体实际上是具有TrueType轮廓的OpenType字体。 GDI +仅支持" pure"那些。网上说,亚伯拉罕是OpenType字体。适用于WPF,而不适用于Winforms。