当前位置: 首页 > 知识库问答 >
问题:

如何在JavaFX字体中强制反锯齿?

方建明
2023-03-14

在测试JavaFX8应用程序的GUI时,我注意到一些标签没有显示反锯齿文本。经过一些谷歌和挣扎,我发现了一件非常恼人的事情正在发生。反走样只适用于字体大小大于80px的标签。下面是一个比较JavaFX和Swing应用程序与AA应用程序的示例:

示例代码:https://gist.github.com/anonymous/be60bb89181376ff12aa

有没有办法强制所有字体大小的AA?你也会这样吗?我在JavaFX Jira上搜索了类似的bug,但到目前为止还没有人抱怨这一点。也许我该为这个开一个?

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]

共有1个答案

郭辉
2023-03-14

默认情况下,JavaFX8使用modena.css来设置LCD抗锯齿,这在某些情况下似乎不会平滑字体。当字体大小大于80 px时,AA技术切换到灰度AA(出于性能原因)。因此,为了实现任何大小的平滑边缘,应该使用灰度AA来代替。

这可以通过JavaFX CSS完成:

.text{
    -fx-font-smoothing-type: gray;
}

或系统参数:

-Dprism.lcdtext=false
System.setProperty("prism.lcdtext", "false");
 类似资料:
  • 问题内容: 在swing应用程序中,我使用来自定义文本。这是一个示例: 在同一应用中,一个 文本http://img525.imageshack.us/img525/4928/drawstringsample.jpg ,我正在使用渲染文本。这是一个示例: 替代文本http://img28.imageshack.us/img28/1134/jtextpanesample.jpg 您能注意到较低的样本

  • 我有一个TextField和一个Text对象。两者使用完全相同的字体,但是对于Text对象,有一个方法可以用来平滑字体:。但是,对于TextField不存在这样的方法。 正如Shaw所指出的,Text对象默认情况下会平滑字体,但对于TextFields则不是这样。 不幸的是,从这张截图中可以看出这种差异: 顶部是TextField,底部是带有平滑的文本。那么如何平滑TextField的字体呢? 如

  • 问题内容: 我们如何在CSS中应用类似于Photoshop的字体抗锯齿功能,例如清晰,锐利,强壮,平滑? 所有浏览器都支持这些吗? 问题答案: 主席先生,你在这里:-) 1个 2

  • 目前我正在使用JavaFX开发一个2D游戏,游戏是像素艺术。不幸的是,像素艺术是模糊的,这是由抗锯齿引起的。 有没有办法在JavaFX画布上禁用抗锯齿?我试过用SceneAntialiasing。残废了,没用。我找不到其他方法来关闭它。

  • 更新:我使用fontforge提取嵌入的字体子组,发现从pdf派生的字体与完整的字体文件完全匹配。所以根本没有使用字体子集。:( 在PDFsharp源代码中,我发现了这个函数 其注释如下:创建一个新的字体图像,该图像是仅包含指定字形的该字体图像的子集。这正是我想在这里用到的。 我不明白的是为什么这个功能似乎没有得到使用时,创建我的PDF。为了使其发挥作用,需要满足哪些标准?

  • 问题内容: 是否可以覆盖移动Chrome中的字体增强功能?我在〜包括stackoverflow〜之前搜索了互联网。 我发现有人说这是不可能的,而且我还发现了元标记可以帮助文本,但同时也减小了文本的面积……这不好。 感谢您的帮助。 问题答案: 将以下行添加到我的reset.css对我有用