如何在Slick的UnicodeFont类中使用自定义字体?
问题描述:
我使用这个代码,这是剪断,并从油滑维基Unicode教程修改:如何在Slick的UnicodeFont类中使用自定义字体?
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)的字体?
答
我知道这几乎是两个月大,但如果你还在寻找答案...
如果油滑无法找到您的字体,你会得到一个RuntimeException当您尝试实例字体。要验证这一点,请尝试指定您知道机器上不存在的字体的名称(例如,“crap.ttf”)...您很可能会看到类似于:
线程中的异常“main”java.lang.RuntimeException:Resource not found:crap.ttf at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69) at org.newdawn.slick.UnicodeFont.createFont(UnicodeFont。 java:61)
鉴于此,此处的问题可能是您正在创建的字体的大小。尝试创建8点字体会导致许多TTF字体的混乱,并且结果可能看起来像您所描述的低分辨率。要验证这一点,请尝试以更大的尺寸创建字体,大概12点左右。这显然会比你想要的大,但至少它会验证你正在加载正确的字体,并且问题只是缩放。如果是这样的话,你只需要找到一个在8点范围内更好的字体。
希望这会有所帮助!
我最终只是映射文本的图像,而不是试图绘制字体,但是我打算在有空的时候对项目进行测试并验证。 感谢您的回答! –