使用 UTF-16 将文本绘制到 canvas

drawing text to canvas with UTF-16

我想画这个音符:
(U+1D11E) 音乐符号 G 谱号

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

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

如果我将字符串 musicalNote 输出到控制台,它将正确显示。
但是如果我把它画到 canvas 它会画一个矩形。

我用的是android的默认字体,我也试过默认等宽字体。 难道是字体没有这个字符?或者我需要用不同的方式编码吗?

问题是字体不支持那个字符。

可以测试字体是否有字符,像这样:

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
}