使用强制等宽字体终端Java AWT



我想使用Terminal face在我的程序中显示读取字符串(在Windows上,平台独立性不重要)。

如果我使用Font font = Font.decode("Terminal-10");,它不是等宽的

如果我使用Font font = new Font(Font.MONOSPACED, Font.PLAIN, 11);一切都很好,但它看起来像快递员。

如果我使用(可能我误解了API文档)

HashMap attr = new HashMap<TextAttribute,TextAttribute>();
attr.put("FAMILY", Font.MONOSPACED);
attr.put("FONT", Font.decode("Terminal-10"));
font = new Font(attr);

只是使用默认值(一些12点的普通字体)。如何正确设置终端字体的属性?我在Graphics2D上绘制字符串,并将其保存为ImageIO

看起来你的Java AWT根本不支持位图字体——从我在Font类中看到的情况来看——它只处理TRUETYPE_FONTTYPE1_FONT。Terminal是一种位图字体,所以使用AWT的字体机制来使用它并不容易。

我目前正在尝试解决一个类似的问题,滚动我自己的简单位图字体引擎,在这个问题上有限的成功。

最新更新