在Java中,我的代碼在OSX上運行良好,但在Linux中運行得並不順利。此代碼加載一個字體文件並使用Font.createFont()。 下面的代碼:在Linux上找不到字體名稱
log.debug("Loading ttf file AmericanTypewriter.ttf");
InputStream americanTypewriterInputStream = MyClass.class.getClassLoader().getResourceAsStream("AmericanTypewriter.ttf");
log.debug("File AmericanTypewriter.ttf loaded");
Font americanTypewriter = Font.createFont(Font.TRUETYPE_FONT, americanTypewriterInputStream);
log.debug("Font created");
americanTypewriter = americanTypewriter.deriveFont(16f); // Font size 16
log.debug("Font sized at 16");
如前所述,在OSX這個效果很好,但無法在Linux上。 被我提取上使用的是Mac實際的TTF文件:
fondu /Library/Fonts/AmericanTypewriter.dfont
,並搶得產生的AmericanTypewriter.ttf文件,並將其添加到Java資源路徑。因爲沒有假設字體預先安裝在主機上(我以編程方式添加它),但我可能錯過了一些東西......你能幫忙嗎?
日誌看起來是這樣的:
11:30:59,418 DEBUG MyClass:167 - Loading ttf file AmericanTypewriter.ttf
11:30:59,419 DEBUG MyClass:167 - File AmericanTypewriter.ttf loaded
java.awt.FontFormatException: Font name not found
at sun.font.TrueTypeFont.init(TrueTypeFont.java:437)
at sun.font.TrueTypeFont.<init>(TrueTypeFont.java:154)
at sun.font.FontManager.createFont2D(FontManager.java:1476)
at java.awt.Font.<init>(Font.java:454)
at java.awt.Font.createFont(Font.java:761)
...
編輯: 一定有我丟失的東西在這裏。通過告訴Java「看,這裏是ttf文件,它具有你所需要的所有信息」並不意味着它是平臺獨立的,它確實安裝了什麼字體和位置並不重要? ttf文件是否不具備Java中的所有需求?
我在服務器 $貓/運行CentOS的等/ redhat的釋放 CentOS版本5.3(決賽) – Ran 2009-10-11 10:18:38
好吧,至少CentOS是一個北美分銷,我想到了歐洲一個可能會忽略它。 – pavium 2009-10-11 10:22:27