我正在SkiaSharp中渲染表情符号,并且能够使其针对简单的表情符号(如或)正确运行,但对于较复杂的表情符号(如或)却无法正常工作。
最棘手的部分是设置包含表情符号的正确字体,因为不支持后备字体,如下所示:https://github.com/mono/SkiaSharp/issues/232
这是我使用的代码的简化版本:
int GrinningFaceEmoji = 0x1f600;
void DrawEmoji(SKCanvas canvas, string emoji, int x, int y) {
SKPaint paint = new SKPaint();
paint.Typeface = SKFontManager.CreateDefault().MatchCharacter(GrinningFaceEmoji);
canvas.DrawText(emoji, x, y, vtsm.paint);
}
当emoji
是一个简单的表情符号时,它可以完美工作,但更复杂的表情符号显示为多个字符。浅色的婴儿显示为两个字符-黄色的婴儿,后跟一个彩色方块。艺术家显示为三个字符。我目前正在macOS上对此进行测试。