是否有一种字体每个水平字母使用相同数量的像素?

时间:2014-11-18 04:09:03

标签: java fonts

我使用缓冲图像和(Graphics).drawLine和drawString方法手动将东西绘制到我的游戏中,我实现了一个高分类,通过用户键入的键输入。我使用Graphics中的drawLine方法手动创建了一个闪烁的光标,但我注意到的每个字母都不一定与前一个字母对齐。例如,字母M更大。是否有一种字体在水平方向上每个字母具有相同的像素数?否则,我必须为每个输入的字母计算不同数量的像素,这将需要永远。

换句话说,是否存在Java使用的字体,其类型字符将按照其后面的不可见网格均匀对齐?任何帮助表示赞赏!

1 个答案:

答案 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();