xamarin 在SkiaSharp中渲染多字符表情符号

wlwcrazw  于 2024-01-04  发布在  其他
关注(0)|答案(1)|浏览(150)

我在SkiaSharp中渲染emoji,并且已经能够让它正确地工作于简单的emoji(如或),但不能正确地工作于更复杂的emoji(如或)。👩🏼‍🎨👶🏻😂👶
最棘手的部分是设置包含表情符号的正确字体,因为不支持这里提到的后备字体:https://github.com/mono/SkiaSharp/issues/232
下面是我使用的代码的简化版本:

  1. int GrinningFaceEmoji = 0x1f600;
  2. void DrawEmoji(SKCanvas canvas, string emoji, int x, int y) {
  3. SKPaint paint = new SKPaint();
  4. paint.Typeface = SKFontManager.CreateDefault().MatchCharacter(GrinningFaceEmoji);
  5. canvas.DrawText(emoji, x, y, vtsm.paint);
  6. }

字符串
emoji是一个简单的表情符号时,它可以完美地工作,但更复杂的表情符号会显示为多个字符。浅色婴儿显示为两个字符-黄色婴儿后跟一个彩色正方形。艺术家显示为三个字符。我目前正在macOS上测试这一点。

xkftehaa

xkftehaa1#

为了呈现复杂的文本,如彩色表情符号或阿拉伯语等形状的文本,您只需使用

SKCanvas.DrawShapedText

而不是SKCanvas.DrawText
此扩展方法驻留在SkiaSharp.HarfBuzz.CanvasExtensions静态类中。

相关问题