【发布时间】:2016-06-06 21:05:51
【问题描述】:
我和一些同事正在用 HTML 编写帮助文档,以便与 JavaFX WebView 面板一起使用。我们希望它看起来与 UI 的其余部分保持一致。通常我会在 CSS 文件中指定默认字体,但 JavaFX 应用程序的其余部分似乎使用默认系统 UI 字体。
有没有办法以编程方式设置它?我可以在 .css 中按名称选择 Segoe UI,但无论平台如何,我们都希望它看起来正确。
【问题讨论】:
我和一些同事正在用 HTML 编写帮助文档,以便与 JavaFX WebView 面板一起使用。我们希望它看起来与 UI 的其余部分保持一致。通常我会在 CSS 文件中指定默认字体,但 JavaFX 应用程序的其余部分似乎使用默认系统 UI 字体。
有没有办法以编程方式设置它?我可以在 .css 中按名称选择 Segoe UI,但无论平台如何,我们都希望它看起来正确。
【问题讨论】:
使用
Font.getDefault().getName()
获取默认字体名称并将其添加到即将添加到WebView的HTML文件/字符串中。
示例:
cssString = cssString + "html { font-family: '" + Font.getDefault().getName() + "';}";
因为你应该比这更干净。
【讨论】:
如果我完全理解您的话,您需要为应用程序的整个 javafx 部分使用默认字体。我建议你这样做:
Font.loadFont加载字体:
Font.loadFont(this.class.getClassLoader().getResource("fonts/YOURFONT.ttf").toExternalForm(), 10);
.root{ -fx-font-family: "YOURFONT"; }
之后,您需要加载 application.css 文件并将其设置在您的场景中:
scene.getStylesheets().add(this.class.getClassLoader().getResource("css/application.css").toExternalForm());
我相信如果你不依赖于你的应用运行的系统会更好,所以在你的应用中打包字体。
对于 html,您可以通过提供 @font-face 来使用普通 css 完成完全相同的操作。
【讨论】: