物理字体java?

时间:2012-04-22 15:55:39

标签: java fonts true-type-fonts embedded-fonts

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

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

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

我对此代码有两个问题:

  • 首先,单个字体,比如说DejaVu,拥有4个不同的ttf文件,每个样式1个(常规,粗体,斜体和粗体斜体);是否足以从一个ttf(4个中的任何一个)创建一个字体?

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

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

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

1 个答案:

答案 0 :(得分:3)

  1. 我不相信加载一个变体会加载它们。但那时,没关系。 Java可以使用粗体+斜体的任意组合制作Font变体。我首先只将标准Font放在Jar中。
  2. 关闭流。为简洁起见,许多例子都在偷工减料(虽然这通常是一个坏主意)。