1

我将 ttf 文件捆绑在一个 jar 文件中,并打算将它们用作渲染文本的物理字体。

我在互联网上看到的所有示例代码如下:

InputStream is=Essai.class.getResourceAsStream(resourcePath);
Font f=Font.createFont(fontFormat, is);

关于这段代码,我有两个问题:

  • 首先,一种字体,比如 DejaVu,包含 4 个不同的 ttf 文件,每种样式 1 个(常规、粗体、斜体和粗斜体);从一个单一的 ttf(4 个中的任何一个)创建一个字体就足够了吗?

  • 其次,我看到的所有代码在创建字体后都没有关闭流,这让我想知道这是故意的吗?也许创建的字体(稍后将在本地 GraphicsEnvironment 中注册)需要流保持打开状态?

    createFont() 方法的 javadoc 说:“此方法不会关闭 InputStream。”

    所以我的第二个问题是我应该在创建字体后关闭流,还是保持打开?
4

1 回答 1

3
  1. 我不相信加载一个变体会加载它们。但是,这没关系。Java 可以Font使用粗体+斜体的任意组合来制作变体。我只会把标准Font放在罐子里。
  2. 关闭流。为了简洁起见,许多示例偷工减料(尽管这通常是一个坏主意)。
于 2012-04-22T16:01:33.703 回答