gpt4 book ai didi

Java 加载自定义字体文件 (.ttf)

转载 作者:行者123 更新时间:2023-12-05 01:03:02 27 4
gpt4 key购买 nike

我在下面使用了这段代码,它提出了这个堆栈跟踪:

java.io.FileNotFoundException: font.ttf (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at com.ominious.core.graphics.Assets.getFont(Assets.java:55)
at com.ominious.core.graphics.Assets.loadImages(Assets.java:37)
at com.ominious.core.GamePanel.init(GamePanel.java:63)
at com.ominious.core.GamePanel.run(GamePanel.java:69)
at java.lang.Thread.run(Thread.java:744)
Exception in thread "Thread-1" java.lang.NullPointerException
at com.ominious.core.graphics.Assets.loadImages(Assets.java:49)
at com.ominious.core.GamePanel.init(GamePanel.java:63)
at com.ominious.core.GamePanel.run(GamePanel.java:69)
at java.lang.Thread.run(Thread.java:744)

我使用此代码(我在我知道有效的资源文件中调用该方法)

    private static Font getFont(String name) throws Exception {

Font font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream(name));

return font;
}

我在这里称它为:

try {
FONT = getFont("font.ttf");

tileSprites = ImageIO.read(getClass().getResourceAsStream("/mom.gif"));

SPLASH_BACKGROUND = ImageIO.read(getClass().getResourceAsStream("/swag.gif"));

} catch (Exception e) {
Game.logger.log(LogType.ERROR_STACKTRACE);

e.printStackTrace();
}

(上面的类有效,我的图像加载)

这不起作用有什么原因吗?有没有更好的方法? (是的,我的目录中确实有它)

最佳答案

从资源中加载字体并不难,就像加载图像一样。我知道这个问题是一年前提出的,但我希望最终能提供答案。

只需使用文档 here ,其中详细介绍了如何将自定义字体加载到 GraphicsEnvironment 中。它应该如下所示:

    GraphicsEnvironment ge = null;
try{
ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, game.getClass().getResourceAsStream("/fonts/fantasy.TTF")));
} catch(FontFormatException e){} catch (IOException e){}

注意:我使用 classInstance.getClass().getResourceAsStream(String fileDir) 从 Jar 文件中的资源目录中加载文件。

在图形环境中注册字体后,该字体可在 getAvailableFontFamilyNames() 调用中使用,并可在字体构造函数中使用。

希望这最终能回答你的问题!

关于Java 加载自定义字体文件 (.ttf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com