gpt4 book ai didi

c++ - 通过 WinAPI 提取字体版本

转载 作者:行者123 更新时间:2023-11-30 02:37:09 25 4
gpt4 key购买 nike

Windows 控制面板字体窗口通常会显示字体的版本信息。例如

 Font Name: Fontawesome
Version: Version 4.3.0 2015

我已经在 Windows API 和 SO 中进行了搜索,但我还没有设法找到如何以编程方式提取它。

有什么想法吗?

最佳答案

请注意,如果您谈论的是字体预览程序;那不是“Windows”,它实际上只是一个与操作系统捆绑在一起的小型实用程序。为了向您显示该信息,它引用了字体的 name 表( spec here, for understanding its structure ,每个 record id 的语义在“名称 ID”部分中进行了解释)中的信息。

要自己访问此数据,请使用 DirectWrite(不是 GDI,因为它古老且过时)IDWriteFontFace::TryGetFontTable方法,并获取对 name 表的引用,每个有效的 OpenType 字体都包含该表。然后根据命名表的规范提取您需要的值。

需要明确的是:两者 ttfotf 字体都是 OpenType 字体,第一个只是“带有使用 TrueType 编码的轮廓的 OpenType表格布局”,第二个是“带有使用 CFF 数据 block 编码的轮廓的 OpenType”。如果您不知道这两者之间的区别是什么,那是因为区别无关紧要:就好像我们决定将 PNG 文件称为 nilili 文件一样取决于他们是否使用隔行扫描。

(ttf 文件扩展名早于 OpenType 规范本身,因此当每个人都切换到 OpenType 字体时,保留扩展名是为了向后兼容。几十年后,事实证明它更容易只是继续这样做而不是决定“何时摆脱它”,所以我们坚持将两个扩展名用于同一类型的文件。历史!)

关于c++ - 通过 WinAPI 提取字体版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com