Я отрисовываю эмодзи в 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.