将字体系列从磁盘加载到 PrivateFontCollection
Loading font-family from disk to 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.
没有异常,但是fontCollection Families 属性在AddFontFile
方法有运行无异常后为空
我已验证该路径有效 (File.Exists
returns true
):
Response.Write(System.IO.File.Exists(Server.MapPath("~/fonts/abraham-webfont.ttf"))); // # => Renders "True"
当我打开文件时,TTF 文件似乎工作正常,所以它不是无效的 TTF 文件:
有什么建议吗?
Hans Passant 的回答解决了问题:
PrivateFontCollection 是出了名的古怪。今天很常见的一种故障模式是字体实际上是带有 TrueType 轮廓的 OpenType 字体。 GDI+ 只支持 "pure" 个。鞋子很合脚,网上说 Abraham 是一种 OpenType 字体。适用于 WPF,不适用于 Winforms。
我正在使用以下代码将字体加载到内存中以使用 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.
没有异常,但是fontCollection Families 属性在AddFontFile
方法有运行无异常后为空
我已验证该路径有效 (File.Exists
returns true
):
Response.Write(System.IO.File.Exists(Server.MapPath("~/fonts/abraham-webfont.ttf"))); // # => Renders "True"
当我打开文件时,TTF 文件似乎工作正常,所以它不是无效的 TTF 文件:
有什么建议吗?
Hans Passant 的回答解决了问题:
PrivateFontCollection 是出了名的古怪。今天很常见的一种故障模式是字体实际上是带有 TrueType 轮廓的 OpenType 字体。 GDI+ 只支持 "pure" 个。鞋子很合脚,网上说 Abraham 是一种 OpenType 字体。适用于 WPF,不适用于 Winforms。