2015-04-25 89 views
7

的问题加载自定义字体和

我创建为我的应用超级马里奥主题的CSS样式表,我想我的按键的字体更改为所谓按自定义字体启动2P,这是NES Mario游戏中使用的像素化字体。但是,我的应用程序由于某种奇怪的原因没有加载字体。

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日上午08时22分32秒com.sun.javafx。 css.StyleManager loadStylesheetUnPrivileged INFO:无法加载@ font-face字体[file:/ C:/ Users/Ahmad%20El-Baher/Documents/Programming/Java/Integrative%20Project%20Semester%204/trunk/build/classes/res/styles/PressStart2P.ttf]

如何让我的应用程序正确载入我的字体?

+0

请记住,如果您的css文件位于文件夹(样式)中,那么如果.ttf位于文件夹Styles中,则代码将起作用。其他方式您必须去找到file.For例如,如果.ttf是文件夹(父),这是文件的父文件夹,那么路径必须在CSS(src:url(“../ PressStart2P.ttf”); which(..)意味着我回去一个文件夹。这只是一个例子。 – GOXR3PLUS

+0

我的回答不正确吗? – Underbalanced

+0

你好@不平衡!非常抱歉,要把你和其他人一起留在这里。我记得很久以前我已经解决了这个问题,但我完全忘了我提出的这个问题,所以最近我只记得你评论过。不幸的是,我不记得我是如何解决这个问题的,所以我不知道该怎么处理我的这个问题... – gameCoder95

回答

0

看看你的CSS文件和TTF文件是否在同一个目录下。根据你的代码,src: url("PressStart2P.ttf");他们应该在同一个目录。

此外,尝试

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

试过这个,不行的 –

10

注意,下面将的Java版本> = 1.8u60

我有只工作更换

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

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

字体文件是相对于CSS。我设置了字体的根目录,但是您可以删除该目录并将其保留在每个节点的基础上。

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; 
} 

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

Font File Preview

+0

Bravo!非常好的答案+1。 – GOXR3PLUS

+0

在字体信息中使用相同的字体系列名是至关重要的,否则CSS将不会使用该字体。 –

0

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