2011-12-01 19 views
1

我使用這個代碼,這是剪斷,並從油滑維基Unicode教程修改:如何在Slick的UnicodeFont類中使用自定義字體?

UnicodeFont menuFont = new UnicodeFont("/fonts/mailrays.ttf", 8, false, false); 

menuFont.addAsciiGlyphs(); 
menuFont.addGlyphs(400, 600); 
menuFont.getEffects().add(new ColorEffect()); 
menuFont.loadGlyphs(); 

menuFont.drawString(25.0f, -80.0f, "Snake", new Color(1.0f, 1.0f, 1.0f)); 

但當字符串在屏幕上繪製它採用了低分辨率控制檯字體,我認爲是默認。什麼可以阻止字符串使用我傳入構造函數(mailrays.tff)的字體?

回答

2

我知道這幾乎是兩個月大,但如果你還在尋找答案...

如果油滑無法找到您的字體,你會得到一個RuntimeException當您嘗試實例字體。要驗證這一點,請嘗試指定您知道機器上不存在的字體的名稱(例如,「crap.ttf」)...您很可能會看到類似於:

線程中的異常「main」java.lang.RuntimeException:Resource not found:crap.ttf at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69) at org.newdawn.slick.UnicodeFont.createFont(UnicodeFont。 java:61)

鑑於此,此處的問題可能是您正在創建的字體的大小。嘗試創建8點字體會導致許多TTF字體的混亂,並且結果可能看起來像您所描述的低分辨率。要驗證這一點,請嘗試以更大的尺寸創建字體,大概12點左右。這顯然會比你想要的大,但至少它會驗證你正在加載正確的字體,並且問題只是縮放。如果是這樣的話,你只需要找到一個在8點範圍內更好的字體。

希望這會有所幫助!

+0

我最終只是映射文本的圖像,而不是試圖繪製字體,但是我打算在有空的時候對項目進行測試並驗證。 感謝您的回答! –