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

Posted

技术标签:

【中文标题】获取字体系列的可用字体样式【英文标题】:Get Available font styles for font family 【发布时间】:2014-01-13 12:47:32 【问题描述】:

我们使用

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

获取可用字体列表。我想要一种能够返回特定字体样式的方法。例如。 Segoe UI 提供以下样式:黑色、黑色斜体、粗体、粗体斜体、浅色、常规等。

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

【问题讨论】:

【参考方案1】:

我想你可以试试这样的:

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]

问题是您不知道哪个是粗体或斜体等,因为所有字体都有“纯”样式。仅使用名称有效。

【讨论】:

以上是关于获取字体系列的可用字体样式的主要内容,如果未能解决你的问题,请参考以下文章

css中有没有办法清除所有字体系列+字体大小样式声明?

Java FX:粗体和斜体样式未应用于某些字体系列

如何获取样式表设置的Qt中小部件的字体?

如何解析包含样式、颜色、字体系列、字体大小等 Html 标签的数据,并在 android 的 textview 中设置

CSS - 样式字体真棒字体图标

Xamarin.Forms:有没有办法在xaml中设置派生样式的默认字体(系列)?