如何从具有多个TTF文件的字体系列中导入自定义java.awt.Font?(包括一个例子)测试 1测试 2
我知道你可以用这样的东西在Java中导入字体:
File file = new File(fontPath);
Font font = Font.createFont(Font.TRUETYPE_FONT, file);
// alternative:
// Font font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream(file));
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(font);
然后,例如,您可以使用来获得所需的样式和大小。font.deriveFont(Font.PLAIN, 20);
例
但是现在让我们以字体为例,那里有四个TTF文件:Consolas
-
consola.ttf
(普通) -
consolab.ttf
(粗体) -
consolai.ttf
(斜体) -
consolaz.ttf
(粗体和斜体)
当然,您可以使用上述方法导入,但使用与使用不同,因为普通字体只是简单地转换为看起来像粗体字体。consola.ttf
font.deriveFont(Font.BOLD, 20);
consolab.ttf
示例图片
- 在这里,我使用了安装的字体和(作为旁注,如果字体安装在系统上,如果您使用,您还可以获得正确的粗体字体):
new Font("Consolas", Font.PLAIN, 20);
new Font("Consolas", Font.BOLD, 20);
deriveFont(Font.BOLD);
- 这是 ,导入并派生为粗体字体(两者都具有大小 20,如上例所示):
consola.ttf
createFont
好吧,安装后这不是问题,但我不期望其他人有自定义字体,所以我想将TTF放入jar文件中,以便我可以在初始化期间通过导入它们。getResourceAsStream(path)
有没有办法导入所有相关的TTF,然后调用它,以便它像安装的字体一样使用(图1),并且它看起来不像派生的“假”粗体字体(图2)?new Font("Custom Font Name", fontStyle, fontSize);