更改JavaFX WebView的默认字体

7

我正在使用嵌入到JPanel中的Java FX2.2 WebView来显示网页。这样做效果很好,唯一不满意的是默认字体。它看起来非常粗/圆润/抗锯齿/模糊。

enter image description here

左侧为Chrome浏览器文本,右侧为FX浏览器文本。

似乎它使用“System Regular”字体作为默认字体,该字体由Font.getDefault()返回。我尝试使用反射更改字体,但浏览器仍然使用相同的字体。 我还查看了 WebView.setFontScale()WebView.setFontSmoothingType(),前者仅更改大小,后者仅具有比默认字体更差的第二种字体平滑类型。

我看了看基于WebKit的Safari,与FX WebView类似,并且该浏览器可以更改默认字体(我认为大多数浏览器都有此选项)。

有人知道如何更改Java FX WebView的默认字体吗?

编辑:在这里提出了一个功能请求:https://bugs.openjdk.java.net/browse/JDK-8090968

3个回答

9
我发现了一种更简单的方法:
engine.setUserStyleSheetLocation("data:,body { font: 12px Arial; }");

我将“12px”更改为HTML编辑器组合框中包含的“12pt”,然后它可以正常工作了。 - Adalberto José Brasaca

4

以下是我如何更改默认字体的方法:

我使用了

engine.setUserStyleSheetLocation(getClass().getResource("style_html.css").toExternalForm());

在那个样式表中,我写了:

html {
    font: 17px Impact; /*for example*/
}

对我来说运行正常


谢谢!那是个好主意。 - NickL

3

尝试使用 jdk8 ,其中(我相信),一些平台的默认字体渲染机制已经得到更新。您需要自己评估在目标平台上是否有改善。

还要注意,存在一个现有功能请求,使JavaFX中呈现字体更清晰(RT-10778)。

WebView加载HTML,因此更改HTML中的字体的标准方法适用于它(弃用的HTML font标签或CSS)。

至于设置WebView使用的默认字体 - 我不知道有什么机制可以做到这一点。您可以针对JavaFX运行时项目创建一个功能请求。如果您记录一个功能请求,您可能需要引用Chrome文档,该文档演示了此功能在Chrome中可用。


1
我已经尝试了JDK 8,但它看起来仍然一样,而且我认为用于设置默认字体的代码也没有改变,所以可能是这个原因。我会提出一个功能请求,感谢您的回答。 - NickL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接