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函数。