【问题标题】:How do I get the name of the Font Family given the font file?给定字体文件,如何获取字体系列的名称?
【发布时间】:2020-01-07 21:13:28
【问题描述】:

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

我已经看到函数GetFontInformation,但我似乎找不到相同的 P/Invoke 标头。我所拥有的只是C++ version,这真的很难弄清楚。有什么想法吗?

我不能使用 PrivateFontCollection 类为我解析字体文件的原因是这些是 OTF 字体并且 .NET/GDI+ 仅支持 TTF字体!

【问题讨论】:

标签: c# .net file fonts metadata


【解决方案1】:

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

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

需要的命名空间:

using System.Drawing;
using System.Drawing.Text;

【讨论】:

  • 此方法适用于 TTF 字体,但不适用于 OTF 字体。
  • @Geotarget 这不是真的。它也适用于 OTF 字体。
  • 你试了也没用。这是不可能的,因为 .NET 不支持 OTF,因为 GDI+ 只支持 TTF 或其他东西。 codeproject.com/Tips/557423/… stackoverflow.com/questions/6766670/… .. 谷歌搜索:google.co.in/…
  • 我已经广泛使用字体,我可以确认 .NET 将不支持 OTF 字体(或者更确切地说,OpenType 格式的字体,有时 OTF 字体实际上包含 TTF 数据,这是可行的)
  • 适用于“FontAwesome.otf”,它似乎是一种 OpenType 字体。具体来说,Windows 字体预览表示它包含“PostScript 大纲”。其他字体有不同的组合,例如“GLYPHICONS Halflings”包含“OpenType Layout, TrueType Outlines”。
【解决方案2】:

只需打开(双击)其中一个字体文件,您将看到如下内容:-

【讨论】:

    猜你喜欢
    • 2011-01-14
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2013-09-20
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多