在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还是什么?
在您的系统上,该字体很可能会映射到其他内容
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)