在Java中,我们可以创建一个Font对象:
new Font("Helvetica", Font.PLAIN, 12);
我的问题是如何从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());
}
编辑:更重要的是,我还想知道Font构造函数new Font("What attribute is this?", Font.PLAIN, 12)
中的第一个属性调用是什么
问:它是fontName,family,fontFace,name还是什么?
答案 0 :(得分:3)
在您的系统上,该字体可能会映射到其他内容
Font helvetica = new Font("Helvetica", Font.PLAIN, 12);
System.out.println(helvetica.getFontName(Locale.US));
我得到了
SansSerif.plain
要输出所有本地字体的名称,您可以使用类似
的内容GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
Font[] allFonts = ge.getAllFonts();
for (Font font : allFonts) {
System.out.println(font.getFontName(Locale.US));
}
答案 1 :(得分:2)
此程序将显示您系统中所有字体的列表:
import java.awt.GraphicsEnvironment;
public class ListJavaFonts
{
public static void main(String[] args)
{
String fonts[] =
GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
for ( int i = 0; i < fonts.length; i++ )
{
System.out.println(fonts[i]);
}
}
}
答案 2 :(得分:1)
new Font("Helvetica", Font.PLAIN, 12);
在这种情况下,最好使用以下内容:
new Font(Font.SANS_SERIF, Font.PLAIN, 12);
这将产生该操作系统默认使用的未修饰Font
。
在Windows上,它将是Arial。在OS X上它将是Helvetica。在* nix机器上它可能是,或者是第三个未修饰的Font
。
在回答您的具体问题时,我总是发现'font family'字符串对于创建字体实例很有用。
答案 3 :(得分:0)
我知道这是一个老问题,但有一些悬而未决的问题。
更重要的是,我还想知道Font构造函数new Font中的第一个属性调用是什么(“这是什么属性?”,Font.PLAIN,12)问:它是fontName,family,fontFace,name还是什么?
如果使用IDE(我正在使用IntelliJ)反编译Java类,您将看到:
public Font(String name, int style, int size) {
this.name = (name != null) ? name : "Default";
this.style = (style & ~0x03) == 0 ? style : 0;
this.size = size;
this.pointSize = size;
}
public String getName() {
return name;
}
public String getFontName() {
return getFontName(Locale.getDefault());
}
这告诉您可以使用getName检索调用构造函数时使用的名称,但是对getFontName的调用将返回默认文本。这就是为什么你可以将名称设置为Helvetica,然后调用getFontName并返回除Helvetica之外的其他内容。