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 がない可能性があります。これにより、代替フォントが使用される場合とされない場合があります。おそらく、基本フォントとスタイルが似ていないフォントです。第 3 に、U+0305 は平方根記号と組み合わせて vinculum として使用するように実際には設計されていないため、フォントによっては間違った位置に見える場合があります。

通常、平文では、vinculum を使用して「スマートな」平方根式を生成しようとすることを避けるのが最善です。√x または (x は演算子を含む式です) √(x) のみを使用する方がはるかに安全で、数学標準 ISO 80000-2 に完全に準拠しています。

于 2013-05-31T19:15:11.077 に答える
2

Android フォントに U+0305 のグリフがあるとは思えません。この理論を確認する (または確認しない) ために、アプリケーションに問題がないことがわかっているフォンドを埋め込み、そのフォンドを使用してみてください。

しかし、フォントにグリフが含まれていたとしても、テキスト レイアウト エンジンは適切な処理を行うほどスマートではない可能性があります。

于 2013-05-31T18:27:00.197 に答える