我正在使用此代码,该代码已从Slick Wiki Unicode教程中剪切和修改:
UnicodeFont menuFont = new UnicodeFont("/fonts/mailrays.ttf", 8, false, false);
menuFont.addAsciiGlyphs();
menuFont.addGlyphs(400, 600);
menuFont.getEffects().add(new ColorEffect());
menuFont.loadGlyphs();
menuFont.drawString(25.0f, -80.0f, "Snake", new Color(1.0f, 1.0f, 1.0f));
但是当在屏幕上绘制字符串时,它使用低分辨率控制台字体,我认为是默认字体。什么可能阻止字符串使用我传递给构造函数的字体(mailrays.tff)?
答案 0 :(得分:2)
我知道这已经快两个月了,但万一你还在寻找答案......
如果Slick无法找到您的字体,那么在尝试实例化字体时会出现RuntimeException。要验证这一点,请尝试指定计算机上不存在的字体名称(例如“crap.ttf”)...您很可能会看到类似的内容:
线程“main”中的异常java.lang.RuntimeException:找不到资源:crap.ttf at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69) 在org.newdawn.slick.UnicodeFont.createFont(UnicodeFont.java:61)
鉴于此,这里的问题可能是您正在创建的字体的大小。尝试创建一个8磅字体会对许多TTF字体造成混乱,结果可能看起来像你所描述的那样低。要验证这一点,请尝试以更大的尺寸创建字体,可能是12点左右。这显然会比你想要的更大,但至少它会验证你正在加载正确的字体,而问题只是缩放。如果是这种情况,您只需要找到一个在8点范围内扩展得更好的字体。
希望这有帮助!