获取系统默认字体

时间:2011-08-21 18:36:51

标签: java fonts

有没有办法在Java中获取系统默认字体名称?默认字体可能与操作系统不同。因此,如果我们使用字体Arial并且jar在Linux中运行而没有安装Arial字体,则会造成麻烦。

8 个答案:

答案 0 :(得分:25)

试试这个:

private final Font FONT = new JLabel().getFont();

答案 1 :(得分:11)

JavaFX让这更容易:

import javafx.scene.text.Font;

然后使用:

Font defaultFont = Font.getDefault();

// Where 14 is the font size
Font defaultFont = new Font(14);

答案 2 :(得分:5)

使用定义的Font constants,例如SERIF / SANS_SERIF等。

答案 3 :(得分:5)

我目前正在使用它来获取默认字体,虽然我不想使用图形对象来获取它:

        private final Font getFont()
            {
                Graphics g = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB).getGraphics();
                Font font = new Font(g.getFont().toString(), 0, 12);
                g.dispose();

                return font;
            }

答案 4 :(得分:4)

我认为没有办法检索系统默认字体(例如,在Swing / AWT中,字体通常与当前的LAF和组件相关联),但如果您关注的是字体兼容性 - 您可以检查您对所有系统字体使用的字体:

GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] allFonts = e.getAllFonts();

如果不存在则进行“故障转移”选择。

答案 5 :(得分:4)

在这里查看public static Font decode(String str)。当decode方法接收空指针作为参数时,它返回“Dialog”字体,该字体通常是系统字体。

答案 6 :(得分:3)

getFont()返回当前字体,这是(通常是?)默认字体。 我这样做是为了增加字体大小。

public MyTextArea(){
    Font currentFont = super.getFont();
    String fontName = currentFont.getFontName();
    int fontStyle = currentFont.getStyle();
    int fontSize = currentFont.getSize() + 4;
    super.setFont(new Font(fontName, fontStyle, fontSize));
}

答案 7 :(得分:0)

在Windows中,Segoe UI

访问http://www.apaddedcell.com/sites/www.apaddedcell.com/files/fonts-article/final/index.html以查看预装字体列表。

我选择了Verdana