Принудительное Java2D субпиксельное сглаживание - PullRequest
1 голос
/ 05 мая 2010

Я использую Java2D для создания изображений с текстом на них. Шрифты ужасно отображаются с плохим сглаживанием на сервере под управлением Ubuntu, но прекрасно отображаются на рабочих станциях OSX и Ubuntu. Я полагаю, что разница между двумя установками Ubuntu: xwindows vs no 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

но это ничего не изменило.

Есть предложения? Спасибо.

1 Ответ

2 голосов
/ 23 сентября 2012

Вы уже пробовали что-то вроде этого:

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.

...