0

鉴于资源

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

和java代码

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

输出是

在此处输入图像描述

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

4

2 回答 2

2

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

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

于 2013-05-31T19:15:11.077 回答
2

我认为 Android 字体没有 U+0305 的字形。要确认(或不确认)这个理论,你可以尝试嵌入一个你知道它对你的应用程序没问题的喜欢,然后尝试使用那个。

但是即使字体有字形,文本布局引擎也可能不够聪明,无法做正确的事情。

于 2013-05-31T18:27:00.197 回答