获取系统默认字体

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

JavaFX使这更容易:

import javafx.scene.text.Font; 

然后使用:

 Font defaultFont = Font.getDefault(); 

要么

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

尝试这个:

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

使用定义的Font常量 ,如SERIF / SANS_SERIF等。

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

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

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

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)); } 

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

  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; } 

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

在Windows中,Segoe UI

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

我选择了Verdana