【问题标题】:Change default font of JavaFX WebView更改 JavaFX WebView 的默认字体
【发布时间】:2013-07-31 12:19:15
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: java javafx webkit


    【解决方案1】:

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

    我用过

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

    我在那个样式表中写道:

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

    对我来说很好用

    【讨论】:

    • 谢谢!这是个好主意。
    【解决方案2】:

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

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

    【讨论】:

    • 我将上面的“12px”更改为包含在 HTMLEditor 组合框中的“12pt”,它起作用了。
    【解决方案3】:

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

    还要注意有一个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 中可用。

    【讨论】:

    • 我已经尝试过 JDK 8,它看起来仍然一样,我认为用于设置默认字体的代码也没有改变,所以这可能就是原因。我会提出功能请求,谢谢您的回答。
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多