这是Windows 7(Java JDK 8u45)上JavaFX(lcd和灰色字体平滑)和Swing(默认)中相同文本的屏幕截图:
JavaFX和Swing字体都是相同的(系列:Segoe UI,样式:常规,大小:12)。
JavaFX 8(lcd)
JavaFX 8(灰色)
Swing
差异不大,但是很明显。
注意:我不想在JavaFX中包含Swing组件。
答案 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