如何在JavaFX中获得Swing-looking字体渲染?

时间:2015-05-25 05:12:14

标签: fonts javafx

这是Windows 7(Java JDK 8u45)上JavaFX(lcd和灰色字体平滑)和Swing(默认)中相同文本的屏幕截图:

JavaFX和Swing字体都是相同的(系列:Segoe UI,样式:常规,大小:12)。

JavaFX 8 (lcd) enter image description here JavaFX 8(lcd)

JavaFX 8 (gray) enter image description here JavaFX 8(灰色)

Swing enter image description here Swing

差异不大,但是很明显。

注意:我不想在JavaFX中包含Swing组件。

1 个答案:

答案 0 :(得分:5)

tl; dr :通过可用的JavaFX字体旋钮的任意组合,无法获取Swing字体。看来你唯一的选择是挖掘JavaFX源代码,修复它和/或将它带到JavaFX邮件列表。

Linux上的差异是如此之大,以至于它几乎无法用于任何类型的GUI,您可以在其中阅读更长时间的文本。我与Swing进行了公平的比较并报告了两次[1] [2]:

在Windows上稍微好一些,但正如你所说,与Swing公平对比,差异是显而易见的:https://i.imgur.com/I7wLuYJ.png

从第二个错误报告中引用Phillip:

  

差异的主要(唯一?)原因是FX 按设计   并在所有平台(包括Windows)上呈现文本   没有印记,以保持形状。

请注意,他对不公平比较的评论对于两个错误报告都是错误的。在第二个报告中,我制作了测试用例,我专门使用相同的颜色,字体和大小,并为可用旋钮的所有可能组合制作了结果。

我做了测试 Fedora 23与来自rpmfusion的freetype-freeworld:

Xft.autohint:   0
Xft.antialias:  1
Xft.hinting:    1
Xft.hintstyle:  hintfull
Xft.rgba:   rgb
Xft.lcdfilter:  lcddefault