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