更改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*/ }
这对我来说可以