在libGDX中的TrueType字体

有谁知道如何在libGDX中使用TTF字体? 我环顾四周,看到有关StbTrueTypeFont的事情,但它似乎并没有在最新版本。

编辑:我发现StbTrueType字体的东西,jar文件位于扩展目录。 我已经添加到我的项目。 现在我只需要弄清楚如何使用它。 任何例子?

是的,你肯定需要添加gdx-stb-truetypejar子到你的项目中,正如你在编辑中所述。 这里是你将如何使用它,非常直接…

首先,你需要声明你的BitmapFont和你将使用的字符…

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

那么你需要创build字体…

 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()的参数createBitmapFont() ,你会看到他们做了什么。

然后渲染字体,你会像往常一样做…

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

使用gdx-freetype扩展:

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

“要使用gdx-freetype,请抓住最近的夜晚,将gdx-freetype.jargdx-freetype-natives.jar链接到您的桌面项目,将gdx-freetype.jar链接到您的Android项目,并复制armeabi/libgdx-freetype.soarmeabi-v7a/libgdx-freetype.so文件添加到您的Android项目的libs/文件夹中,就像使用libgdx.so文件一样。

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

研究了很多,发现了这个工作方法:

 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维基引用。

这是一个S4克隆手机:松林是一个下载的字体,资产文件夹。 请参阅下面的文件夹结构。

 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() { } } 

在这里输入图像说明