Fonts Libgdx字体大小

Fonts Libgdx字体大小,fonts,libgdx,Fonts,Libgdx,通过给定的上升高度来计算字体大小是否类似于公式?文本的特定宽度也是一样的吗?我想在屏幕上绘制具有特定高度和宽度的字符串。您可以在屏幕上使用和缩放相应地计算字体大小,使其符合预定义的宽度/高度。这里是我的代码以适应给定的宽度,如果文本太长,则标签缩放以适应给定的宽度 public class MyLabel extends Label { private float customScale = 1; //default Scale if text's width < givenWidth

通过给定的上升高度来计算字体大小是否类似于公式?文本的特定宽度也是一样的吗?我想在屏幕上绘制具有特定高度和宽度的字符串。

您可以在屏幕上使用和缩放相应地计算字体大小,使其符合预定义的宽度/高度。

这里是我的代码以适应给定的宽度,如果文本太长,则标签缩放以适应给定的宽度

public class MyLabel extends Label {

private float customScale = 1; //default Scale if text's width < givenWidth
private GlyphLayout layout;
private boolean isWrap; //if wrap, ignore fit
private float defaultWidth;
protected boolean autoFit = false; //set true to auto fit when text changed

@Override
public void draw(Batch batch, float parentAlpha) {
    //draw background
    if(background != null)
        batch.draw(background, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation());
    else if(background9patch != null){
        background9patch.draw(batch, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation());
    }
    //draw text
    super.draw(batch, parentAlpha);
}

@Override
public void setText(CharSequence newText) {
    super.setText(newText);
    if(autoFit){
        float prefWidth = getPrefWidth();
        if(defaultWidth == 0 && getWidth() == 0){
            setWidth(prefWidth);
        } else {
            if (layout != null && !isWrap)
                if (getWidth() > 0) {
                    getStyle().font.getData().setScale(customScale);
                    layout.setText(getBitmapFontCache().getFont(), newText);
                    float textWidth = layout.width;
                    if (textWidth > getWidth())
                        setFontScale((getWidth() / textWidth));
                    else
                        setFontScale(customScale);
                }
        }
    }
}
公共类MyLabel扩展标签{
private float customScale=1;//如果文本宽度0){
getStyle().font.getData().setScale(自定义比例);
layout.setText(getBitmapFontCache().getFont(),newText);
浮动文本宽度=layout.width;
如果(textWidth>getWidth())
setFontScale((getWidth()/textWidth));
其他的
setFontScale(自定义缩放);
}
}
}
}

这很难,除非您使用的是
单间距
字体(每个字符宽度相同的字体)。在您的情况下,您可能需要知道每个字符的大小,如果您正在使用,
.fnt
文件中给出了这些字符,因此您可能希望了解这些字符的大小。问题是,如果您需要精确的数字,它可能会是一个反复试验的算法,您可以尝试使用特定的大小,使用
GlyphLayout
测量它,然后继续如果你需要的话,也可以小一点。另外,你可能想提供更多的细节,比如为什么你需要这个,因为可能有很棒的解决方案,可以用Scene2D来布局文本和UI,但我不知道有什么方法可以创建精确长度的文本。我不知道你想要什么,但是如果你想在屏幕上画字符串,我想你应该使用标签cl所以你可以调用getHeight和getWidth函数。