我想画这个音符:
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
}