获取系统默认字体
有没有办法在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