Главная

Высота шрифта

Как можно узнать высоту шрифта, если известен шрифт и его размер? Проблема в том, что нужно рассчитать высоту BListView так, чтобы в нем поместились ровно n строчек.

Значение ascent+descent+leading для каждого шрифта свое и непонятно какую высоту показывает (не получается, пользуясь этими величинами, подогнать высоту BListView — то пробел снизу получается, то не все строки видны).

Re: Высота шрифта

попробуй в лоб float height = your_font–>GetBoundingBox().Width();

Re: Высота шрифта

пардон за очепятку
GetBoundingBox().Height();

и учти, что ширина и высота в BRect меряются между центрами пикселей, так что, в зависимости от твоего алгоритма возможно нужно будет добавить 1 к полученной высоте

Re: Высота шрифта

Спасибо Сергею, натолкнул на дальнейшие поиски, хотя его ответ и не совсем верен.

Опытным путем я установил, что результаты дает применение формулы

BFont *font;
font_height h;
height=int(h.ascent+h.descent+h.leading+f–>BoundingBox().Height()+k);

где k для разных шрифтов и размеров шрифтов может быть равно 0.5 или 1.0.

Высота BListView в этом случае определяется как height*n, где n — число строк, которое требуется иметь в списке.

Если взять k==0.7, то размеры подбираются правильно для всех исследованных мной шрифтов со всеми исследованными размерами для всех исследованных n, хотя не буду утверждать, что это будет действовать для вообще всех шрифтов всех размеров со всеми возможными n.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
z
5
k
e
w
A
Enter the code without spaces and pay attention to upper/lower case.