我最近问了一个关于JavaFX 8中颜色不匹配的问题:Color Mismatch In JavaFX8 Labels这让我开始了正确的道路,但我无法弄清楚如何禁用子像素渲染。我已经尝试-fx-font-smoothing-type: gray
和-fx-font-smoothing-type: lcd
没有明显的效果。我已就此主题进行了研究,但我没有做任何事情。
答案 0 :(得分:3)
你问题的直接答案是有一个系统属性标志,你可以设置。
-Dprism.lcdtext=false
这应该关闭子像素渲染。该标志不是该平台的官方文档或支持部分,因此它可能会在将来更改或删除。
有关setting系统属性的信息。
亚像素渲染是一种非常微妙的效果,因此要真正看到差异,您可能需要截取您的应用程序并使用像MS Paint这样的工具并放大像素,以便近距离看到它们的颜色变化差异。
另请注意,在某些环境(如OS X)上,JavaFX默认配置是禁用子像素渲染,因为这是操作系统其余部分通常呈现文本的方式。通常,JavaFX通常会尝试非常接近地匹配默认的OS文本呈现。
调整字体渲染提示非常复杂,与理性科学相差甚远。知道即使您关闭子像素渲染,文本仍将具有抗锯齿功能并应用其他调整。例如,在Windows 7和Java 8下,JavaFX将使用特定于操作系统的文本呈现系统,例如ClearType,因此调整操作系统中的字体呈现配置可以更改字体在JavaFX中的呈现方式。 / p>