1

我的 Java 小程序初始化函数中有以下几行:

try {
  this.font = Font.createFont(
    Font.TRUETYPE_FONT,
    new File("fonts/myfont.ttf")
  ).deriveFont(24f);
  GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font);
} catch(Exception ex){
  System.out.println(ex);
}

当我用 appletviewer 打开小程序时,字体按预期加载。但是,当我使用任何 Web 浏览器打开 HTML 页面时,Java 控制台中会出现以下错误:

java.security.AccessControlException:访问被拒绝(java.io.FilePermission fonts/myfont.ttf 读取)

并加载默认字体。

(如何)我能解决这个问题吗?

4

1 回答 1

3

您不能使用小程序访问本地文件——这是设计使然!

您可以(并且应该)将字体文件嵌入到您的.jar文件中,并使用Class.getResourceAsStream或类似的方法来访问它(Font.createFont具有采用 的重载InputStream,这正是Class.getResourceAsStream返回的类型)。

于 2010-10-09T17:34:18.600 回答