Java:字体无法加载(来自外部文件)

时间:2015-04-01 16:53:46

标签: java fonts awt

在名为 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文件夹中的文件中读取字体?

1 个答案:

答案 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,以便任何捕获都可以阻止您的应用加载。