1

我面临与自定义字体相关的问题。下图更好地说明了我想说的。

在此处输入图像描述

以下是我目前使用的代码片段。

    @Override
    public void onLoadResources() {
            BitmapTextureAtlas mComixLoudFontTexture = new BitmapTextureAtlas(256,
                            256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
            mComixLoudFont = FontFactory.createFromAsset(mComixLoudFontTexture,
                            this, "Comix_Loud.ttf", 40, true, Color.BLACK);

            BitmapTextureAtlas mLCDFontTexture = new BitmapTextureAtlas(256, 256,
                            TextureOptions.BILINEAR_PREMULTIPLYALPHA);
            mLCDFont = FontFactory.createFromAsset(mLCDFontTexture, this,
                            "LCD.ttf", 40, true, Color.BLACK);

            this.mEngine.getTextureManager().loadTextures(mComixLoudFontTexture,
                            mLCDFontTexture);
            this.mEngine.getFontManager().loadFonts(mComixLoudFont, mLCDFont);
    }

    @Override
    public Scene onLoadScene() {
            mScene = new Scene();
            mScene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));
            mScene.attachChild(new Text(230, 100, mComixLoudFont, "Comix Loud Font"));
            mScene.attachChild(new Text(230, 200, mLCDFont, "LCD Font"));
            return mScene;
    }

在某些字体类型中它会产生问题,而在某些字体类型中它可以完美运行。那么遇到这种情况该怎么办呢?我已经设置了大纹理图集大小,但它对我不起作用。

谢谢你的努力。

4

1 回答 1

0

您有两种方法可以解决此问题。

1) 您可以使用Bitmap Font GeneratorGlyf Designer等实用程序手动创建位图字体纹理,然后使用BitmapFont类加载它。这是最好的选择,我认为。

2)您需要增加文本位图上的填充变量,这样它就不会切断顶部。我不确定这会奏效。但理论上它会扩展所有字母周围的区域,并使每个单词中的字母间隔开。不是最好的选择。

于 2013-07-15T17:17:32.550 回答