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

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

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


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




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



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

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

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

最佳答案

我不相信加载一个变体会全部加载它们。但是,那没关系。 Java可以使Font变体与粗体+斜体的任何组合。我只将标准Font放在Jar中。
关闭流。为了简洁起见,许多示例都偷工减料(尽管通常这是个坏主意)。

07-28 02:39
查看更多