【问题标题】:How to get Swing-looking font rendering in JavaFX?如何在 JavaFX 中获得具有 Swing 外观的字体渲染?
【发布时间】:2015-05-25 05:12:14
【问题描述】:

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

JavaFX 和 Swing 字体相同(家族:Segoe UI,样式:Regular,大小:12)。

JavaFX 8(液晶屏)

JavaFX 8(灰色)

摇摆

差异不大,但很明显。

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

【问题讨论】:

  • 我想知道这是否只有在深色背景上使用白色文本时才明显
  • 明亮背景上的深色文字仍然很明显。例如,“H”在 Swing 中比 JavaFX 更宽,尽管 lcd 平滑的彩色像素不是那么明显。 Swing 渲染看起来更加清晰和一致。
  • 也许这个问题与您遇到的问题相同:javafx-jira.kenai.com/browse/RT-36146
  • 我认为如果您提供用于制作屏幕截图的 Java 和 OS 版本会很有用
  • 我编辑了问题以包括 Java 和 OS 版本。

标签: fonts javafx


【解决方案1】:

tl;dr:不可能通过任何可用的 JavaFX 字体旋钮组合来获得 Swing 字体呈现它。看来您唯一的选择是深入研究 JavaFX 源、修复它和/或将其带到 JavaFX 邮件列表。


Linux 上的差异如此之大,以至于对于任何需要长时间阅读文本的 GUI,它实际上都无法使用。我与 Swing 进行了公平的比较,并报告了两次[1][2]:

它在 Windows 上稍微好一些,但正如你所说,与 Swing 相比,差异很明显:https://i.imgur.com/I7wLuYJ.png

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

差异的主要(唯一?)原因是FX 设计 并跨所有平台(包括 Windows)呈现文本 未提示,以保留形状。

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


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

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

【讨论】:

  • Woky,在这里占据高地。您的贡献可能很有价值。
  • 我删除了所有不具建设性的咆哮部分,如果您愿意,请随时回滚。我认为您可以在第二个错误报告中引用官方回复的一部分来确认这确实是不可能的,因为它是“设计使然”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2021-05-28
  • 1970-01-01
  • 2020-01-11
相关资源
最近更新 更多