Windows控制面板字体窗口通常显示字体的版本信息。例如
Font Name: Fontawesome
Version: Version 4.3.0 2015
我在Windows API和SO中搜索过,但我还没有设法找到如何以编程方式提取它。
有什么想法吗?
答案 0 :(得分:3)
请注意,如果您正在谈论字体预览程序;这不是“Windows”,实际上只是一个与操作系统捆绑在一起的小型实用程序。为了向您显示该信息,它会从字体的name
表(spec here, for understanding its structure中查询信息,并在“名称ID”部分中解释每个record id
的语义。)
要自己访问这些数据,请使用DirectWrite(而非GDI,因为它是古老而过时的)IDWriteFontFace::TryGetFontTable方法,并获取对name
表的引用,每个有效的OpenType字体都包含该表。然后根据命名表的规范提取所需的值。
要明确: ttf
和otf
字体都是OpenType字体,第一种是“使用TrueType表格布局编码轮廓的OpenType”和第二种是“使用CFF数据块编码轮廓的OpenType”。如果您不知道这两者之间的区别是什么,那是因为差异无关紧要:好像我们决定调用PNG文件nil
和ili
文件,具体取决于它们是否使用了隔行扫描或不。
(ttf
文件扩展名只是在OpenType规范本身之前,因此当每个人都切换到OpenType字体时,保留了扩展名以便向后兼容。几十年后,事实证明它更容易保持这样做而不是决定“何时摆脱它”,所以我们坚持使用两种扩展用于同一种文件。历史!)