如何为Java提供任意字体文件?

我正在使用第三方库,它通过GraphicsEnvironment:getAllFonts()调用访问字体。 这包括属于JRE和操作系统的字体注册表中的字体。

但是在连接到我们服务器的客户端计算机上,我可能无法将字体安装到这些位置中的任何一个位置。 那么我怎样才能让其他字体可用于JRE,以便这个调用能够接收它们? 有没有办法扩展其搜索路径?

我可以使用Font.createFont()调用从任意文件访问字体。 但是它仍然没有出现在GraphicsEnvironment.getAllFonts()中。 有没有一种方法可以将那个Font传递给它,将它添加到可用的字体列表中? 我正在读取有从系统属性访问字体的调用,但我仍然不理解,我认为只是将我设置的字体属性转换为可用列表中的字体名称。


asalamon已经提供了正确答案,但我坚持使用早期版本的Java,不支持它,至少到明年。 所以更多答案仍然非常受欢迎! 我可能会尝试使用reflection来破解我们正在使用的库并将字体直接插入其缓存中。

使用GraphicsEnvironment.registerFont 。 (对于JDK 1.6)

尝试使用Font.createFont()并捆绑您要使用的字体。