下面的代码做它的工作,但在每次运行时离开字体文件的副本在临时目录。这些文件被命名的 +〜JF7154903081130224445.tmp 的其中数字似乎随机为每个创建的文件。

InputStream fontStream = this.getClass().getResourceAsStream("handsean.ttf");
Font baseFont = Font.createFont(Font.TRUETYPE_FONT, fontStream);
fontStream.close();
在论坛上,在sun.com在网上。这是公认的JDK,其中从1.5.0_06升级到1.5.0_08可以解决这个问题的一个错误

我发现岁的讨论和其他资源;然而,我使用的版本是更高版本(1.6.0_13)。

我试图通过删除字体后,相关操作完成的文件解决问题,但这些文件在那个时候被锁定。 该web应用程序已经停止后的文件只能被删除。

任何人是否有一个解决这个?

有帮助吗?

解决方案

如果您的TTF文件不是一个归档中,你可以调用的createFont(文件),而不是的createFont(InputStream的)

至于我所知,这个bug在Java 6中存在,就足以看字体类的来源。

其他提示

通过JDK1.6.0_16,字体管理器似乎可以用临时文件作为一种高速缓存的,并且当需要时它们将只从字体读字形。它也将关闭挂钩,当JVM终止通常这将删除该文件。根据VM,字体渲染或许也委托给需要访问该文件的本地代码,因此保持在锁定该文件似乎是合理的我。

实际上保存的文件,即使你的servlet容器(你提一个Web应用程序)定期终止,或者是你杀死它,没有它允许清理其资源是否正确?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top