在我的系统上,我需要注册两个外部字体.TTF文件:
在创建Font()对象之前,我使用以下命令进行记录:
当我第二次运行系统时,出现以下错误:
如果我用大小为83 KB和80 KB的更改后的.TTF文件替换原版(大小分别为74 KB和67 KB),程序就可以正常运行。
我做错了什么?我原以为我需要使用applicationContext.getResource()关闭打开的文件,但不知道该怎么做。我不知道该如何解决。
注意:我获取了Spring的applicationContext。原始的TTF文件(具有正确的大小)在项目资源文件夹中,而错误的TTF文件在目标资源文件夹中(使用Maven进行构建)。
帮帮我……
编辑:
我怀疑是Maven破坏了这些文件。为什么?我正在使用带有Maven插件的Eclipse。每当我部署或按F5刷新项目时,来自目标文件夹的.TTF文件就会变得损坏。
有人看到Maven破坏资源文件吗?
谢谢。
HamletOrNot.ttf (74 KB)
MorrisRoman-Black.ttf (67 KB)
在创建Font()对象之前,我使用以下命令进行记录:
/* Set full path of font */
String path = filesPath + fileName;
/* Read file */
Resource resource = applicationContext.getResource( path );
File fontFile = resource.getFile();
/* Load font */
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, fontFile ));
然后我创建对象(我创建了多个 Font() 对象,因为格式不同):
Font font = new Font( "HamletOrNot" , Font.TRUETYPE_FONT , 10 );
Font font = new Font( "HamletOrNot" , Font.TRUETYPE_FONT , 12 );
Font font = new Font( "MorrisRoman-Black" , Font.TRUETYPE_FONT , 20 );
Font font = new Font( "MorrisRoman-Black" , Font.TRUETYPE_FONT , 22 );
好的,系统正常工作。问题是,在运行之后,.TTF文件的大小会发生变化(变为83 KB和80 KB),因此:
HamletOrNot.ttf (83 KB)
MorrisRoman-Black.ttf (80 KB)
当我第二次运行系统时,出现以下错误:
...
Caused by: java.awt.FontFormatException: bad table, tag=1280594760
at sun.font.TrueTypeFont.init(TrueTypeFont.java:513)
at sun.font.TrueTypeFont.<init>(TrueTypeFont.java:162)
at sun.font.FontManager.createFont2D(FontManager.java:2474)
at java.awt.Font.<init>(Font.java:570)
at java.awt.Font.createFont(Font.java:980)
at br.com.linu.vectortown.base.screen.font.GameFontFactory.postConstruct(GameFontFactory.java:43)
at br.com.linu.vectortown.base.screen.font.GameFontContainer.postConstruct(GameFontContainer.java:27)
at br.com.linu.vectortown.client.looping.util.AutomaticInjector.postConstruct(AutomaticInjector.java:47)
... 99 more
如果我用大小为83 KB和80 KB的更改后的.TTF文件替换原版(大小分别为74 KB和67 KB),程序就可以正常运行。
我做错了什么?我原以为我需要使用applicationContext.getResource()关闭打开的文件,但不知道该怎么做。我不知道该如何解决。
注意:我获取了Spring的applicationContext。原始的TTF文件(具有正确的大小)在项目资源文件夹中,而错误的TTF文件在目标资源文件夹中(使用Maven进行构建)。
帮帮我……
编辑:
我怀疑是Maven破坏了这些文件。为什么?我正在使用带有Maven插件的Eclipse。每当我部署或按F5刷新项目时,来自目标文件夹的.TTF文件就会变得损坏。
有人看到Maven破坏资源文件吗?
谢谢。