从jar运行时,字体无法正确加载

时间:2013-07-07 09:27:50

标签: java fonts awt

我遇到了Java问题。我使用以下代码加载一个新字体:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.PLAIN, getClass().getResourceAsStream("/some/packages/fonts/font.ttf")));

当我在NetBeans中调试它时,一切正常,这是一个截图:http://i.imgur.com/ohJ4XRw.png

correct font

但是,一旦我编译我的游戏字体没有加载(或至少不能正确显示),如下所示:http://i.imgur.com/ou1K9ow.png

wrong font

还有一件事 - 当我从终端运行jar(java -jar app.jar)时 - 字体有效!我不知道为什么以及如何解决它。谁能帮我?

2 个答案:

答案 0 :(得分:0)

如果您说运行命令时应用程序运行正常,请尝试以下操作:

Process proc = Runtime.getRuntime().exec("java -jar app.jar");
// make sure to provide path for it
InputStream in = proc.getInputStream();
InputStream err = proc.getErrorStream();
OutputStream out = proc.getOutputStream();
// in/out/err streams of proc

答案 1 :(得分:0)

我可能会发现问题。首先,你用jar包装真正的字体文件?它应该在jar的旁边或与当前目录相同。

抱歉,我无法解释清楚,这里有一些字体文件位置的例子:

情况1:

%cd%/some/packages/fonts/font.ttf
%cd%/your.jar
情况2:

url of your.jar: file:///C:/some/your.jar
url of font.ttf: jar:file:///C:/some/your.jar/!some/packages/fonts/font.ttf