2010-05-05 103 views
1

我正在使用Java2D生成帶有文本的圖像。在運行Ubuntu的服務器上,字體正在被糟糕的抗鋸齒渲染,但在OSX和Ubuntu工作站上渲染效果非常好。我猜這兩個Ubuntu安裝之間的區別是xwindows vs no xwindows?也許?無論如何,我想我的渲染提示被忽略,並且java 1.6子像素反鋸齒算法沒有在服務器上使用。強制Java2D子像素抗鋸齒

我的渲​​染提示如下。我正在爲垂直定位顯示進行優化。

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB); 

我直接從ttf文件中創建字體,它改善了渲染效果。我不認爲字體被安裝在機器上,所以它是默認的。現在字體是正確的,但抗鋸齒仍然關閉。它看起來比當我完全關閉抗鋸齒並生成圖像時好看很多,所以我認爲它正在做某些事情,但它看起來不太好。

,我已經試過了Java屬性

-Dawt.useSystemAAFontSettings=lcd 

但它並沒有改變任何東西。

有什麼建議嗎?謝謝。

回答

2

你已經嘗試這樣的事:收到

public void paintComponent(Graphics g){ 
    @SuppressWarnings("unchecked") 
    Map<String, String> desktopHints = (Map<String, String>) Toolkit 
    .getDefaultToolkit().getDesktopProperty("awt.font.desktophints"); 
    Graphics2D g2d = (Graphics2D) g; 
    if(desktopHints != null){ 
    g2d.addRenderingHints(desktopHints); 
    } 
    g2d.drawString("text", 10, 10); 
} 

Graphics對象paintComponent()設置與不知道的桌面屬性(監視器類型)的任何缺省值。查詢工具包desktophints將從底層操作系統返回有關所用硬件的信息。比較「富貴客戶」,第59頁。