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

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

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


如果我将字符串音乐笔记输出到控制台,它将正确显示它。
但是,如果我将其绘制到画布上,它将绘制一个矩形。

我正在使用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
}

10-08 18:12