访问OTF字体

时间:2012-05-14 12:16:50

标签: c# fonts true-type-fonts

我尝试在我的系统上安装 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 !我在答案中做了更正

2 个答案:

答案 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)