如何从Java获取字体名称列表

use*_*460 5 java fonts awt

在Java中,我们可以创建一个Font对象:

new Font("Helvetica", Font.PLAIN, 12);
Run Code Online (Sandbox Code Playgroud)

我的问题是如何从Java中获取整个字体名称列表,例如"Helvetica",我们可以将它作为Font构造函数的参数使用?

我尝试了以下方法,但我找不到所有列表中的"Helvetica".

    GraphicsEnvironment ge;  
    ge = GraphicsEnvironment.getLocalGraphicsEnvironment();  

    String[] names = ge.getAvailableFontFamilyNames();
    Font[] allFonts = ge.getAllFonts();

    for(int x=0; x<names.length; x++)
        System.out.println(names[x]);

    for(int x=0; x<allFonts.length; x++){           
        System.out.println(allFonts[x].getName());
        System.out.println(allFonts[x].getFontName());
        System.out.println(allFonts[x].getFamily());
        System.out.println(allFonts[x].getPSName());
    }
Run Code Online (Sandbox Code Playgroud)

编辑:更重要的是,我还想知道Font构造函数中的第一个属性调用是什么new Font("What attribute is this?", Font.PLAIN, 12)

问:它是fontName,family,fontFace,name还是什么?

Ell*_*sch 7

在您的系统上,该字体很可能会映射到其他内容

Font helvetica = new Font("Helvetica", Font.PLAIN, 12);
System.out.println(helvetica.getFontName(Locale.US));
Run Code Online (Sandbox Code Playgroud)

我得到

SansSerif.plain
Run Code Online (Sandbox Code Playgroud)

要输出所有本地字体的名称,您可以使用类似

GraphicsEnvironment ge = GraphicsEnvironment
        .getLocalGraphicsEnvironment();

Font[] allFonts = ge.getAllFonts();

for (Font font : allFonts) {
    System.out.println(font.getFontName(Locale.US));
}
Run Code Online (Sandbox Code Playgroud)