【问题标题】:How to access all fonts of a font family with Swing如何使用 Swing 访问字体系列的所有字体
【发布时间】:2013-03-04 12:35:39
【问题描述】:

我安装的 OS X 10.8 预装了家族 Helvetica Neue 中的 11 种字体。我正在尝试找到一种方法来访问具有 mediumcondensed 等样式的字体,这些字体不能由位掩码值 Font.BOLDFont.ITALIC 表示.

GraphicsEnvironment.getAllFonts() 为所有这些字体返回Font 对象,但使用JLabel.setFont() 应用它们似乎只使用上述位掩码可表示的样式。这显示在下面屏幕截图的左侧,它将其与在 TextEdit 中使用的所有字体的示例进行比较。

如果使用字体的全名或其 PostScript 名称构造 Font 对象,也会发生同样的情况。

有没有办法使用所有这些字体,或者将其应用到 Swing 组件,或者在绘制到Graphics2D(或Graphics)实例时?

下面是我用来在上面截图中生成对话框的代码。

package fahrplan;

import java.awt.*;
import javax.swing.*;

public class FontsMain {
    public static void main(String[] a) {
        GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();

        JPanel contentPane = new JPanel();
        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.PAGE_AXIS));

        for (Font i : e.getAllFonts()) {
            String name = i.getFontName();

            if (name.startsWith("HelveticaNeue")) {
                JLabel label = new JLabel(name);

                label.setFont(i.deriveFont(18f));

                contentPane.add(label);
            }
        }

        JFrame frame = new JFrame("Fonts");
        frame.setContentPane(contentPane);
        frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}

【问题讨论】:

标签: java macos swing fonts awt


【解决方案1】:

我会这样做的。

int size=12, style=0;

GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
final Font[] fonts = e.getAllFonts();
for(int i=0; i<fonts.length; i++)
    {
        JLabel label = new JLabel(Font[i].getName);
        label.setFont(new Font(Font[i].getName, size, style));
        contentPane.add(label);
    }

我希望这会有所帮助。

【讨论】:

  • 我现在可以发现的代码中唯一的区别是您使用的字体大小为 12 pt 而不是 18。我认为这没有什么不同。 ;) 另外,您是否看过我的问题中的屏幕截图?
  • 我相信你!后来我发现这只发生在多个样式存储在同一个.dfont 文件中的字体上,这是 OS X 独有的。我仍在寻找一种在 Mac 上使用所有这些样式的方法。跨度>
猜你喜欢
  • 2016-10-15
  • 2014-07-27
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
相关资源
最近更新 更多