如何使用 libgdx 渲染表情符号

2022-01-12 00:00:00 emoji fonts graphics java libgdx

我已经加载了一个 支持表情符号的字体,我正在尝试渲染一个带有表情符号的字符串与 libgdx.但是,它会呈现文本,而不是表情符号.

I have loaded a font with emoji support and I am trying to render a string with emoji's with libgdx. However, it renders the text, but not the emojis.

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 ❤ uD83DuDC49 test uD83DuDC49 uD83DuDC4D test uD83DuDE03"
renderFont(sb, emojiFont, str, x, y, new Color(-597249));

输出

emoji 测试测试

  1. 为什么 libgdx 不呈现表情符号?
  2. 我需要更改哪些内容才能呈现表情符号?

推荐答案

FreeTypeFontGenerator 从您的 TTF 文件创建一个 BitmapFont.您创建的字体很可能不包含表情符号.

FreeTypeFontGenerator creates a BitmapFont from your TTF file. Most likely your created font does not contain the emojis.

您没有展示代码中有趣的部分:您设置的参数.将您要使用的表情符号添加到参数中:

You don't show the interesting part of your code: the parameters you set. Add the emojis you want to use to the parameters:

p.characters = "characters you want to use";

相关文章