7

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

在此处输入图像描述

左边是我的 Chrome 浏览器中的文本,在 FX 浏览器的右边。

似乎它使用“系统常规”字体作为默认字体,该字体由 Font.getDefault() 返回。我试过用反射改变它,但浏览器仍然使用相同的字体。我还研究了WebView.setFontScale()and WebView.setFontSmoothingType(),第一个只改变了大小,而后者只有第二个字体平滑类型,甚至比默认值还要糟糕。

我看了一下Safari,和FX WebView一样,都是基于WebKit的,这个浏览器有改变默认字体的选项(我想大部分浏览器都有这个选项)。

有谁知道为 Java FX WebView 更改此默认字体的方法?

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

4

3 回答 3

8

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

engine.setUserStyleSheetLocation("data:,body { font: 12px Arial; }");
于 2016-04-12T19:38:03.253 回答
4

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

我用了

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

在那个样式表中我写道:

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

这对我来说可以

于 2015-02-16T20:05:52.740 回答
3

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

另请注意,有一个现有功能请求使 JavaFX 中的渲染字体更清晰 (RT-10778)

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

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

于 2013-07-31T17:27:01.973 回答