我用在应用程序中创建了一个单空间字体
Font f = new Font(Font.MONOSPACED, Font.PLAIN, 18);
当我在PC上运行应用程序时,字体看起来很好(Ubuntu 12.04 LTS, Java SE Runtime Environment - build 1.7.0_25-b15
)。
当我在ARM计算机上运行应用程序时,字体向右倾斜(Debian Squeeze, armel, Java SE Embedded Runtime Environment - build 1.7.0_10-b18
)。
我测试了这个小程序:
public class Main {
public static void main(String[] args) {
setTerminalFont(new Font(Font.MONOSPACED, Font.PLAIN, 18));
setTerminalFont(new Font("DejaVu Sans Mono", Font.PLAIN, 18));
}
private static void setTerminalFont(Font x_font) {
System.out.println("Font family=["+x_font.getFamily()+"] name=["+x_font.getFontName()+"] i-angle="+x_font.getItalicAngle());
}
}
在PC电脑上,它会打印:
Font family=[Monospaced] name=[Monospaced.plain] i-angle=0.0
Font family=[DejaVu Sans Mono] name=[DejaVu Sans Mono] i-angle=0.0
在ARM计算机上,它打印:
Font family=[Monospaced] name=[Monospaced.plain] i-angle=0.1899996
Font family=[DejaVu Sans Mono] name=[DejaVu Sans Mono Oblique] i-angle=0.1899996
有人能解释一下ARM版本为什么使用DejaVu Sans MonoOblique吗?
如何使java使用普通的DejaVu Sans Mono字体而不是倾斜字体?
由于plainFont.MONOSPACED
逻辑字体在我的系统上有缺陷,我的解决方案是用列出我系统上所有可用的字体
System.out.println("Listing available fonts");
for (Font f : GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts())
System.out.println("- "+f);
尝试单声道和打字机,声称是普通或常规,或者任何不倾斜的东西,直到我找到一个真正的纯。
我最终得了Lucida Sans Typewriter Regular
。