一种使用类似 Freetype 的字体渲染获取 Linux JDK 压缩包的方法

A method of getting a Linux JDK tarball with Freetype-like font rendering

我想知道一种制作自包含(tarball)Linux JDK/JRE 的方法,它具有类似于 Freetype project 提供的高字体渲染质量。到目前为止,之后:

-- 试用不同版本的 JDK 可用于 Ubuntu:

java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-3~14.04.1-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)

(#字符的形状可能是一些不相关的字体问题,我不知道)

-- 尝试了多种不同的字体和大小,但看起来正交;

-- 切换LCD渲染和抗锯齿等多个开关:

-- 按照 "apply some patched packages and scripts from different repos to your Ubuntu derivative" 之类的方法,(这对我不起作用,至少不久前,在发行版级别上工作并提供 jdk 的固定版本)

-- 放弃 Swing 并尝试在 JavaFX 中制作 GUI,

我开始相信我不会得到与 Freetype 相媲美的字体渲染。然后我偶然发现了 Android Studio,它是三个 Java 和 Linux 以及一个类似 Freetype 的字体渲染:

事实证明,这一切都归结为它使用的 JRE:

openjdk version "1.8.0_76-release"
OpenJDK Runtime Environment (build 1.8.0_76-release-b03)
OpenJDK 64-Bit Server VM (build 25.76-b03, mixed mode)

我尝试从启用了 FreeType 的源代码编译 OpenJDK:

sudo apt-get install libfreetype6-dev libasound2-dev libasound2-dev libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev
mkdir freetype && ln -s /usr/include/freetype2 freetype/include && ln -s /usr/lib/x86_64-linux-gnu/ freetype/lib
sudo apt-get install ccache
cd YourOpenJDK
bash ./configure --with-freetype=../freetype --with-cups=/usr/include/cups --with-x=/usr/include/X11/extensions --with-jvm-variants=server --with-target-bits=64 --with-debug-level=release

    checking if we can compile and link with freetype... yes`
    checking if we should bundle freetype... yes`

make all

但它不起作用 - 字体渲染仍然像前两张图片一样。

提示良好的字体差异变小:

但是需要适当提示的渲染器仍然做得不好 - 第 4 个图像中的所有字体都有缺陷:

  1. 锯齿状抗锯齿,对比度不均匀。
  2. 彩色条纹。
  3. 中线和上升线与像素对齐不当。
  4. 波浪宽度的曲线。
  5. 单像素宽度的趋势 "strings" 会扭曲形状。
  6. 某些细节有误。参见例如bottom line字体的中线衬线,模糊且没有形状,这是一个27px的字体。

因此问题:

1.是否有一种方法可以为 JDK/JRE 的任何最新版本准备一个可移植的 tarball(不是系统范围的修改),它的字体渲染质量与 third/5th 图像中看到的相似?

2。如果最新抢先体验 OpenJDK:

java version "1.8.0_122-ea"
Java(TM) SE Runtime Environment (build 1.8.0_122-ea-b04)
Java HotSpot(TM) 64-Bit Server VM (build 25.122-b04, mixed mode)

又出现了"traditional Linux Java"的字体渲染,难道第三张图使用的方法是后来放弃的特性?

原来有一个自定义的jdkJetBrain OpenJDK,字体渲染有了很大的提升。