Как получить по возрастанию / спуску и высоту х для данного шрифта - PullRequest
8 голосов
/ 18 февраля 2011

Мне нужно получить по возрастанию / по убыванию и x-height ..

Используя следующий код, я могу найти спусковое устройствои общая высота:

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 ?

Спасибо

Ответы [ 2 ]

6 голосов
/ 18 февраля 2011

Я бы подумал, что высота по возрастанию и по убыванию обычно одинакова, но я не буду зависеть от этого для каждого шрифта. На самом деле я не вижу прямого способа добраться до высоты х, но трюк, который вы могли бы использовать, был бы похож на приведенный ниже. Кроме того, для общей высоты вы говорите об абсолютном расстоянии от самого высокого восходящего элемента до самого низкого? Я также включил кое-что для этого ниже. Я сам не проверял их, но это должно сработать (но дайте мне знать, если я неправильно истолковал то, что вы сказали):

// 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;
1 голос
/ 30 декабря 2013

Вот что у меня сработало:

Paint.FontMetrics fm = paint.getFontMetrics();
int totalHeight = (int)(fm.bottom - fm.top + .5f);
...