如何确定已安装字体的操作系统文件名?

发布于 2024-07-15 02:40:13 字数 365 浏览 3 评论 0原文

我们使用第三方 PDF 生成器库,该库要求您在使用默认 PDF 标准中的 14 种左右字体以外的字体时指定 TrueType 或 Type1 文件名。

因此,如果我想使用 Bitstream Arrus Bold,我必须知道引用 arrusb.ttf

除了枚举字体文件夹中的所有文件并创建一次性 PrivateFontCollection 来提取关系之外,有没有办法从字体信息中获取底层字体名称,即给定 Courier New、Bold、Italic 派生 CourBI.ttf ?

我已经查看了InstalledFontCollection,但什么也没有。

We use a third-party PDF Generator library which requires that you specify the TrueType or Type1 file name when using a font other than the 14 or so that are part of the default PDF standard.

So if I want to use Bitstream Arrus Bold I have to know to reference arrusb.ttf.

Short of enumerating all of the files in the font folder and creating a disposable PrivateFontCollection to extract the relationships, is there a way to obtain the underlying font name from font information, i.e. given Courier New, Bold, Italic derive CourBI.ttf?

I've already looked at the InstalledFontCollection and there's nothing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吲‖鸣 2024-07-22 02:40:13

如果您不介意在注册表中查看,请看一下

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts

它有像

Name = "Arial (TrueType)"
Data = "arial.ttf"

这样的对您可以执行必要的查询,如下所示:

static RegistryKey fontsKey =
    Registry.LocalMachine.OpenSubKey(
        @"Software\Microsoft\Windows NT\CurrentVersion\Fonts");

static public string GetFontFile(string fontName)
{
    return fontsKey.GetValue(fontName, string.Empty) as string;
}

GetFontFile("Arial (TrueType)") 的调用返回"arial.ttf"

您当然可以修改代码以将 (TrueType) 部分附加到 fontName,或者查看返回的所有内容通过 fontsKey.GetValueNames() 找到最佳匹配。

If you don't mind poking around in the registry, take a look at

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts

It has pairs like

Name = "Arial (TrueType)"
Data = "arial.ttf"

You can do this the necessary queries like this:

static RegistryKey fontsKey =
    Registry.LocalMachine.OpenSubKey(
        @"Software\Microsoft\Windows NT\CurrentVersion\Fonts");

static public string GetFontFile(string fontName)
{
    return fontsKey.GetValue(fontName, string.Empty) as string;
}

A call to GetFontFile("Arial (TrueType)") returns "arial.ttf"

You could of course modify the code to append the (TrueType) portion to the fontName, or to look through everything returned by fontsKey.GetValueNames() to find the best match.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文