2012-12-15 31 views
0

我在java中爲我的項目添加了一個新的字體。然而,在呈現它時,文本大小總是在1處出現。文本基本上只是幾條小線。我用多種字體嘗試過,他們都做到了。這是我的代碼。新java字體的大小始終爲1

public static void intializeFonts(){  
    try{ 
     File font = new File("C:/The Woods/Fonts/script.ttf"); 
     Font scriptFontU = Font.createFont(Font.TRUETYPE_FONT, font); 
     Font scriptFont = scriptFontU.deriveFont(20); 
     script = new TrueTypeFont(scriptFont, false); 
    } catch(Exception e){ 
     System.out.println("Error Loading Font"); 
    }    
} 

這也是我用來渲染它,如果這有幫助。

g.setFont(Fonts.script); 
    g.drawString("Weight: "+ItemContainer.getWeight()+"lbs", 30, 600); 

任何幫助將是偉大的。謝謝。

+1

解決了,我用outprint找到字體在系統中使用的名稱,然後做了新的字體()而不是deriveFont(),它工作。 – user1906977

+0

正如我在我的回答中提到的那樣,「deriveFont」不起作用的原因是因爲你稱錯了超載。如果您總是處理註冊的系統字體,那麼您的解決方法是正確的(並且是更好的解決方案),但是如果您的字體作爲資源包含在內,則需要使用原始方法。 – addaon

+0

請注意,可以「回答」和「接受」您自己的問題。這是記錄解決方案的好方法。 – Marvo

回答

0

當您致電scriptFontU.deriveFont(20)時,致電Font.deriveFont(int)。在這個函數中,第一個參數是一個表示樣式的整數。相反,您要撥打Font.deriveFont(float),這需要一個大小並保持樣式不變。你可以通過撥打scriptFontU.deriveFont(20.0)或同等的方式來做到這一點。或撥打電話Font.deriveFont(int, float)作爲scriptFontU.deriveFont(Font.PLAIN, 20.0)使其明確無誤。