我安装的 OS X 10.8 预装了Helvetica Neue系列中的 11 种字体。我正在尝试找到一种方法来访问具有medium或condensed等样式的字体,这些样式不能由位掩码值Font.BOLD
和Font.ITALIC
.
GraphicsEnvironment.getAllFonts()
返回Font
所有这些字体的对象,但应用它们JLabel.setFont()
似乎只使用上述位掩码可表示的样式。这显示在下面屏幕截图的左侧,将其与在TextEdit中使用的所有字体的样本进行比较。
如果Font
使用字体的全名或其 PostScript 名称构造对象,也会发生同样的情况。
有没有办法使用所有这些字体,无论是通过将它应用到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);
}
}