如何使用libgdx渲染表情符号

3
我已经加载了一个支持表情符号的字体,并尝试使用libgdx渲染带有表情符号的字符串。然而,它只呈现文本,而不是表情符号。

代码

加载字体

FileHandle fontFile = Gdx.files.internal("path/to/file.ttf");
FreeTypeFontGenerator g = new FreeTypeFontGenerator(fontFile);
FreeTypeFontGenerator.FreeTypeFontParameter p = new FreeTypeFontGenerator.FreeTypeFontParameter();
// Some config here with p
BitmapFont emojiFont= g.generateFont(p);

渲染字体

public static void renderFont(SpriteBatch sb, BitmapFont font, String msg, float x, float y, Color c) {
  font.setColor(c);
  font.draw(sb, msg, x, y);
}

String str = "emoji ❤ \uD83D\uDC49 test \uD83D\uDC49 \uD83D\uDC4D test \uD83D\uDE03"
renderFont(sb, emojiFont, str, x, y, new Color(-597249));

输出

表情符测试 测试

问题

  1. 为什么libgdx不能渲染表情符号?
  2. 我需要改变什么才能渲染表情符号?
1个回答

1
FreeTypeFontGenerator从TTF文件创建BitmapFont。很可能您创建的字体不包含表情符号。
您没有展示代码中有趣的部分:您设置的参数。将要使用的表情符号添加到参数中:
p.characters = "characters you want to use";

有超过2000个表情符号。我需要全部包含在p.characters中吗?是否有更简单的解决方案(我假设将类似于添加中文字符)? - alexdriedger
@alexdriedger 的 p.characters 是 FreeTypeGenerator 用于生成位图字体所需包含的字符,您应该仅将需要的表情符号和字符添加到 p.characters 中以便渲染它们。 - CallOfVoid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接