Рендеринг многосимвольных смайликов в SkiaSharp - PullRequest
0 голосов
/ 10 января 2019

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

...