对于使用拉丁文和西里尔文等短字母的用户文本输入,您可以使用 LibGDX FreeTypeFontGenerator & FreeTypeFontParameter :
private BitmapFont yourCustomFont;
private FreeTypeFontGenerator generator;
private FreeTypeFontParameter parameter;
private TextFieldStyle textFieldStyle;
private TextField textField;
...
public void show(){
...
// Font generating
yourCustomFont = new BitmapFont();
generator = new FreeTypeFontGenerator(
Gdx.files.internal("yourFont.ttf"));
parameter = new FreeTypeFontParameter();
// Complete the following sequence with the letters you need(each only once)
parameter.characters =
"БбДдЄєabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUXYZ/&1234567890()[]#'\"";
parameter.size = (Gdx.graphics.getHeight() / 20);
yourCustomFont = generator.generateFont(parameter);
generator.dispose(); //Don't forget to dispose the generator
// TextFieldStyle
textFieldStyle = new TextFieldStyle();
textFieldStyle.font = yourCustomFont;
textFieldStyle.fontColor = Color.BLACK;
// TextField
textField = new textField("",textFieldStyle);
textField.setTextFieldListener(new TextFieldListener() {
public void keyTyped(TextField textField, char key) {
}
});
...
}
对于使用中文、韩文或日文等复杂字母的用户文本输入,您可能需要使用 .fnt + .png 格式的预渲染字体。为此,您可以使用 Hiero 或 BMFont 等软件。
http://www.angelcode.com/products/bmfont/
http://github.com/libgdx/libgdx/wiki/Hiero
使用 Hiero 或 BMFont 生成的复杂字母(韩文、日文、中文...)是大文件,因此您可能需要使用 LibGdx AssetManager 加载它们。然后将字体与您的 TextFieldStyle 一起使用,方法与前面描述的相同。
希望能帮助到你。
编辑:
现在,LibGDX 可以即时渲染复杂的字形:
https ://github.com/libgdx/libgdx/wiki/Gdx-freetype