рисование текста на холсте с помощью UTF-16 - PullRequest
0 голосов
/ 25 октября 2019

Я хотел бы нарисовать эту музыкальную ноту:
? (U + 1D11E) МУЗЫКАЛЬНЫЙ СИМВОЛ G CLEF

String musicalNote = "\uD834\uDD1E" // UTF-16

canvas.drawText(musicalNote, pos.x, pos.y, paint);

Если я выведу String musicNote на консоль, он будет отображаться правильно.
Но если я нарисую его на холсте, он нарисует прямоугольник.

Я использую шрифт по умолчанию для Android, я также попробовал шрифт по умолчанию для моноширинного пространства. Может быть, у шрифта нет этого символа? Или мне нужно кодировать его по-другому?

1 Ответ

1 голос
/ 25 октября 2019

Проблема заключалась в том, что шрифт не поддерживает этот символ.

Можно проверить, есть ли у шрифта символ, например:

String musicalNote = "\uD834\uDD1E" // UTF-16
paint.setTypeface(Typeface.DEFAULT); // default font
if (paint.hasGlyph(musicalNote)) {
    // font has glyph
} else {
    // font does not have glyph
}
...