我尝试在我的系统上安装 OTF 字体,但我失败了:
FontFamily family = new FontFamily(name_for_my_font);
我试图在系统中列出我的所有字体,实际上我还没有看到所需的字体:
foreach (FontFamily font in System.Drawing.FontFamily.Families)
{
Console.WriteLine(font);
}
但我可以在字体文件夹中看到我的字体。它具有 OTF 扩展名。也许这就是问题?我只能看到 TTF 字体。但为什么?如何从我的程序中访问OTF字体?
更新:抱歉问题是 OTF 访问但不是 TTF !我在答案中做了更正
答案 0 :(得分:8)
问题是OpenType字体有多种形式,一种基于TrueType轮廓,另一种基于PostScript Type 1轮廓。 Windows GDI +图形API不支持PostScript类型1轮廓。这具有讽刺意味,因为OpenType字体格式是由Microsoft无法从Apple许可某些字体技术而创建的。
因此,如果Windows应用程序基于GDI +,则无法呈现具有PostScript类型1轮廓或PostScript类型1字体的OpenType字体。不幸的是System.Drawing
是使用GDI +实现的。您唯一的选择是使用TrueType轮廓坚持使用字体。
(或者,如果你真的很沮丧,你可以P / Invoke到“经典”GDI并将字体渲染成位图。)
答案 1 :(得分:0)
尝试使用System.Drawing.Text.InstalledFontCollection http://msdn.microsoft.com/en-us/library/system.drawing.text.installedfontcollection.aspx