2010-05-05 98 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页。