我使用缓冲图像和(Graphics).drawLine和drawString方法手动将东西绘制到我的游戏中,我实现了一个高分类,通过用户键入的键输入。我使用Graphics中的drawLine方法手动创建了一个闪烁的光标,但我注意到的每个字母都不一定与前一个字母对齐。例如,字母M更大。是否有一种字体在水平方向上每个字母具有相同的像素数?否则,我必须为每个输入的字母计算不同数量的像素,这将需要永远。
换句话说,是否存在Java使用的字体,其类型字符将按照其后面的不可见网格均匀对齐?任何帮助表示赞赏!
答案 0 :(得分:1)
According to the docs,所有Java发行版必须支持的五种字体(实际上是字体系列):
Logical fonts are the five font families defined by the Java platform
which must be supported by any Java runtime environment: Serif, SansSerif,
Monospaced, Dialog, and DialogInput.
你想要Monospaced。您可以按名称请求其他字体(例如LucidaConsole,这是一种比通常的Courier更好的mononspaced字体),但是如果你要求其中一个,你可以保证获得有效的字体。
这些工作,例如(或至少返回一种字体):
Font f = Font.decode( "Lucida Console" );
Font f2 = Font.decode( "Monospaced" );
如果要查看系统中的所有字体,可以使用:
String[] fontList = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();