Работа со шрифтами

   
На этом шаге рассмотрим работу со шрифтами.

   
Гарнитура шрифта это его внешний вид (рисунок шрифта). Масштабируемая гарнитура — это идеальное математическое описание шрифта. Она позволяет отображать его на экране без искажений и выводить на печать в различных размерах. Проведение соответствующих преобразований берут на себя специальные функции растеризации, которые преобразуют математическое представление шрифта для его последующего отображения в растровую матрицу. Эти функции вызываются неявно и не накладывают на разработчика дополнительных временных затрат при разработке.

   
В Qt класс QFont является основным для работы со шрифтом. Объект этого класса задается целым рядом параметров:

  • семейство шрифта;
  • размер;
  • толщина — нормальное или полужирное начертание;
  • отображаемые знаки;
  • стиль — нормальный или наклонный.

   
При передаче объекта класса QFont в метод QWidget::setFont() в виджете устанавливается шрифт, который будет использоваться при его отображении. Если требуется установить один шрифт для всего приложения, то объект класса QFont нужно передать в статический метод QApplication::setFont().

   
Qt содержит дополнительные классы для работы со шрифтами: QFontDatabase, QFontInfo и QFontMetrics.

  • Класс QFontDatabase предоставляет информацию обо всех установленных в системе шрифтах. Для их получения вызывается метод families(), который возвращает список шрифтов в объекте класса QStringList. Класс QFontDatabase содержит метод styleString() для получения стиля шрифта от класса QFontInfo
  • Класс QFontInfo служит для получения информации о конкретном шрифте. С помощью метода family() можно узнать семейство шрифта. Методы italic() и bold() возвращают значения булевого типа, информирующие о стиле (наклонности и жирности) шрифта.
  • Класс QFontMetrics предоставляет информацию о характеристиках шрифта, показанных на рис. 1.


Рис.1. Характеристики шрифта

   
Передавая в конструктор класса QFontMetrics объект класса QFont, можно получать его характеристики. Методы leftBearing() и rightBearing() возвращают в пикселах левое и правое пространство буквы соответственно. Метод lineSpacing() возвращает расстояние между базовыми линиями. Передав в метод width(const QString&, int len) строку и количество символов, узнают его ширину; если количество символов не передано, то берется вся длина строки. Чтобы узнать размер всей строки — ее нужно передать в метод width(). Высота возвращается методом height(). Например:

QFontMetrics fm(QFont("Courier", 18, QFont::Bold));
QString str = "String";
qDebug() << "Ширина строки:" << fm.width(str)
         << "Высота строки:" << fm.height();

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

   
Вызвав метод boundingRect() и передав в него строку, можно получить объект класса QRect, соответствующий прямоугольной области, необходимой для отображения текста строки. Этот метод удобно использовать для определения геометрии текста до начала его отображения.

   
На следующем шаге рассмотрим отображение строки.

Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

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