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