更改JavaFX WebView的默认字体

我使用嵌入在JPanel中的Java FX2.2 WebView来显示网页。 这种方法效果很好,除了我不喜欢的默认字体。 它看起来非常大胆/圆润/消除锯齿/模糊。

在此处输入图像描述

左侧是我的Chrome浏览器中的文本,位于FX浏览器的右侧。

它似乎使用“System Regular”字体作为默认字体,Font.getDefault()返回此字体。 我尝试用reflection更改它但浏览器仍然使用相同的字体。 我还查看了WebView.setFontScale()WebView.setFontSmoothingType() ,第一个只改变了大小,而后者只有第二个字体平滑类型甚至比默认值更差。

我看了Safari,就像FX WebView一样,基于WebKit,这个浏览器可以选择更改默认字体(我想大多数浏览器都有这个选项)。

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

编辑:在这里提出function请求: https : //bugs.openjdk.java.net/browse/JDK-8090968

尝试使用jdk8 (我相信),某些平台的默认字体呈现机制已经更新。 您需要评估自己目标平台上是否有改进。

另请注意, 现有的function请求可以使JavaFX中的渲染字体更加清晰(RT-10778) 。

WebView加载HTML,因此HTML中更改字体的标准方法适用于它(不推荐使用的HTML字体标记或CSS)。

至于设置WebView使用的默认字体 – 我不知道这样做的机制。 您可以针对JavaFX运行时项目创建function请求 。 如果您记录function请求,则可能需要参考Chrome文档 ,该文档certificateChrome中提供了此function。

我找到了一种更简单的方法:

 engine.setUserStyleSheetLocation("data:,body { font: 12px Arial; }"); 

这是我更改默认字体的方式:

我用了

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

在我写的那个样式表中:

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

这对我来说可以