Как заставить Red Hat OpenJDK 8 отображать шрифты так же четко, как AdoptOpenJDK и Oracle JDK в Windows?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как заставить Red Hat OpenJDK 8 отображать шрифты так же четко, как AdoptOpenJDK и Oracle JDK в Windows?

Сообщение Anonymous »

Наши пользователи запускают наше Java-приложение с графическим интерфейсом на своих рабочих столах Windows, и мы планируем перейти с Oracle Java 8 на OpenJDK 8. Но мы обнаружили, что разные сборки OpenJDK несовместимы по качеству рендеринга шрифтов: Oracle и AdoptOpenJDK эквивалентны, но Red Hat сильно не хватает.
На следующем снимке экрана показана простая программа Java AWT/Swing для Windows на трех разных платформах. JDK:
  • Oracle 1.8.0_201-b26
  • AdoptOpenJDK 1.8.0_202-b08
  • Red Hat 1.8.0_201-2-redhat-b09
Изображение

В Red Hat JDK возникла некоторая проблема с рендерингом, поскольку каждый символ искажен.
Программа просто отображает Swing JLabel со шрифтом Dialog/bold/12, указанным в командной строке. (который каждый JDK сопоставляет шрифту Arial ОС Windows):

Код: Выделить всё

// fontname.groovy
import javax.swing.*
import java.awt.Font
import sun.font.*

styles=[bold:Font.BOLD,italic:Font.ITALIC,plain:Font.PLAIN]
SwingUtilities.invokeLater({
l = new JLabel("${args}: ${System.getProperty('java.runtime.name')} ${System.getProperty('java.runtime.version')}")
l.setFont(new Font(args[0],styles[args[1]],Integer.valueOf(args[2])))
f = new JFrame()
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
f.getContentPane().setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10))
f.getContentPane().add(l)
f.pack()
f.setVisible(true)
logicalFont = l.getGraphics().getFont()
print(logicalFont)
physicalFont = FontManagerFactory.getInstance().findFont2D( logicalFont.getName(), 0, FontManager.NO_FALLBACK )
print(physicalFont)
})
На дополнительном снимке экрана ниже показан один и тот же шрифт на трех PLAF Swing, доступных в этой системе Windows, и показано, что внешний вид Red Hat OpenJDK одинаков для каждого PLAF (устанавливается с помощью параметра системного свойства -Dswing.defaultlaf=):
  • Внешний вид по умолчанию (javax.swing.plaf.metal.MetalLookAndFeel)
  • Внешний вид Windows (com.sun.java.swing.plaf.windows.WindowsLookAndFeel)
  • Внешний вид Nimbus (javax.swing.plaf.nimbus.NimbusLookAndFeel)
Изображение

Кто-нибудь знает, почему сборка Red Hat OpenJDK отображает шрифты совершенно по-другому? Возможно, для Red Hat OpenJDK может потребоваться какая-то дополнительная конфигурация или настройка JDK?
Изображение


Подробнее здесь: https://stackoverflow.com/questions/557 ... penjdk-and
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»