2011-02-28 164 views
0

我已捆綁一個JAR歸檔我與常規負載沿該線內的.TTF字體:Font.createFont +抗鋸齒

[snip] 
is = IdeUiUtil.class.getResourceAsStream(fontName); 
font = Font.createFont(Font.TRUETYPE_FONT, is); 
font = font.deriveFont(style, size); 
[snip] 

UPDATE:字體是在標題中使用一個TitledBorder,並且最終還將用於幾個JLabels

問題是,在Window平臺上它看起來都很麻煩。在linux上,它很好的反鋸齒。我有什麼要做的呢,它在Windows上也是反鋸齒的?

+0

這是一個相當古老的問題,但我完全穿過了同一個問題。如果我從一個輸入流中加載一個字體(並將其註冊到GraphicsEnvoronment中),那麼這個字體不會被消除鋸齒,無論使用什麼樣的渲染提示。特別是如果該字體在運行時沒有加載,但是隻能在系統字體下使用,那麼這個字體是反鋸齒的。看起來這是Java中的一個錯誤。 – 2014-08-03 07:53:58

回答

0

如果您正在使用繪製圖形,你應該使用:

Graphics2D g2d = (Graphics2D)getGraphics(); 
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 

...但是這不是特定於捆綁的字體:它適用於有圖形對象使用的所有字體。

有一個hack將其應用於面板,但我不確定它是否是最新的。

+0

對於最近的JDK,還有一個關於Stackoverflow的提示:http://stackoverflow.com/q/179955/438970 – Damien 2011-02-28 16:25:46

+0

好吧,AA似乎在除了我設置加載字體的TitledBorder之外的所有內容上都啓用。我也嘗試將這種字體設置到其他組件(在這種情況下是JLabels),並注意到它們也不是匿名的。如果我使用系統字體,如'Arial',則組件正確渲染。但我會給你一個提示... – exhuma 2011-02-28 16:32:52

+0

好吧。我只是嘗試使用系統道具。沒有運氣... :( – exhuma 2011-02-28 16:35:35