libGDX中的TrueType字体

时间:2012-02-28 17:09:11

标签: java android fonts true-type-fonts libgdx

有谁知道如何在libGDX中使用TTF字体?我环顾四周,看过StbTrueTypeFont,但它似乎没有出现在最新版本中。

编辑:我找到了StbTrueType字体,jar文件位于extensions目录中。我已将它添加到我的项目中。现在我只需要弄清楚如何使用它。有什么例子吗?

5 个答案:

答案 0 :(得分:40)

是的,您肯定需要按照编辑中的说明将gdx-stb-truetype罐子添加到项目中。以下是你将如何使用它,相当直接......

首先,您需要申报BitmapFont以及您将使用的字符......

BitmapFont font;
public static final String FONT_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789][_!$%#@|\\/?-+=()*&.;,{}\"´`'<>";

然后你需要创建字体......

font = TrueTypeFontFactory.createBitmapFont(Gdx.files.internal("font.ttf"), FONT_CHARACTERS, 12.5f, 7.5f, 1.0f, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
font.setColor(1f, 0f, 0f, 1f);

您可以使用传递给createBitmapFont()的参数,然后您将看到他们的所作所为。

然后渲染字体,就像平常一样......

batch.begin();
font.draw(font, "This is some text", 10, 10);
batch.end();

答案 1 :(得分:27)

使用gdx-freetype扩展名:

FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
BitmapFont font15 = generator.generateData(15);
BitmapFont font22 = generator.generateData(22);
generator.dispose();

“要使用gdx-freetype,请抓住最新的nightlies,将gdx-freetype.jargdx-freetype-natives.jar链接到您的桌面项目,将gdx-freetype.jar链接到您的Android项目,然后复制{{1} }和armeabi/libgdx-freetype.so文件到您的Android项目的armeabi-v7a/libgdx-freetype.so文件夹,就像使用libs/文件一样。“

来源:http://www.badlogicgames.com/wordpress/?p=2300

答案 2 :(得分:7)

研究了很多并找到了这种工作方法:

FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("myfont.ttf"));
FreeTypeFontParameter parameter = new FreeTypeFontParameter();
parameter.size = 12; // font size
BitmapFont font12 = generator.generateFont(parameter);
generator.dispose(); // avoid memory leaks, important

如果您尝试上述答案失败,请使用此选项, libGDX Freetype Wiki供参考。

答案 3 :(得分:3)

这是在使用S4克隆手机: Pinewood是资源文件夹中的下载字体。请参阅下面的文件夹结构。

import android.util.Log;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;

public class Game implements ApplicationListener {
    private SpriteBatch mSpriteBatch;
    private Texture textureBackground;
    private BitmapFont mBitmapFont;

    public void create() {

        Gdx.graphics.setContinuousRendering(false);
        Gdx.graphics.requestRendering();

        mSpriteBatch = new SpriteBatch();

        Texture.setEnforcePotImages(false);
        textureBackground = new Texture(Gdx.files.internal("background.jpg"));

        FileHandle fontFile = Gdx.files.internal("Pinewood.ttf");
        FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);

        mBitmapFont = generator.generateFont(150);
        generator.dispose();

        mBitmapFont.setColor(0.9f, 0.5f, 0.5f, 1); 
        Log.e("Game", "mBitmapFont.getScaleX() : "+mBitmapFont.getScaleX() + ", mBitmapFont.getScaleY() "+mBitmapFont.getScaleY());

    }

    public void render() {
        Log.e("Game", "render()");

        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); // This cryptic line clears the screen.
        mSpriteBatch.begin();
        // Drawing goes here!
        mSpriteBatch.draw(textureBackground, 0, 0);
        mBitmapFont.draw(mSpriteBatch, "FPS:"+Gdx.graphics.getFramesPerSecond(), 110, 260);
        mSpriteBatch.end();     
    }

    public void resize(int width, int height) {
    }

    public void pause() {
    }

    public void resume() {
    }

    public void dispose() {
    }

}

enter image description here

答案 4 :(得分:0)

您必须使用FreeTypeFont库。 github

1。如github页面所述,对于使用gradle的项目,请添加以下依赖项:

核心依赖性:

compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"

桌面依赖性:

compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"

Android依赖关系:

compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"

有关更多详细信息和平台,请参见this

如果您不使用gradle,请参见this

2。将库添加到您的项目后,您可以像这样使用它:

FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("myfont.ttf"));
FreeTypeFontParameter parameter = new FreeTypeFontParameter();
parameter.size = 12;
BitmapFont font12 = generator.generateFont(parameter); // font size 12 pixels
generator.dispose(); // don't forget to dispose to avoid memory leaks!

并将myfont.ttf放入核心资产文件夹