1

我正在使用这段代码,它是从 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)的字体?

4

1 回答 1

2

我知道这已经快两个月了,但如果你还在寻找答案......

如果 Slick 找不到您的字体,当您尝试实例化该字体时,您会收到 RuntimeException。要验证这一点,请尝试指定您知道机器上不存在的字体的名称(例如“crap.ttf”)......您很可能会看到类似的内容:

线程“主”java.lang.RuntimeException 中的异常:找不到资源:org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69) 处 org.newdawn.slick.UnicodeFont.createFont(UnicodeFont) 处的 crap.ttf .java:61)

鉴于此,这里的问题可能是您正在创建的字体的大小。尝试创建 8 点字体会对许多 TTF 字体造成混乱,并且结果可能看起来像您所描述的那样低分辨率。要验证这一点,请尝试创建更大尺寸的字体,可能是 12 磅左右。这显然比您想要的要大,但至少它会验证您正在加载正确的字体并且问题只是缩放。如果是这种情况,您只需要找到一种在 8 磅范围内可以更好地缩放的字体。

希望这可以帮助!

于 2012-02-12T22:30:44.603 回答