2016-06-19 10 views
1

私はlibgdx BitMapFontに問題があります。私はscene2dテーブルの中にラベルを表示していますが、テキストの一部でフォントが切り詰められています(下記参照)。フォントを宣言するためのLibgdx font cut

:テーブルを宣言するための

font12 = new BitmapFont(Gdx.files.internal("fonts/text.fnt")); 
font12.setUseIntegerPositions(false); 
font12.getData().setScale(0.2f); 

Table table = new Table(); 
table.top();   
table.setFillParent(true); 
LabelStyle lblStyle = new LabelStyle(); 
lblStyle.font = font12; 
scoreLabel =new Label("SCORE", lblStyle); 
timeLabel = new Label("TIME", lblStyle); 
levelLabel = new Label("LEVEL", lblStyle); 

はあなたの助けをありがとう

enter image description here

は、ここに私のコードです。

[EDIT]ここ

私はfreetypeに使用してみましたコードがあるが、これはスムーズには見えません。

FreeTypeFontGenerator generator = new  FreeTypeFontGenerator(Gdx.files.internal("fonts/OpenSans-Regular.ttf")); 
    FreeTypeFontParameter parameter = new FreeTypeFontParameter(); 
    parameter.size = 18; 
    parameter.color = Color.BLACK; 
    generator.scaleForPixelHeight(18); 
    parameter.minFilter = Texture.TextureFilter.Linear; 
    parameter.magFilter = Texture.TextureFilter.Linear; 
    parameter.mono = false; 
    parameter.gamma = 2f; 
    font12 = generator.generateFont(parameter); // font size 12 pixels 
    font12.setUseIntegerPositions(false); 
    font12.getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear); 

    generator.dispose(); // don't forget to dispose to avoid memory leaks! 

enter image description here

答えて

1

まず最初に、あなたは常にので、フォントをスケーリングすることは避けてください結果はピクセル化され、本当に悪く見えます。あなたはFreeTypeFontGeneratorを使用して、プログラム内で必要な正しいサイズにフォントを発電機することができますテーブルにコンポーネントを追加するとき

https://github.com/libgdx/libgdx/wiki/Gdx-freetype

テーブルは、その子コンポーネントにサイズを設定します。基本的に、ラベルがテーブルに追加されるとき、テーブルはラベルのサイズを上書きします。それを追加するとき

table.add(label).size(label.getWidth(), label.getHeight()); 

あなたはまた、ラベルに異なるサイズを適用することができます。ラベルは、同じサイズを維持を確認するために

、次のようにラベルを保持しているテーブルのセルのサイズを設定テーブル(たとえば、ラベルの周りの余分なスペースを持っていると思った場合):

table.add(label).size(500, 100); 

EDIT

T彼のコードは私のために働く、これを試してみてください。

private Stage stage; 

@Override 
public void create() {  
    stage = new Stage(); 
    stage.setViewport(new ScreenViewport(stage.getViewport().getCamera())); 

    Table table = new Table(); 
    table.setFillParent(true); 
    stage.addActor(table); 

    FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal("internal/arialbd.ttf")); 
    FreeTypeFontGenerator.FreeTypeFontParameter param = new FreeTypeFontGenerator.FreeTypeFontParameter(); 
    param.size = 18; 
    param.borderColor = new Color(Color.BLACK); 
    param.borderWidth = 1; 
    BitmapFont font = gen.generateFont(param); 
    gen.dispose(); 

    Label.LabelStyle style = new Label.LabelStyle(); 
    style.font = font; 
    Label label = new Label("Hello World", style); 

    table.add(label).size(label.getWidth(), label.getHeight()); 
} 

@Override 
public void render() { 
    Gdx.gl.glClearColor(0.6f, 0.8f, 0.8f, 1.0f); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    stage.act(Gdx.graphics.getDeltaTime()); 
    stage.draw(); 
} 

@Override 
public void resize(int width, int height) { 
    stage.getViewport().update(width, height, true); 
} 

enter image description here

+0

私は、freetypeの-GDXが、成功しませんみました。コードの私の編集を見てください。私は何を間違えたのですか? – JavaDev

+0

返事を編集してコードを追加しました。うまくいけば助けになります。 – Tekkerue

+0

あなたの例がうまくいけば、私の問題はビューポートから来ます。私のゲーム画面では、私のビューポートをgamePort = new FitViewport(GameWorld.WORLD_WIDTH、GameWorld.WORLD_HEIGHT、gameCam)と定義します。 おそらくこれは歪みを作り出しています。あなたはビューポートとカメラを管理する最善の方法を知っていますか?実際、私のゲームは一種のボードゲームです。 – JavaDev