更改JavaFX WebView的默认字体

时间:2013-07-31 12:19:15

标签: java javafx webkit

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

enter image description here

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

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

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

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

编辑:在此处发出了一项功能请求:https://bugs.openjdk.java.net/browse/JDK-8090968

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

另请注意,有一个existing feature request to make the rendering fonts in JavaFX clearer (RT-10778)

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

关于设置WebView使用的默认字体 - 我不知道这样做的机制。您可以针对JavaFX运行时项目创建feature request。如果您记录功能请求,则可能需要引用Chrome documentation,以证明此功能在Chrome中可用。

答案 2 :(得分:2)

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

我用过

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

在我写的那个样式表中:

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

它适用于我