Java:如何读取字体文件的属性?

时间:2011-12-03 01:46:20

标签: java file fonts

我有一个用户上传字体(TTF和OTF)的应用程序,我想将它们分为常规,斜体,粗体和粗体斜体。 Java中有没有办法告诉字体是什么样的风格?

更新:this answer seems to be how to do it in PHP

以下代码表示'HelveticaNeueLTW1G_Bd.otf'的样式为'plain',但我希望它以粗体字形式报告。

File f = new File("/Volumes/Files/work/workspace/FontTest/src/com/opensoft/fonttest/", "HelveticaNeueLTW1G_Bd.otf");
System.out.println(f);
InputStream inputStream = new FileInputStream(f);
Font createdFont = Font.createFont(Font.TRUETYPE_FONT, inputStream);
System.out.println(createdFont);
System.out.println(createdFont.getAttributes());

输出

java.awt.Font[family=HelveticaNeueLTW1G-Bd,name=HelveticaNeueLTW1G-Bd,style=plain,size=1]
map of {family="HelveticaNeueLTW1G-Bd", weight=1.0*, width=1.0*, posture=0.0*, size=1.0, transform=null*, superscript=0*, tracking=0.0*[btx=null, ctx=null]}

谢谢!

3 个答案:

答案 0 :(得分:1)

我很确定这里的问题是字体的名称和样式不同于可以在运行时应用的转换(例如斜体粗体)时间过去了。 deriveFont。有效地,一开始设计为粗体的字体在使用粗体变体时会变得更加粗体。

因此,Java只会报告该字体的默认加载变体是'not(using the)bold(variant)'。

答案 1 :(得分:0)

使用Font boldFont = createdFont.deriveFont(Font.BOLD);。如果字体中缺少粗体样式属性,我不确定它是否有效。

答案 2 :(得分:0)

无法用直接的Java弄明白,但你可以使用命令行工具documented in this answer