1

我正在使用 Java2D 生成带有文本的图像。这些字体在运行 Ubuntu 的服务器上被糟糕的抗锯齿渲染,但在 OSX 和 Ubuntu 工作站上渲染得很好。我猜这两个 Ubuntu 安装之间的区别是 xwindows 与没有 xwindows?也许?无论如何,我想我的渲染提示被忽略了,并且服务器上没有使用 java 1.6 亚像素抗锯齿算法。

我的渲染提示如下。我正在优化垂直定位的显示。

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

但它没有改变任何东西。

有什么建议么?谢谢。

4

1 回答 1

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()设置为不了解桌面属性(监视器类型)的默认值。查询 Toolkitdesktophints将返回来自底层操作系统的有关所用硬件的信息。比较“肮脏的富客户”,第 59 页。

于 2012-09-22T22:31:42.353 回答