使用 UTF-16 将文本绘制到画布

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

String musicalNote = "\uD834\uDD1E" // UTF-16
canvas.drawText(musicalNote, pos.x, pos.y, paint);

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

我使用的是android的默认字体,我也尝试了默认的等宽字体。难道是字体没有这个字符?或者我需要以不同的方式对其进行编码?


蛊毒传说
浏览 108回答 1
1回答

白衣染霜花

问题是字体不支持该字符。可以测试字体是否有字符,如下所示:String musicalNote = "\uD834\uDD1E" // UTF-16paint.setTypeface(Typeface.DEFAULT); // default fontif (paint.hasGlyph(musicalNote)) {    // font has glyph} else {    // font does not have glyph}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java