在我的系统上,我需要注册两个外部字体.TTF文件:

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.(TrueTypeFont.java:162)

at sun.font.FontManager.createFont2D(FontManager.java:2474)

at java.awt.Font.(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

如果我用原始文件(74 KB和67 KB)替换更改大小(83 KB和80 KB)的.TTF文件,程序将正常工作.

我究竟做错了什么?我以为我必须用applicationContext.getResource()关闭打开的文件,但不知道怎么做.我不知道如何解决它.

注意:我得到了Spring的applicationContext.原始TTF文件(具有正确的大小)位于项目的资源文件夹中,而TTF错误文件位于目标资源文件夹中(使用Maven完成构建).

帮我…

编辑:

我怀疑maven正在破坏文件.为什么?我正在使用Eclipse和Maven插件.每当我进行部署或按F5刷新项目时,目标文件夹中的.TTF文件都会损坏.

有谁见过maven腐败的资源文件?

谢谢

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐