Как включить сглаживание в произвольных приложениях Java?

StackOverflow https://stackoverflow.com/questions/179955

  •  05-07-2019
  •  | 
  •  

Вопрос

Многие Java-приложения не используют сглаженные шрифты по умолчанию, несмотря на возможность Swing их предоставлять.Как вы можете заставить произвольное java-приложение использовать шрифты AA?(как для приложений, которые я запускаю, так и для приложений, которые я разрабатываю)

Это было полезно?

Решение

Если у вас есть доступ к источнику, вы можете сделать это в основном методе:

  // enable anti-aliased text:
  System.setProperty("awt.useSystemAAFontSettings","on");

или, (и если у вас нет доступа к источнику, или если это проще) вы можете просто передать указанные выше системные свойства в jvm, добавив эти параметры в командную строку:

-Dawt.useSystemAAFontSettings=on

Другие советы

Элементы управления Swing в последних версиях Java 6/7 должны автоматически соответствовать общесистемным настройкам. (Если вы используете Windows L & amp; F в ОС Windows, то текст должен отображаться с использованием ClearType, если у вас включен этот параметр для всей системы.) Так что, возможно, одним из решений может быть просто: включить собственный стиль Look and Feel?

В разрабатываемых приложениях, если вы визуализируете свой собственный текст напрямую, вам также нужно сделать что-то вроде этого (в какой-то момент перед вызовом Graphics.drawText или друзей):

if (desktopHints == null) { 
    Toolkit tk = Toolkit.getDefaultToolkit(); 
    desktopHints = (Map) (tk.getDesktopProperty("awt.font.desktophints")); 
}
if (desktopHints != null) { 
    g2d.addRenderingHints(desktopHints); 
} 

Ссылка: http://weblogs.java.net/blog/chet/archive /2007/01/font_hints_for.html

Между прочим, я обнаружил, что на моем компьютере с Windows 7,

  • Если я не использую это в своем коде, я получаю хороший субпиксельный рендеринг ClearType.
  • Но если я использую это, я получаю классическое черно-белое сглаживание, которое намного уродливее.

Поэтому этот код следует использовать осторожно.Я предполагаю, что это вообще перестанет быть необходимым, когда все пользователи Linux обновятся до версий OpenJDK, которые по умолчанию хорошо обрабатывают псевдонимы.

спасибо за информацию. Мне самому было интересно об этом. Я использую SoapUI (www.eviware.com), и он по умолчанию НЕ использует текст AA. я добавил -Dawt.useSystemAAFontSettings = on -Dswing.aatext = true для командного файла, который запускает его, НО, который НЕ имел значения. Угадай, я должен спросить на их форуме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top