2015-04-25 125 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重命名您的項目