[英]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.