【问题标题】:how to specify default font in javafx WebView to be the same as default UI font如何在 javafx WebView 中指定默认字体与默认 UI 字体相同
【发布时间】:2016-06-06 21:05:51
【问题描述】:

我和一些同事正在用 HTML 编写帮助文档,以便与 JavaFX WebView 面板一起使用。我们希望它看起来与 UI 的其余部分保持一致。通常我会在 CSS 文件中指定默认字体,但 JavaFX 应用程序的其余部分似乎使用默认系统 UI 字体。

有没有办法以编程方式设置它?我可以在 .css 中按名称选择 Segoe UI,但无论平台如何,我们都希望它看起来正确。

【问题讨论】:

    标签: java css javafx fonts


    【解决方案1】:

    使用

    Font.getDefault().getName()   
    

    获取默认字体名称并将其添加到即将添加到WebView的HTML文件/字符串中。

    示例:

    cssString = cssString + "html { font-family: '" + Font.getDefault().getName() + "';}";
    

    因为你应该比这更干净。

    【讨论】:

      【解决方案2】:

      如果我完全理解您的话,您需要为应用程序的整个 javafx 部分使用默认字体。我建议你这样做:

      1. 将您自己的字体下载为 .ttf 并将其添加到应用程序的资源中。
      2. 用静态函数Font.loadFont加载字体: Font.loadFont(this.class.getClassLoader().getResource("fonts/YOURFONT.ttf").toExternalForm(), 10);
      3. 现在将字体设置为应用程序的根目录。我建议按照 here -> another stackoverflow answer 的建议使用 css 执行此操作:在您的 application.css 中添加: .root{ -fx-font-family: "YOURFONT"; } 之后,您需要加载 application.css 文件并将其设置在您的场景中: scene.getStylesheets().add(this.class.getClassLoader().getResource("css/application.css").toExternalForm());

      我相信如果你不依赖于你的应用运行的系统会更好,所以在你的应用中打包字体。

      对于 html,您可以通过提供 @font-face 来使用普通 css 完成完全相同的操作。

      【讨论】:

      • 嗯...这似乎是不必要的工作;我们只想使用系统字体,不提供任何 .ttf 文件。
      猜你喜欢
      • 1970-01-01
      • 2015-09-29
      • 2018-04-19
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多