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 に答える