我将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中。
关闭流。为了简洁起见,许多示例都偷工减料(尽管通常这是个坏主意)。