我最近问了一个有关JavaFX 8中的颜色不匹配的问题:Color Mismatch In JavaFX8 Labels这使我开始走上正确的道路,但我不知道如何禁用子像素渲染.我尝试了-fx-font-smoothing-type:灰色和-fx-font-smoothing-type:lcd,但没有明显的效果.我已经对此主题进行了研究,但没有提出任何建议.
解决方法:
您问题的直接答案是可以设置系统属性标志.
-Dprism.lcdtext=false
这应该关闭子像素渲染.该标志不是平台的正式文件或受支持的部分,因此将来可能会更改或删除.
有关setting系统属性的信息.
亚像素渲染是一个非常微妙的效果,因此要真正看到差异,您可能需要对应用程序进行屏幕截图,并使用MS Paint等工具并放大像素以查看其颜色变化的差异.
还要注意,在某些环境(例如OS X)上,JavaFX的默认配置是禁用子像素渲染,因为这是其余OS通常渲染文本的方式.通常,JavaFX通常会尝试非常接近地匹配默认的OS文本呈现.
调整字体渲染提示令人惊讶地复杂,并且与合理的科学相去甚远.要知道,即使您关闭了亚像素渲染,文本仍将具有抗锯齿和其他调整功能.例如,在Windows 7和Java 8下,JavaFX将使用特定于操作系统的文本呈现系统,例如ClearType,因此在操作系统中对字体呈现配置进行调整可以更改在JavaFX中呈现字体的方式.