我正在尝试编写一个 Java 程序来查找给定字体名称的字体的 TTF。例如,在我的 Windows 机器上输入“Times New Roman”将返回路径“C:\Windows\Fonts\times.ttf”。
大多数其他字体名称在其 TTF 文件的名称中以类似的方式缩写。是否有一个标准可以用来将字体名称映射到相应的 TTF 文件名?
请记住,字体名称是在字体文件的内容中定义的,因此没有理由与字体文件本身的名称有任何关系。
在 Windows XP 中,注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
列出了所有永久安装的系统字体。您可以枚举此字体文件列表,依次打开每个文件,如果是 ttf,您可以checkSumAdjustment
从其head
表中获取。建立一个项目列表,每个项目包含一对值——字体文件名和校验和值。
然后当你后来意识到一种字体时,调用GetFontData
它并阅读head
表格并找到该checkSumAdjustment
字体的。然后在您之前制作的列表中查找它。