【问题标题】:JavaFX Embed Custom Font Not WorkingJavaFX嵌入自定义字体不起作用
【发布时间】:2015-07-26 12:39:01
【问题描述】:

我正在使用 JavaFX 版本 8.0.40-b27 并尝试通过 CSS 嵌入自定义/外部字体。我也尝试过编程方法,但都失败了。 “字体”的 System.out.print 返回 null,我怀疑这是原因。

Java:

Font font = Font.loadFont( Main.class.getClassLoader().getResourceAsStream( "application/stratum.ttf"), 10);
System.out.println(font); // Prints "null"
nowPlayingTitle.setFont(font);

CSS:

@font-face {
    font-family: stratum;
    src: url('stratum.ttf');
}

.text{
 	-fx-font-family: "stratum", "Segoe UI Light";
    -fx-font-weight: 100;
    -fx-text-fill: white;
}

目录: http://i.stack.imgur.com/c92ii.png

编辑: System.out.println(font); 现在打印 Font[name=StratumNo1-Thin, family=StratumNo1, style=Thin, size=10.0],所以文件是被正确访问。但是字体仍未在屏幕上呈现:http://i.stack.imgur.com/bueUk.png

【问题讨论】:

  • 相关问题:How to embed .ttf fonts is JavaFx 2.2?。正如詹姆斯在他的回答中指出的那样,您的字体 resourceAsStream 参数为您的项目布局指定了不正确的位置。

标签: java fonts javafx external


【解决方案1】:

对于 Java 代码中的 URL,请尝试任一方法

// relative to classpath, with leading /
Font font = Font.loadFont( Main.class.getClassLoader().getResourceAsStream( "/application/stratum.ttf"), 10);

// relative to class:
Font font = Font.loadFont( Main.class.getClassLoader().getResourceAsStream( "stratum.ttf"), 10);

CSS 在我看来是正确的...您确定您的 ttf 文件与已编译的 css 代码等一起部署吗?

【讨论】:

  • 嗨,詹姆斯,感谢您的回答。所以我尝试了第二个建议,System.out.println(font); 现在打印出Font[name=StratumNo1-Thin, family=StratumNo1, style=Thin, size=10.0]。但是,实际字体仍未在应用程序窗口中呈现(请参阅编辑)。似乎仍在使用系统默认字体(Lucida Grande)。
  • 我确保使用 .ttf 正确实现了 css。如下所示:scene.getStylesheets().add( getClass().getResource("application.css").toExternalForm());
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 2015-01-19
相关资源
最近更新 更多