从Jar访问自定义字体

我将在我的应用程序中使用自定义字体。 为此,我使用Font.createFont()方法。 我的代码如下。 当我使用命令运行我的主类时,它工作正常

java myAppl.class

字体文件与我的类文件位于同一目录中。 但是当我将所有文件和字体文件捆绑在JAR中然后从JAR运行我的应用程序时,不会加载自定义字体。 为什么?

 InputStream is = this.getClass().getResourceAsStream("myfont.TTF"); uniFont=Font.createFont(Font.TRUETYPE_FONT,is); Font f = uniFont.deriveFont(24f); 

我该怎么办?

  1. 确保字体文件名和扩展名的大小写与文件系统中的大小写完全相同。 Windows可能不区分大小写,但Java是。
  2. 检查getResourceAsStream()返回的InputStream是否为null 。 如果为null ,则表示未找到资源。
  3. 将字体放在Jar的根目录中,并在名称前添加“/”作为前缀。

正如安德鲁的回应,我已经测试了上面的代码并且正常工作:

 InputStream is = this.getClass().getResourceAsStream("/myfont.TTF"); uniFont=Font.createFont(Font.TRUETYPE_FONT,is); 

在文件名前缺少“/”。 注意:Netbeans的jar包

尝试将字体复制到jre / lib / font文件夹

或使用包限定名称(“com.mypackagename.myfont.TTF”)