使用JavaFX8和css加载自定义字体

使用JavaFX8和css加载自定义字体,css,javafx,fonts,javafx-8,custom-font,Css,Javafx,Fonts,Javafx 8,Custom Font,问题 我正在为我的应用程序创建一个以超级马里奥为主题的css样式表,我想将我的按钮的字体更改为名为Press Start 2P的自定义字体,这是NES马里奥游戏中使用的像素化字体。然而,由于一些奇怪的原因,我的应用程序没有加载字体 CSS代码: .text { -fx-font-family: "Press-Start-2P"; } .button { -fx-background-color: transparent; //-fx-text-fill: rgb(255

问题

我正在为我的应用程序创建一个以超级马里奥为主题的css样式表,我想将我的按钮的字体更改为名为Press Start 2P的自定义字体,这是NES马里奥游戏中使用的像素化字体。然而,由于一些奇怪的原因,我的应用程序没有加载字体

CSS代码:

.text
{
    -fx-font-family: "Press-Start-2P";
}

.button
{
    -fx-background-color: transparent;
    //-fx-text-fill: rgb(255, 255, 255);
}

@font-face
{
    font-family: Press-Start-2P;
    src: url("PressStart2P.ttf");
}
当我运行应用程序时,它会给我以下消息:

2015年4月25日上午8:22:32 com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged 信息:无法加载@font-face font[文件:/C:/Users/Ahmad%20El-Baher/Documents/Programming/Java/Integrative%20Project%20Semester%204/trunk/build/classes/res/styles/press start2p.ttf]


如何使应用程序正确加载字体?

查看CSS文件和TTF文件是否位于同一目录中。根据您的代码,
src:url(“按start2p.ttf”)它们应该在同一个目录中

另外,尝试更换

@font-face
{
    font-family: Press-Start-2P;
    src: url("PressStart2P.ttf");
}

请注意,以下内容仅适用于Java版本>=1.8u60

我也有同样的问题。在
JavaFX
8中加载
CSS
的方法是设置字体面文件,然后使用字体名称作为参考,可以通过预览字体找到该文件

字体文件与
CSS
相关。我有字体的根集,但您可以删除它,并根据每个节点保留它

CSS代码

字体文件预览(下面可以看到真实的字体名称)


我知道有点晚了。但是对于那些仍然需要帮助的人,我认为这里的问题是你的项目名称中有空格。尝试使用IntegrativeProjectSemester4重命名您的项目

我可以添加谷歌字体。
例如

/* TOP OF THE FILE */
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
@import url('https://fonts.googleapis.com/css2?
family=Ranchers&display=swap');
注意:这是我成功添加外部字体的唯一方法


PS:但打包后这仍然不起作用

请记住,如果您的css文件位于文件夹(样式)中,那么如果.ttf位于文件夹样式中,您的代码将正常工作。否则,您必须通过路径查找文件。例如,如果.ttf位于文件夹(父文件夹)中,而文件夹(父文件夹)是样式的父文件夹,则路径必须位于css中(src:url(../PressStart2P.ttf”);其中(..)意味着我返回一个文件夹。这只是一个例子。我的答案不是正确的答案吗?你好@Unbalanced!非常抱歉让你和其他人一起被绞死。我记得我很久以前就解决了这个问题,但我完全忘了我提出的这个问题,所以我只记得最近你发表评论的时候。不幸的是,我不记得我是如何解决这个问题的,所以我不知道我的这个问题该怎么办…@欠平衡谢谢你的关心!顺便说一句:)使用字体信息中相同的字体族名称是至关重要的,否则CSS将不会使用字体。答案基于我曾经遇到的类似问题。有很多理由可以面对这个问题,我的答案只是其中一种情况。否决票是没有道理的。
@font-face {
    src: url("freeuniverse2.ttf"),
}

.root {
    -fx-background-color: gray;
    -fx-font-family: "Free Universe 2";
}

#window {
    -fx-border-image-source: url("images/windowfill.png");
    -fx-border-image-slice: 17 6 13 6 fill;
    -fx-border-image-width: 17 6 13 6 ;
    -fx-background-color: gray;
}

.text {
    -fx-text-fill: white;
    -fx-font-size: 16px;
    -fx-font-family: "Free Universe 2";
    -fx-background-color: transparent;
}

.pane {
    -fx-border-image-source: url("images/windowfill.png");
    -fx-border-image-slice: 17 6 13 6 fill;
    -fx-border-image-width: 17 6 13 6 ;
    -fx-background-color: gray;
}

.vbox {
        -fx-border-image-source: url("images/windowfill.png");
    -fx-border-image-slice: 17 6 13 6 fill;
    -fx-border-image-width: 17 6 13 6 ;
    -fx-background-color: gray;
}

#title-text {
    -fx-text-fill: white;
    -fx-font-size: 36px;
    -fx-font-family: "Free Universe 2";
}

.label {
    -fx-text-fill: white;
    -fx-font-size: 16px;
    -fx-font-family: "Free Universe 2";
    -fx-background-color: transparent;
}
/* TOP OF THE FILE */
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
@import url('https://fonts.googleapis.com/css2?
family=Ranchers&display=swap');
.my-robot-label{
    -fx-font-family: 'Roboto';
}

.my-rancher-label{
    -fx-font-family: 'Ranchers';
}