给定资源

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


和Java代码

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


输出是



上划线(x0305)是否不应该位于“ x”的顶部?
当我尝试为textView使用与文本相同的字符串资源时,上划线根本不会显示(它占用了空间,我知道这是因为我尝试将'x'和上划线交换,并且在'x之前有一个空格')

最佳答案

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

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

09-11 03:23
查看更多