我已经设置了GUI的缩放以占据整个屏幕(窗口)。控件小部件很好,但字体缩放很糟糕 - 来自相邻字形的工件(因为我认为有些舍入错误)。
你可以在T的右侧清楚地看到它:
我尝试在Hiero的填充区域中设置各种值,但所有这些值都会影响字体的渲染方式 - 它们会在渲染中添加字符之间的空间,而不仅仅是我想要的纹理。
知道如何修复这些文物吗?我不想要动态字体生成或多种字体,我想要普通的最近邻缩放(我想要像素一样)。我假设这是 libGDX 1.2.0 中的错误。
答案 0 :(得分:1)
经过一番摆弄后,我想出了什么需要被黑客攻击才能让它发挥作用。
要点:缩小所有字形不重叠。
我在scala中的解决方案:
def fixFonts(fontsMap: ObjectMap[String, BitmapFont]) {
def fixFont(font: BitmapFont) {
for {
glyphPage <- font.getData.glyphs.toSeq.filter(_ != null)
glyph <- glyphPage.toSeq.filter(_ != null)
} {
glyph.u2 -= 0.001f
}
}
fontsMap.iterator().asInstanceOf[java.util.Iterator[Entry[String, BitmapFont]]].
asScala.foreach { e => fixFont(e.value)}
}
def load() {
skin = manager.get(SKIN_FILE)
fixFonts(skin.getAll(classOf[BitmapFont]))
}
EDIT(2015年6月4日):更新了可在Scala 2.11.4
和LibGDX 1.5.3
中使用的代码。
答案 1 :(得分:0)
public static void fixFont(BitmapFont font) {
for (Glyph[] page : font.getData().glyphs) {
if (page == null) {
continue;
}
for (Glyph glyph : page) {
if (glyph == null) {
continue;
}
glyph.u2 -= 0.001f;
glyph.v2 -= 0.001f;
}
}
}
请注意,另外glyph.v2也会被调整,如果没有这个,我仍然会有文物。
注意:这是一种解决方法,可能应该通过编辑字体来修复。