【问题标题】:drawing text to canvas with UTF-16使用 UTF-16 将文本绘制到画布
【发布时间】:2019-10-25 06:49:56
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • “会不会是字体没有这个字符?”正确。
  • 谢谢你是对的字体没有这个字符

标签: java android text draw utf-16


【解决方案1】:

问题是字体不支持该字符。

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

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
}

【讨论】:

    猜你喜欢
    • 2015-04-25
    • 2011-12-10
    • 2011-10-28
    • 1970-01-01
    • 2012-10-05
    • 2014-05-24
    • 2015-08-15
    • 2013-11-01
    • 1970-01-01
    相关资源
    最近更新 更多