【问题标题】:Accessing custom font from Jar从 Jar 访问自定义字体
【发布时间】:2014-02-18 22:55:58
【问题描述】:

我将在我的应用程序中使用自定义字体。为此,我使用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);

我该怎么办?

【问题讨论】:

  • 字体的路径是否正确,与jar文件中的resources/fonts/myfont.TTF不同?还要确保大小写正确。

标签: java


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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 2011-03-26
        • 2013-02-26
        • 2014-04-14
        • 2012-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多