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

krs*_*rsi 5 fonts javafx

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

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

JavaFX 8(lcd) 在此输入图像描述 JavaFX 8(lcd)

JavaFX 8(灰色) 在此输入图像描述 JavaFX 8(灰色)

摇摆 在此输入图像描述 摇摆

差异不大,但是很明显.

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

wok*_*oky 6

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


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

它在Windows上有所改善,但正如你所说,与Swing公平对比,差异是显而易见的:https://i.imgur.com/I7wLuYJ.png

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

造成这种差异的主要原因(唯一?)是FX 设计 和所有平台(包括Windows)都会使文本不显示,以便保留形状.

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


我使用rpmfusion的freetype-freeworld对Fedora 23进行了测试:

Xft.autohint:   0
Xft.antialias:  1
Xft.hinting:    1
Xft.hintstyle:  hintfull
Xft.rgba:   rgb
Xft.lcdfilter:  lcddefault
Run Code Online (Sandbox Code Playgroud)