好的,因此经过一番挖掘之后,事实证明,此问题是由于java.awt实现中的错误(功能!)引起的。即,如果字体文件的名称表中不包含姓氏和全名记录,则加载物理TrueType字体将失败。
为了确定问题,我使用GrepCode从OpenJDK的AWT实现中的相关异常向后追溯。一旦发现了名称表问题,我就使用ttx,这是简洁的TrueType元数据编辑器,用于添加Java查找的名称条目。例如:
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409"> American Typewriter</namerecord><namerecord nameID="4" platformID="3" platEncID="1" langID="0x409"> American Typewriter</namerecord>
由ttx生成的新TTF文件现在可以由Java打开。好极了!



