java - Unicode 组合字符单独打印(不与前一个字符组合)

标签 java android unicode textview unicode-string

给定资源

<string name="squareRoot">&#x221A;x&#x0305;</string>

以及java代码

System.out.println("unicode: " + getString(R.string.squareRoot));

输出为

enter image description here

上划线(x0305)不应该在“x”之上吗? 当我尝试使用与 textView 的文本相同的字符串资源时,上划线根本不显示(它占用空间,我知道这一点,因为我尝试交换“x”和上划线,并在“x”之前得到一个空格')

最佳答案

是的,U+0305 COMBINING OVERLINE 应该会导致在前一个字符上方放置一个上划线。然而,有几个原因可能会或多或少地导致失败。首先,组合字符的放置需要良好的渲染引擎(例如,如果前面的字符是大写 X,则上划线必须放置得更高)。其次,所使用的字体可能缺少U+0305。这可能会也可能不会导致使用后备字体,可能是一种在风格上与基本字体不相似的字体。第三,U+0305 并不是真正设计用于与平方根符号结合使用的 vinculum,因此根据字体的不同,它可能看起来错位。

在纯文本中,通常最好避免尝试使用 vinculum 生成“智能”平方根表达式。仅使用 √x 或(x 是带运算符的表达式)√(x) 更安全,并且完全符合数学标准 ISO 80000-2。

关于java - Unicode 组合字符单独打印(不与前一个字符组合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859932/

相关文章:

java - ProgressBar 在 RecyclerView Adapter 中不刷新

android - 在运行时更改 recyclerView 子布局。

android - 无法在 Ubuntu 中的 BQ Aquaris E5 HD 上运行 Android 应用程序

java - 为什么我收到此错误 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column in 'sdate' 'field list'

java - Tomcat - CATALINA_BASE 和 CATALINA_HOME 变量

http - Encoding.ASCII VS Encoding.UTF8 错误

regex - 哪些字符可以用作正则表达式分隔符?

java - 为什么 "\400"不是编译时错误?

java - 无法识别 Eclipselink 实体

java - 如何计算使用 servlet 创建的文档的 XML 标签数量