簡體   English   中英

無法讀取* .ttf文件

[英]Can't Read *.ttf File

我正在為要創建的語言編寫字典。 該語言不使用任何英文字母,因此我使用位於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“無法讀取fonts \\ ShoriPart1.ttf(在java.awt.Font中)。” 我使用try / catch嘗試防止這種情況,但最終卻根本沒有創建字體。 字體文件有問題嗎? 有沒有辦法在代碼中解決這個問題?

編輯:我只是嘗試在Microsoft Word中使用字體,並且效果很好。

嘗試使用inputStream將其傳遞給createFont函數:看看它是否有效!

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

它發生在我身上一次,並且通過了流。 雖然不知道實際原因

第一個技巧: 從來沒有空的門擋 至少應將堆棧跟蹤打印到System.out ,但最好將其重新拋出。 這樣繞開異常是很糟糕的。

假設異常消息是您復制的文字字符串,則可能需要確保該程序可以讀取文件所在的文件夾(即具有權限)。 如果是這樣,則很可能是文件格式有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM