Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何强制Red Hat OpenJDK 8在Windows上呈现字体,使其与OpenJDK和Oracle JDK一样清晰?_Java_Windows_Awt_Redhat Openjdk_Adoptopenjdk - Fatal编程技术网

Java 如何强制Red Hat OpenJDK 8在Windows上呈现字体,使其与OpenJDK和Oracle JDK一样清晰?

Java 如何强制Red Hat OpenJDK 8在Windows上呈现字体,使其与OpenJDK和Oracle JDK一样清晰?,java,windows,awt,redhat-openjdk,adoptopenjdk,Java,Windows,Awt,Redhat Openjdk,Adoptopenjdk,我们的用户在他们的Windows桌面上运行Java GUI应用程序,我们计划从Oracle Java 8切换到OpenJDK 8。但是我们发现不同的OpenJDK版本在字体呈现的质量上是不一致的,Oracle和OpenJDK是等效的,但是RedHat严重缺乏 以下屏幕截图显示了三种不同JDK上Windows上的一个简单Java AWT/Swing程序: Oracle 1.8.0_201-b26 采用OpenJDK 1.8.0_202-b08 Red Hat 1.8.0_201-2-redhat

我们的用户在他们的Windows桌面上运行Java GUI应用程序,我们计划从Oracle Java 8切换到OpenJDK 8。但是我们发现不同的OpenJDK版本在字体呈现的质量上是不一致的,Oracle和OpenJDK是等效的,但是RedHat严重缺乏

以下屏幕截图显示了三种不同JDK上Windows上的一个简单Java AWT/Swing程序:

  • Oracle 1.8.0_201-b26
  • 采用OpenJDK 1.8.0_202-b08
  • Red Hat 1.8.0_201-2-redhat-b09

红帽JDK中的渲染存在一些问题,因为每个角色都被扭曲了

该程序只是显示一个Swing JLabel,命令行中指定了Dialog/bold/12字体(每个JDK都映射到Windows OS Arial字体):

下面的附加屏幕截图显示了此Windows系统上可用的3个Swing PLAF上的相同字体,并显示每个PLAF在Red Hat OpenJDK下的外观是一致的(通过系统属性选项设置“-Dswing.defaultlaf=“):

  • 默认外观(javax.swing.plaf.metal.MetalLookAndFeel)
  • Windows外观(com.sun.java.swing.plaf.Windows.WindowsLookAndFeel)
  • Nimbus外观(javax.swing.plaf.Nimbus.NimbusLookAndFeel)

有人知道为什么Red Hat OpenJDK构建会以如此不同的方式呈现字体吗?红帽OpenJDK可能需要一些额外的JDK配置或设置吗

更新-从OpenJDK版本1.8.0_201-2-redhat-b09开始,alexkasko回答(谢谢!)中设置环境变量FREETYPE_属性的解决方法确实纠正了字体问题:


这是由以下原因导致的Red Hat build回归。采用OpenJDK jdk8构建。这将在Red Hat构建中得到修复,同时可以使用环境变量重新启用旧行为:

FREETYPE_PROPERTIES=truetype:interpreter-version=35

检查字体服务器;jdk字体是ttf(或者与ttf配合使用)。谢谢。我99%确定3个JDK中的每一个都从相同的TTF文件中呈现相同的字体。程序记录的物理字体总是
**TrueType字体:Family=Arial Name=Arial style=0 fileName=C:\Windows\Fonts\Arial.TTF
正确。在redhat上,您需要配置。这(大部分)与Java无关。我没有在Red Hat Enterprise Linux服务器上尝试过同样的实验,但我在Ubuntu Linux桌面上使用了Ubuntu的OpenJDK 8软件包,字体呈现看起来很不错(该操作系统上的默认字体恰好是DejaVu Sans,特别是
**TrueType字体:Family=DejaVu Sans Name=DejaVu Sans style=0文件名=/usr/share/fonts/TrueType/DejaVu/DejaVuSans.ttf
)。因此,外观不佳是Windows OS JDK版本特有的,也是这些版本的Red Hat风格特有的。在任何可用的PLAF下,字体呈现是否如您所期望的那样?
FREETYPE_PROPERTIES=truetype:interpreter-version=35