如何在javafx WebView中指定默认字体与默认UI字体相同

时间:2015-12-09 21:04:12

标签: java css javafx fonts

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

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

2 个答案:

答案 0 :(得分:1)

使用

Font.getDefault().getName()   

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

示例:

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

因为你应该比这更干净。

答案 1 :(得分:0)

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

  1. 将您自己的字体下载为 .ttf ,然后将其添加到您应用中的资源中。
  2. 使用静态函数Font.loadFont加载字体: Font.loadFont(this.class.getClassLoader().getResource("fonts/YOURFONT.ttf").toExternalForm(), 10);
  3. 现在将字体设置为应用程序的根目录。我建议使用css,因为建议使用here -> another stackoverflow answer:在 application.css 中添加: .root{ -fx-font-family: "YOURFONT"; } 之后,您需要加载application.css文件并在场景中设置它: scene.getStylesheets().add(this.class.getClassLoader().getResource("css/application.css").toExternalForm());
  4. 我相信如果您不依赖于运行应用程序的系统,那就更好了,所以请在应用程序中打包字体。

    对于html,你可以通过提供 @ font-face 与普通的css完全相同。