10

アセンダー/ディセンダーエックスハイトを取得する必要があります..

次のコードを使用することで、ディセンダーと全高を見つけることができます。

descender_height = paint.descent();
total_height = descender_height - paint.ascent();
//ascender = ?; is this always equal to descender height?
//x_height = ?; total_height - 2*descender_height ?

ありがとう

4

2 に答える 2

7

アセンダーとディセンダーの高さは通常同じだと思いますが、すべてのフォントでそれに依存するわけではありません。x-height に到達する直接的な方法は実際にはわかりませんが、使用できるトリックは次のようなものです。また、全高とは、最も高いアセンダーから最も低いディセンダーまでの絶対距離のことですか? また、そのための何かを以下に含めました。私はこれらを自分でテストしていませんが、うまくいくはずです(ただし、あなたが言ったことを誤解している場合はお知らせください):

// Assuming TextPaint/Paint tp;
Rect bounds;

// this will just retrieve the bounding rect for 'x'
tp.getTextBounds("x", 0, 1, bounds);
int xHeight = bounds.height();

Paint.FontMetrics metrics = tp.getFontMetrics();
int totalHeight = metrics.top - metrics.bottom;
于 2011-02-18T17:42:17.800 に答える
1

これは私のために働いたものです:

Paint.FontMetrics fm = paint.getFontMetrics();
int totalHeight = (int)(fm.bottom - fm.top + .5f);
于 2013-12-30T19:18:27.907 に答える