1

作成中の言語の辞書をプログラミングしています。この言語では英字を使用しないので、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 "Can't read fonts\ShoriPart1.ttf (in java.awt.Font)" がスローされました。それを防ぐためにtry/catchを使用しましたが、最終的にはフォントがまったく作成されませんでした。フォントファイルに何か問題がありますか?コードでこれを修正する方法はありますか?

編集: Microsoft Word でフォントを使用してみましたが、問題なく動作しました。

4

2 に答える 2

2

inputStreamこれを createFont 関数に渡すために使用してみてください: 動作するかどうかを確認してください!

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

それは私に一度起こり、ストリームを渡すことはうまくいきました。本当の理由はわかりませんが、

于 2013-10-25T14:16:52.233 に答える