如何根据字体文件获取字体系列的名称?

Rob*_*cks 3 .net c# fonts metadata file

我有一组具有不可预知的文件名的字体文件,因此我无法从文件名中推断出真正的"字体系列"名称.因此,我需要读取字体元数据以提取真正的"字体系列"名称,以便呈现此字体文件.我在C#.NET 4.0 WinForms.

我已经看过这个函数,GetFontInformation但我似乎无法找到相同的P/Invoke标题.我所拥有的只是C++版本,老实说很难搞清楚.有任何想法吗?

我无法使用PrivateFontCollection该类为我解析字体文件的原因是这些是OTF字体而.NET/GDI +仅支持TTF字体!

PaR*_*RaJ 5

您需要向(PrivateFontCollection)添加字体,然后请求FontFamily并获取其Name属性.

private static string GetFontNameFromFile(string filename)
{
    PrivateFontCollection fontCollection = new PrivateFontCollection();
    fontCollection.AddFontFile("path_to_font");
    return fontCollection.Families[0].Name;
}
Run Code Online (Sandbox Code Playgroud)

需要的命名空间:

using System.Drawing;
using System.Drawing.Text;
Run Code Online (Sandbox Code Playgroud)

  • 此方法适用于**TTF**字体,但不适用于**OTF**字体. (4认同)
  • @Geotarget那不是真的.它也适用于OTF字体. (2认同)
  • 我已经广泛使用字体,我可以确认.NET不支持OTF字体(或者更确切地说,OpenType格式化字体,有时候OTF字体实际上有TTF数据,哪个有效) (2认同)