无法读取* .TTF文件(Can't Read *.ttf File)

2019-10-18 20:16发布

我编程字典我创建的语言。 语言不使用任何英文字母,所以我使用免费的在线软件在创建了自己的字体http://www.myscriptfont.com/ ,这将有望让我用我的语言的符号。 第一步,让那么这个字典将导入该自定义字体,但它不工作。 这里就是我将其导入代码的一部分:

    /**
     * Constructor for class Bank
     */
    public Bank() throws Exception
    {
        //Previous code creates frame and pane with no problems

        try{
            font1 = Font.createFont(Font.TRUETYPE_FONT, new File("fonts/ShoriPart1.ttf"));
        }
        catch(IOException|FontFormatException e){
        }
        font1 = font1.deriveFont(Font.PLAIN, 20);
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        ge.registerFont(font1);
        JList fonts = new JList(ge.getAvailableFontFamilyNames());
        JOptionPane.showMessageDialog(null, new JScrollPane(fonts));
        JLabel l = new JLabel("The quick brown fox jumps over the lazy dog. 0123456789");
        l.setFont(font1);
        pane.add(l);
        frame.pack();

        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

每次我跑了这一点,把它扔到了java.io.IOException的“无法读取字体\ ShoriPart1.ttf(java.awt.font中)。” 我用的try / catch试图阻止这一点,但它结束了只是没有创造的字体都没有。 是不是有什么错误的字体文件? 有没有办法在代码解决这一问题?

编辑:我只是想使用的字体在Microsoft Word,它工作得很好。

Answer 1:

尝试使用inputStream将它传递给函数的createFont:看它是否有效!

InputStream myStream = new BufferedInputStream(new FileInputStream("font.ttf"));
ttfBase = Font.createFont(Font.TRUETYPE_FONT, myStream);

它发生在我一次,使料流工作。 不知道实际的原因,虽然



Answer 2:

首先提示: 从来没有空的catch块 。 在最低限度,你应该打印堆栈跟踪System.out ,但最好再扔掉它。 绕过这样的例外就是坏的。

假设异常消息是复制的文本字符串,您可能希望确保该程序可以读取该文件所在的文件夹(即有权限)。 如果确实如此,那么它极有可能是与文件格式的问题。



文章来源: Can't Read *.ttf File