【发布时间】:2014-06-03 01:51:44
【问题描述】:
我正在开发一个显示文本并从 API 播放音频的应用程序。它还需要显示该文本和音频的版权信息;此信息是从同一个 API 中检索的。
许多音频版权包含“℗”符号,也称为录音版权符号:
http://en.wikipedia.org/wiki/Sound_recording_copyright_symbol
但是,当我从 API 检索文本并将其放入 TextView 时,“℗”符号不会出现。正常的版权符号 (©) 显示得很好。
有没有人遇到过这样的事情?有解决办法吗?
【问题讨论】:
-
假设“从 API 检索的文本”在 HTML 或 Unicode U+2117 中使用
℗,那么您使用的字体可能没有该符号。 -
这似乎是最有可能的解释。当然,我没有使用任何特殊字体,也就是说Android的内置字体没有它。这意味着我必须在我的应用程序中捆绑一个自定义字体才能显示这个字符。似乎不值得。
-
我在我的 Ubuntu 机器上安装了 Droid Sans 和 Droid Sans Mono 作为桌面字体,并且 U+2117 出现在它们的字符映射中。我没有检查 Roboto,因为我没有安装它。不过,现在我想一想,通常缺少 Unicode 字形会导致一个小的矩形占位符,而不是什么都没有。你确定这个角色是按照你的 API 的预期来的吗?这是您正在解码的 HTML,还是您正在获取的 Unicode 字符串,还是其他?
-
是的,我使用调试器检查了API返回的字符串,字符肯定在那里。它不是 HTML;只是一个简单的 Unicode 字符串。我目前的工作解决方案是使用 String.replace() 将字符替换为“(P)”。这不太理想,但至少可以显示。
-
在模拟器 (2.3.3) 上,我确实看到了矩形占位符,但在我的手机 (4.4.2) 上却没有,只是一个空白。我发现似乎对两者都显示正常的最接近的字符是 HTML 中的
U+24DF或ⓟ。它是一个圆圈中的小写字母 P。大写的 P 只会在我的手机上显示为 P..