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