0

如何使用 mangal.ttf 或任何其他字体在libgdx中呈现印地语文本。尝试打印印地语文本时出现方形框。

4

2 回答 2

0

试试FreeTypeFont,FreetypeFont 在 maven 存储库中可用,因此您可以通过 gradle 在项目中轻松注入依赖项并在代码中使用。

public class MyGdxGame extends Game {

    SpriteBatch spriteBatch;
    BitmapFont font;
    OrthographicCamera camera;
    GlyphLayout glyphLayout,glyphLayout1;
    String text,text1;

    @Override
    public void create() {

        camera=new OrthographicCamera();
        camera.setToOrtho(false,400,640);
        spriteBatch = new SpriteBatch();

        FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("Mangal.ttf"));
        FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();

        parameter.color = Color.WHITE;
        parameter.magFilter = Texture.TextureFilter.Linear; // used for resizing quality
        parameter.minFilter = Texture.TextureFilter.Linear;

        //ँंंःअआइईउऊऋएऐऑओऔकखगघचछजझञटठडढणतथदधनपफबभमयरलवशषसह़ािीुूृॅेैॉोौ्
        parameter.characters = "शुभ प्रभात आप का स्वागत है";  //The characters the font should contain
        parameter.size=15;
        font=generator.generateFont(parameter);
        font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
        font.setColor(1.0f, 0.0f, 0.0f, 1.0f);

        generator.dispose();

        text="शुभ प्रभात";
        text1="आप का स्वागत है";
        glyphLayout=new GlyphLayout(font,text);
        glyphLayout1=new GlyphLayout(font,text1);
    }

    @Override
    public void render() {

        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        Gdx.gl.glClearColor(1,1,0,1);

        spriteBatch.setProjectionMatrix(camera.combined);
        spriteBatch.begin();
        font.draw(spriteBatch,text,camera.viewportWidth*.5f-glyphLayout.width/2f,camera.viewportHeight*.5f);
        font.draw(spriteBatch,text1,camera.viewportWidth*.5f-glyphLayout1.width/2f,camera.viewportHeight*.4f);

        spriteBatch.end();
    }

    @Override
    public void resize(int width, int height) {
        camera.setToOrtho(false,width,height);
    }

    @Override
    public void dispose() {
        font.dispose();
        spriteBatch.dispose();
    }
}

输出如下所示:

在此处输入图像描述

于 2017-04-12T06:59:31.080 回答
0

我们可以使用“Chanakya”字体以正确的方式呈现印地语文本。从 hera 下载 chanyaka.ttf:

http://indiatyping.com/index.php/download/199-chanakya-font

安装字体后。您应该使用 coverter 对印地语文本进行编码:

http://indiatyping.com/index.php/font-converter/unicode-to-chanakya-font-converter

转换文本后,只需将其复制到您的目的地即可!

享受 :)

于 2017-04-13T08:58:37.657 回答