Java 如何从jar加载和使用ttf字体

Java 如何从jar加载和使用ttf字体,java,fonts,graphics2d,truetype,Java,Fonts,Graphics2d,Truetype,正在尝试编写一个类: private void gameLevel(Graphics g) { try { InputStream fnt_stream = getClass().getResourceAsStream("resources/iomanoid.ttf"); Font myFont = Font.createFont(Font.TRUETYPE_FONT, fnt_stream); Font Iomanoid = new Font("Iomanoi

正在尝试编写一个类:

private void gameLevel(Graphics g) {
  try {
     InputStream fnt_stream = getClass().getResourceAsStream("resources/iomanoid.ttf");
     Font myFont = Font.createFont(Font.TRUETYPE_FONT, fnt_stream);
     Font Iomanoid = new Font("Iomanoid", Font.BOLD, 40);

     String msg = "Level";
     g.setColor(Color.black);
     g.setFont(Iomanoid);
     g.drawString(msg, 111,111);
  } catch (Exception ex) {
     System.out.println(ex);
  }

将显示消息,但不是指定的字体。

您必须在
GraphicsEnvironment
中注册新创建的字体。像这样

try {
     GraphicsEnvironment ge =  GraphicsEnvironment.getLocalGraphicsEnvironment();
     ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("path/to/your/font/sampleFont.ttf"));
} catch (IOException|FontFormatException e) {
     //Handle exception
}
在其他评论旁边看一看。

替换

Font Iomanoid = new Font("Iomanoid", Font.BOLD, 40);

之后需要注册此字体(如mushfek0001所述)


有关字体的更多信息,请参阅Oracle教程中关于

的旁注,您忘记了关闭输入流。使用
try finally
try with resources
。哦,而且
fnt\u stream
不符合正确的Java样式(只允许多单词常量包含下划线)。
Font iomanoid = myFont.deriveFont(Font.BOLD, 40f);