BitmapFont渲染文物(BitmapFont rendering artifacts)

2019-10-20 13:21发布

我有GUI的设置比例占据整个屏幕(窗口)。 控制部件都很好,但字体缩放是可怕的-有来自邻国字形构件 (因为有些舍入误差,我想的)。

你可以很清楚地看到这对T的右侧:

我试图在Hiero填补区域设置不同的值,但所有这些价值观影响字体的呈现方式 - 他们绘制字符之间添加空格,不只是一个纹理我想要的。

任何想法如何解决这一假象? 我不想动态字体生成或多种字体, 我想普通的最近邻居缩放 (我要去一个pixely的样子)。 我假设这是libGDX 1.2.0的错误。

Answer 1:

周围的一些摆弄后,我想通需要为了得到它的工作被黑客攻破的。

要点:收缩所有字形不重叠。

我在溶液中阶 :

  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]))
  }

编辑(6 4 2015):更新代码在工作Scala 2.11.4LibGDX 1.5.3



Answer 2:

我调整monnef的上面解决Java的使用是这样的:

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被调整过,没有这个我仍然有瑕疵。

注:这是一个解决办法,应该可能通过编辑字体是固定的。



文章来源: BitmapFont rendering artifacts