我已经问了一个类似的问题
here,但似乎不清楚,因为我有很多代码在项目中,不能发布在这里所以请不要标记为重复.
因此,我决定创建一个新的项目,只需一个标签,使代码小而干净,并消除其他潜在的嫌疑犯我得到的错误.
所以这里是我的Java源代码
public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception { Group root = new Group(); Label label = new Label("Sample Label"); label.setId("sampleLabel"); root.getChildren().add(label); Scene scene = new Scene(root,300,275); scene.getStylesheets().add(getClass().getResource("applicationStyles.css").toExternalForm()); primaryStage.setTitle("Hello World"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
这是我的css文件
/**/ @font-face { font-family:'Roboto'; src:url("Roboto-Thin.ttf"); } #sampleLabel{ -fx-font-family: Roboto ; }
这是我在Intellij Idea中遇到的错误
Dec 02,2015 9:16:34 AM com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged INFO: Could not load @font-face font [file:/C:/Users/UserName/Desktop/Java8%20projects/TeamViewer/out/production/TeamViewer/sample/Roboto-Thin.ttf]
All the project files are in one package and the font file is also present in the out>production>TeamViewer>sample>Roboto-Thin.ttf. I also upgraded from jdk-8u65 to jdk-8u66
谢谢,非常感谢任何帮助.
解决方法
我找到了可能的原因和解决办法:
在引擎盖下,css-loader使用Font.loadFont函数将字体加载到CSS中.
Font.loadFont如果失败,则返回null,这给出了“警告”.
在引擎盖下,css-loader使用Font.loadFont函数将字体加载到CSS中.
Font.loadFont如果失败,则返回null,这给出了“警告”.
似乎这个功能不能用它的路径/ url-string.
因此,您需要解决路径,然后将其替换为空格.
这意味着您必须使用代码加载字体代替CSS(现在).
在Clojure,我的工作如下所示:
(require '[clojure.java.io :as cio]) (require '[clojure.string :as s]) (-> "fonts/SourceCodePro-Regular.ttf" cio/resource str (s/replace "%20" " ") (javafx.scene.text.Font/loadFont 10.))