在名为 data 的文件夹中,我有一个名为 font.ttf 的字体文件。
我想读它,像这样:
try {
Font f = Font.createFont(Font.TRUETYPE_FONT,
new File("data/font.ttf")).deriveFont(12.0);
} catch (IOException | FontFormatException e) {}
直到我从系统删除了相同的字体(它仍然在数据文件夹中!)之前一直工作正常。 现在,它只显示了Java的通用字体。
是否可以从不在System Fonts文件夹中的文件中读取字体?
答案 0 :(得分:0)
一旦你加载了Font f
,你似乎没有做任何事情,所以你可能只是因为块范围而失去它。
Font fallback = load some system default;
Font myfont = null;
...
try {
File ffile = new File("data/font.ttf");
myfont = Font.createFont(Font.TRUETYPE_FONT, ffile).deriveFont(12);
} catch (FontFormatException ffe) {
System.out.println("Tried to load a bad font...");
ffe.printStackTrace();
} catch (IOException ioe) {
System.out.println("I have no idea what went wrong");
ioe.printStackTrace();
} finally {
loadMyApplication(myfont == null ? fallback : myfont);
}
或者,如果您确实需要该字体来进行正确的UI构建或内容呈现,请在loadMyApplication
块中调用try
,以便任何捕获都可以阻止您的应用加载。