2011-07-25 44 views
1

我有一個生成圖像的servlet。我想從TTF文件中加載它使用的字體,這樣servlet就不依賴於該特定服務器上可用的字體。從TTF文件加載字體適用於Mac,但不適用於Linux

我使用java.awt.Font.createFont()加載字體。當我測試這對我的本地GlassFish在Mac OS X這工作得很好,但是當我嘗試在Glassfish的Linux服務器我得到下面的異常上:

java.awt.FontFormatException: bad table, tag=1279872591 
    at sun.font.TrueTypeFont.init(TrueTypeFont.java: 
    at sun.font.TrueTypeFont.<init>(TrueTypeFont.java:162) 
    at sun.font.FontManager.createFont2D(FontManager.java:2264) 

我的印象是的解析TTF文件完全是用Java完成的,因此不是平臺特定的。這個假設是錯誤的嗎?還是有其他原因,爲什麼這會失敗?

+1

我在這個鏈接回答了這樣的問題:http://stackoverflow.com/questions/20584290/what-does-java-awt-fontformatexception-bad-table-tag-1196445523-indicating/33874027#33874027 –

回答

0

在Linux上,在控制檯中啓動JVM並使用它訪問awt或swing組件有時會導致問題,因爲不包括X11支持。您應該嘗試使用headless mode來啓動服務器。

+0

謝謝,但不幸的是java.awt.headless系統屬性已經在Glassfish中設置爲true :( –

0

我意識到這是一個老問題,但我遇到了這個問題,並最終通過從舊版本的相同文件重寫服務器上的ttf來解決它。我想他們肯定是在轉會或其他事情中受到了損壞或者什麼的。

如果有其他人通過這裏,它可能是值得一試的。

相關問題