一种使用类似 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 个图像中的所有字体都有缺陷:
- 锯齿状抗锯齿,对比度不均匀。
- 彩色条纹。
- 中线和上升线与像素对齐不当。
- 波浪宽度的曲线。
- 单像素宽度的趋势 "strings" 会扭曲形状。
- 某些细节有误。参见例如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,字体渲染有了很大的提升。
我想知道一种制作自包含(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 个图像中的所有字体都有缺陷:
- 锯齿状抗锯齿,对比度不均匀。
- 彩色条纹。
- 中线和上升线与像素对齐不当。
- 波浪宽度的曲线。
- 单像素宽度的趋势 "strings" 会扭曲形状。
- 某些细节有误。参见例如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,字体渲染有了很大的提升。