jdk 8可以读取自定义字体,而jdk 11则不能读取

问题描述 投票:0回答:1

这是我的代码:

public static Font getFont() {
        try {
            InputStream is = Object.class.getResourceAsStream("/HARCOMAS.TTF");
            return Font.createFont(Font.TRUETYPE_FONT, is);
        } catch (FontFormatException | IOException ex) {
            Logger.getLogger(StartPanel.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }

我的计算机上的版本是jdk 8,该程序可以运行,但是,当我使用jdk 11将程序复制到朋友计算机上时,发生了异常。

java.io.IOException: Problem reading font data.
 at java.desktop/java.awt.Font.createFont0(Font.java:1183)
 at java.desktop/java.awt.Font.createFont(Font.java:1052)
 at client.utils.PanelUtil.getFont(PanelUtil.java:39)
 at client.services.DrawGame.<init>(DrawGame.java:24)
 at client.views.GamePanel.createPanel(GamePanel.java:31)
 at client.views.GamePanel.<init>(GamePanel.java:24)
 at client.views.PanelHolder.<clinit>(PanelHolder.java:12)
 at client.views.MainFrame.main(MainFrame.java:29)

我不知道,字体文件在资源目录下。

java swing
1个回答
-2
投票

尝试一下:

private void loadResources() throws FontFormatException, IOException  {
        Font fontRaw = Font.createFont(Font.TRUETYPE_FONT, new File("resources/fonts/slkscr.ttf"));
        Font fontBase = fontRaw.deriveFont(28f);
        this.font = new TrueTypeFont(fontBase, false);
}

更多参考资料:

也请尝试以下方法:

try {
     GraphicsEnvironment ge = 
         GraphicsEnvironment.getLocalGraphicsEnvironment();
     ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf")));
} catch (IOException|FontFormatException e) {
     //Handle exception
}
© www.soinside.com 2019 - 2024. All rights reserved.