如何在JavaFX中嵌入字体?

时间:2018-10-11 01:09:21

标签: java eclipse user-interface javafx graphics

如何在JavaFX Application中嵌入自定义字体?我尝试制作fonts.mf文件,并按照说明链接到下面的类似问题。如果不需要,我不想使用CSS。我想专注于学习JavaFX的核心知识。

这就是我一直在搞的事情:

private static Label makeTitle() {
   Label title = new Label("Bandit King");
   Font font = new Font("OldStyle", 40);
   title.setFont(font);

   return title;
}

我的fonts.mf文件仅包含以下行:

OldStyle = /home/myName/Desktop/My_Java_Projects/Bandit_King/banditKing/OLDSH.TTF

这不是this question的重复项。 Eclipse说:“ CustomFontApp,无法解析为一种类型。”

1 个答案:

答案 0 :(得分:1)

  

我尝试制作fonts.mf文件

您不需要它。

  

这不是此问题的重复项。 Eclipse说:“ CustomFontApp,无法解析为一种类型。”

CustomFontApp只是您链接的答案中使用的类的名称-您的类名称明显不同,应该更改它。

此行:

Font font = new Font("OldStyle", 40);

仅在系统上安装OldStyle字体时才会加载。您没有使用已安装的字体,而是使用嵌入的字体,因此无法使用。

您需要使用Font.loadFont(InputStream, double)Font.loadFont(String, double)从磁盘加载您的自定义字体:

// use this to load font from your application's resource folder (`res/fonts/OLDSIH.TTF`)
Font font = Font.loadFont(getClass().getResourceAsStream("/fonts/OLDSIH.TTF"), 40);

// or this one to load font from the specified (absolute) path
// (not recommended, use the method above or, at least, change this into relative path):
Font font = Font.loadFont("file:///home/myName/Desktop/My_Java_Projects/Bandit_King/banditKing/OLDSH.TTF", 40);