【发布时间】:2013-03-04 12:35:39
【问题描述】:
我安装的 OS X 10.8 预装了家族 Helvetica Neue 中的 11 种字体。我正在尝试找到一种方法来访问具有 medium 或 condensed 等样式的字体,这些字体不能由位掩码值 Font.BOLD 和 Font.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