我正在尝试编写一个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
。然后在您之前创建的列表中查找。