在测试我的 JavaFX 8 应用程序的 GUI 时,我注意到一些标签没有显示抗锯齿文本。经过一番谷歌搜索和挣扎,我发现了一件非常烦人的事情正在发生。抗锯齿仅应用于字体大小大于 80 像素的标签。下面是一个比较应用了 AA 的 JavaFX 和 Swing 应用程序的示例:
示例代码:https://gist.github.com/anonymous/be60bb89181376ff12aa
有没有办法在所有字体大小中强制使用 AA?
你也有这种情况吗?我在 JavaFX Jira 上搜索了类似的错误,但到目前为止没有人提示。也许我应该为此打开一个?
一些可能有帮助的信息:
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
Windows 8.1 64 bits [Version 6.3.9600]
最佳答案
默认情况下,JavaFX 8 使用 modena.css
设置 LCD 抗锯齿,这在某些情况下似乎不会平滑字体。当字体大小大于 80 px 时,AA 技术会切换到灰度 AA(出于性能原因)。因此,要实现任何尺寸的平滑边缘,灰度 AA 应该改用。
这可以通过 JavaFX CSS 来完成:
.text{
-fx-font-smoothing-type: gray;
}
或系统参数:-Dprism.lcdtext=false
或者设置系统属性(在加载 FXML 之前):System.setProperty("prism.lcdtext", "false");
感谢所有在 Jira 上回复的人!
关于fonts - 如何在 JavaFX 字体中强制抗锯齿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24254000/