我使用嵌入在JPanel中的Java FX2.2 WebView来显示网页。这种方法效果很好,除了我不喜欢的默认字体。它看起来非常大胆/圆润/消除锯齿/模糊。
左侧是我的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
答案 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*/
}
它适用于我