更改JavaFX WebView的默认字体

Nic*_*ckL 5 java webkit javafx

我使用嵌入在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

小智 6

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

engine.setUserStyleSheetLocation("data:,body { font: 12px Arial; }");
Run Code Online (Sandbox Code Playgroud)


jew*_*sea 3

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

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

WebView 加载 HTML,因此更改 HTML 中字体的标准方法适用于它(已弃用的 HTML 字体标签或 CSS)。

至于设置 WebView 使用的默认字体 - 我不知道有什么机制可以做到这一点。您可以针对 JavaFX 运行时项目创建功能请求。如果您记录功能请求,您可能需要参考Chrome 文档,该文档演示了 Chrome 中提供此功能。