获取字体系列的可用字体样式

时间:2014-01-13 12:47:33

标签: java fonts

我们使用

String fonts[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

获取可用字体列表。我想要一个能够返回特定字体样式的方法。对于Eg。 Segoe UI有以下几种款式可供选择:Black,Black Italic,Bold,Bold Italic,Light,Regular等。

或者有没有其他方法可以实现相同的输出?

1 个答案:

答案 0 :(得分:2)

我想你可以尝试这样的事情:

public static void main(String[] a)
{
    Set<String> styles = getAvailableStyles("Arial");
    System.out.println(styles);
}

public static Set<String> getAvailableStyles(String name)
{
    Set<String> styles = new HashSet<String>();
    GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
    Font[] fonts = e.getAllFonts();
    for (Font f : fonts)
    {
        if (f.getFamily().equals(name))
            styles.add(f.getName());
    }
    return styles;
}

输出:

[Arial-BoldMT, Arial-BoldItalicMT, Arial-ItalicMT, ArialMT]

问题是你不知道哪一个是粗体或斜体等,因为所有字体的样式都是“普通”。只使用名称有效。