Класс QFontMetricsF
Класс QFontMetricsF предоставляет информацию о метриках шрифта. Подробнее...
| Заголовок: | #include <QFontMetricsF> |
| qmake: | QT += gui |
Примечание: Все функции в этом классе являются взаимоисключающими.
Открытые функции
| QFontMetricsF(const QFontMetricsF &fm) | |
| QFontMetricsF(const QFontMetrics &fontMetrics) | |
| QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice) | |
| QFontMetricsF(const QFont &font) | |
| QFontMetricsF & | operator=(QFontMetricsF &&other) |
| QFontMetricsF & | operator=(const QFontMetrics &other) |
| QFontMetricsF & | operator=(const QFontMetricsF &fm) |
| ~QFontMetricsF() | |
| qreal | ascent() const |
| qreal | averageCharWidth() const |
| QRectF | boundingRect(const QString &text) const |
| QRectF | boundingRect(QChar ch) const |
| QRectF | boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const |
| qreal | capHeight() const |
| qreal | descent() const |
| QString | elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const |
| qreal | fontDpi() const |
| qreal | height() const |
| qreal | horizontalAdvance(const QString &text, int length = -1) const |
| qreal | horizontalAdvance(QChar ch) const |
| bool | inFont(QChar ch) const |
| bool | inFontUcs4(uint ch) const |
| qreal | leading() const |
| qreal | leftBearing(QChar ch) const |
| qreal | lineSpacing() const |
| qreal | lineWidth() const |
| qreal | maxWidth() const |
| qreal | minLeftBearing() const |
| qreal | minRightBearing() const |
| qreal | overlinePos() const |
| qreal | rightBearing(QChar ch) const |
| QSizeF | size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const |
| qreal | strikeOutPos() const |
| void | swap(QFontMetricsF &other) |
| QRectF | tightBoundingRect(const QString &text) const |
| qreal | underlinePos() const |
| qreal | xHeight() const |
| bool | operator!=(const QFontMetricsF &other) const |
| bool | operator==(const QFontMetricsF &other) const |
Подробное описание
Функции QFontMetricsF вычисляют размер символов и строк для заданного шрифта. Вы можете создать объект QFontMetricsF с существующим QFont для получения метрик для этого шрифта. Если шрифт изменяется позже, объект метрик шрифта не обновляется.
После создания объект предоставляет функции для доступа к отдельным метрикам шрифта, его символам и для строк, отображаемых в шрифте.
Существует несколько функций, которые работают со шрифтом: ascent(), descent(), height(), leading() и lineSpacing() возвращают основные свойства размера шрифта. Функции underlinePos(), overlinePos(), strikeOutPos() и lineWidth() возвращают свойства линии, которая подчеркивает, перечеркивает или зачеркивает символы. Эти функции работают быстро.
Есть также некоторые функции, которые работают с набором глифов в шрифте: minLeftBearing(), minRightBearing() и maxWidth(). Эти функции по необходимости медленные, и мы рекомендуем избегать их, если это возможно.
Для каждого символа вы можете получить его horizontalAdvance(), leftBearing() и rightBearing(), и узнать, находится ли он в шрифте, используя inFont(). Вы также можете рассматривать символ как строку и использовать для него строковые функции.
Строковые функции включают horizontalAdvance(), для возврата ширины строки в пикселях (или точках, для принтера), boundingRect(), для возврата прямоугольника, достаточно большого, чтобы содержать отображаемую строку, и size(), для возврата размера этого прямоугольника.
Пример:
QFont font("times", 24);
QFontMetricsF fm(font);
qreal pixelsWide = fm.horizontalAdvance("What's the width of this text?");
qreal pixelsHigh = fm.height(); См. также QFont, QFontInfo и QFontDatabase.
Документация по функциям-членам
QFontMetricsF::QFontMetricsF(const QFontMetricsF &fm)
Создает копию fm.
QFontMetricsF::QFontMetricsF(const QFontMetrics &fontMetrics)
Создает объект метрик шрифта с плавающей точкой из заданного объекта fontMetrics.
Эта функция была добавлена в Qt 4.2.
QFontMetricsF::QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice)
Создаёт объект метрик шрифта для font и paintdevice.
Метрики шрифта будут совместимы с переданным устройством рисования. Если paintdevice является nullptr, метрики будут совместимы со экраном, то есть метрики, которые вы получите, если используете шрифт для рисования текста на виджетах или пиксельмапах, а не на QPicture или QPrinter.
Объект метрик шрифта хранит информацию о шрифте, переданном в конструктор во время его создания, и не обновляется, если атрибуты шрифта изменяются позднее.
Эта функция была введена в Qt 5.13.
QFontMetricsF::QFontMetricsF(const QFont &font)
Создаёт объект метрик шрифта для font.
Метрики шрифта будут совместимы с устройством рисования, используемым для создания font.
Объект метрик шрифта хранит информацию о шрифте, переданном в конструктор во время его создания, и не обновляется, если атрибуты шрифта изменяются позднее.
Используйте QFontMetricsF(const QFont &, QPaintDevice *) для получения метрик шрифта, совместимых с определённым устройством рисования.
QFontMetricsF &QFontMetricsF::operator=(QFontMetricsF &&other)
Перемещает other в данный экземпляр QFontMetricsF.
QFontMetricsF &QFontMetricsF::operator=(const QFontMetrics &other)
Присваивает other этому объекту.
Эта функция была введена в Qt 4.2.
QFontMetricsF &QFontMetricsF::operator=(const QFontMetricsF &fm)
Присваивает метрики шрифта fm этому объекту метрик шрифта.
QFontMetricsF::~QFontMetricsF()
Уничтожает объект метрик шрифта и освобождает все выделенные ресурсы.
qreal QFontMetricsF::ascent() const
Возвращает подъем шрифта.
Подъем шрифта — это расстояние от базовой линии до наивысшей позиции, до которой доходят символы. На практике некоторые дизайнеры шрифтов нарушают это правило, например, когда они добавляют более одного диакритического знака сверху символа или чтобы разместить необычный символ в экзотическом языке, поэтому возможно (хотя и редко), что это значение будет слишком маленьким.
См. также descent().
qreal QFontMetricsF::averageCharWidth() const
Возвращает среднюю ширину глифов в шрифте.
Эта функция была введена в Qt 4.2.
QRectF QFontMetricsF::boundingRect(const QString &text) const
Возвращает ограничивающую прямоугольник символов в строке, заданной text. Ограничивающая прямоугольник всегда охватывает как минимум набор пикселей, которые бы занимал текст, если бы он был нарисован в (0, 0).
Обратите внимание, что ограничивающая прямоугольник может выходить влево от (0, 0), например, для наклонных шрифтов, и что ширина возвращаемого прямоугольника может отличаться от возвращаемого методом horizontalAdvance().
Если вам нужно узнать ширину продвижения строки (для выравнивания набора строк рядом друг с другом), используйте horizontalAdvance() вместо этого.
Символы новой строки обрабатываются как обычные символы, а не как разрывы строк.
Высота ограничивающего прямоугольника как минимум равна значению, возвращаемому height().
См. также horizontalAdvance(), height() и QPainter::boundingRect().
QRectF QFontMetricsF::boundingRect(QChar ch) const
Возвращает ограничивающую прямоугольник символа ch относительно самой левой точки на базовой линии.
Обратите внимание, что ограничивающая прямоугольник может выходить влево от (0, 0), например, для наклонных шрифтов, и что вывод текста может занимать все пиксели в ограничивающем прямоугольнике.
Обратите внимание, что прямоугольник обычно простирается как над, так и под базовой линией.
См. также horizontalAdvance().
QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
Это перегруженная функция.
Возвращает ограничивающую прямоугольник символов в заданном text. Это набор пикселей, которые бы занимал текст, если бы он был нарисован, ограниченный ограничивающим прямоугольником, заданным rect.
Аргумент flags является битовой суммой следующих флагов:
- Qt::AlignLeft выравнивает по левой границе, за исключением арабского и иврита, где он выравнивает по правой границе.
- Qt::AlignRight выравнивает по правой границе, за исключением арабского и иврита, где он выравнивает по левой границе.
- Qt::AlignJustify создаёт выровненный текст.
- Qt::AlignHCenter выравнивает по горизонтали по центру.
- Qt::AlignTop выравнивает по верхней границе.
- Qt::AlignBottom выравнивает по нижней границе.
- Qt::AlignVCenter выравнивает по вертикали по центру
-
Qt::AlignCenter (==
Qt::AlignHCenter | Qt::AlignVCenter) - Qt::TextSingleLine игнорирует символы новой строки в тексте.
- Qt::TextExpandTabs расширяет табуляции (см. ниже)
- Qt::TextShowMnemonic интерпретирует "&x" как x; т.е. подчёркнутый.
- Qt::TextWordWrap разбивает текст для подгонки к прямоугольнику.
Qt::Horizontal выравнивание по умолчанию равно Qt::AlignLeft, а вертикальное выравнивание по умолчанию равно Qt::AlignTop.
Если установлено несколько флагов горизонтального или вертикального выравнивания, результат выравнивания не определён.
Эти флаги определены в Qt::AlignmentFlag.
Если Qt::TextExpandTabs установлен в flags, используется следующее поведение для интерпретации символов табуляции в тексте:
- Если tabArray не равен null, он задаёт последовательность 0-терминированных позиций пикселей для табуляций в тексте.
- Если tabStops не равно 0, оно используется как интервал табуляции (в пикселях).
Обратите внимание, что ограничивающая прямоугольник может выходить влево от (0, 0), например, для наклонных шрифтов.
Символы новой строки обрабатываются как разрывы строк.
Несмотря на разную фактическую высоту символов, высоты ограничивающих прямоугольников "Да" и "да" одинаковы.
Ограничивающий прямоугольник, возвращаемый этой функцией, немного больше, чем тот, который вычисляется с помощью более простой функции boundingRect(). Эта функция использует максимальное левое и правое отступы шрифта, как это необходимо для многострочного текста, чтобы правильно выровнять. Кроме того, используются fontHeight() и lineSpacing() для вычисления высоты, а не высоты отдельных символов.
См. также horizontalAdvance(), QPainter::boundingRect() и Qt::Alignment.
qreal QFontMetricsF::capHeight() const
Возвращает высоту апофезы шрифта.
Высота апофезы шрифта — это высота заглавной буквы над базовой линией. Конкретно это высота заглавных букв, которые плоские — такие как H или I — в отличие от круглых букв, таких как O, или острых букв, таких как A, которые могут отображать переполнение.
Эта функция была введена в Qt 5.8.
См. также ascent().
qreal QFontMetricsF::descent() const
Возвращает спуск шрифта.
Спуск — это расстояние от базовой линии до самой нижней точки, до которой доходят символы. (Обратите внимание, что это отличается от X, который добавляет 1 пиксель.) На практике некоторые дизайнеры шрифтов нарушают это правило, например, чтобы разместить необычный символ в экзотическом языке, поэтому возможно (хотя и редко), что это значение будет слишком маленьким.
См. также ascent().
QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const
Если строка text шире, чем width, возвращает усечённую версию строки (т.е. строку с "..." в ней). В противном случае возвращает исходную строку.
Параметр mode определяет, усекается ли текст слева (например, "...тех"), посередине (например, "Tr...х") или справа (например, "Трол...").
width задаётся в пикселях, а не в символах.
Аргумент flags является необязательным и в настоящее время поддерживает только Qt::TextShowMnemonic в качестве значения.
Значок эллипса следует за направлением макета. Например, он будет расположен справа от текста для макетов справа налево, если режим mode равен Qt::ElideLeft, и слева от текста, если mode равен Qt::ElideRight.
Эта функция была добавлена в Qt 4.2.
qreal QFontMetricsF::fontDpi() const
Возвращает DPI шрифта.
Эта функция была добавлена в Qt 5.14.
qreal QFontMetricsF::height() const
Возвращает высоту шрифта.
Она всегда равна ascent() + descent().
См. также leading() и lineSpacing().
qreal QFontMetricsF::horizontalAdvance(const QString &text, int length = -1) const
Возвращает горизонтальный отступ в пикселях первых length символов из text. Если length отрицательно (по умолчанию), используется вся строка.
Отступ — это расстояние, подходящее для рисования следующего символа после text.
Эта функция была добавлена в Qt 5.11.
См. также boundingRect().
qreal QFontMetricsF::horizontalAdvance(QChar ch) const
Это перегруженная функция.
Возвращает горизонтальный отступ символа ch в пикселях. Это расстояние, подходящее для рисования следующего символа после ch.
Некоторые метрики описаны на изображении справа. Центральные тёмные прямоугольники охватывают логический горизонтальный отступ каждого символа. Внешние светлые прямоугольники охватывают leftBearing() и rightBearing() каждого символа. Обратите внимание, что отступы символа "f" в этом конкретном шрифте оба отрицательные, а отступы "o" — оба положительные.
Предупреждение: Эта функция будет выдавать некорректные результаты для арабских символов или неразрывных знаков посередине строки, так как форматирование и позиционирование глифов, происходящие при обработке строк, не могут быть учтены. При реализации интерактивного текстового элемента используйте QTextLayout вместо этого.
Эта функция была добавлена в Qt 5.11.
См. также boundingRect().
bool QFontMetricsF::inFont(QChar ch) const
Возвращает true , если символ ch является допустимым символом в шрифте; в противном случае возвращает false.
bool QFontMetricsF::inFontUcs4(uint ch) const
Возвращает true , если символ, заданный ch, закодированный в UCS-4/UTF-32, является допустимым символом в шрифте; в противном случае возвращает false.
qreal QFontMetricsF::leading() const
Возвращает ведущее значение шрифта.
Это естественное межстрочное расстояние.
См. также height() и lineSpacing().
qreal QFontMetricsF::leftBearing(QChar ch) const
Возвращает левое смещение символа ch в шрифте.
Левое смещение — это расстояние вправо от левого пикселя символа до логической точки начала символа. Это значение отрицательное, если пиксели символа выходят влево от логической точки начала.
См. horizontalAdvance() для графического описания этой метрики.
См. также rightBearing(), minLeftBearing() и horizontalAdvance().
qreal QFontMetricsF::lineSpacing() const
Возвращает расстояние от одной базовой линии до следующей.
Это значение всегда равно leading() + height().
См. также height() и leading().
qreal QFontMetricsF::lineWidth() const
Возвращает ширину подчёркивания и линии зачёркивания, скорректированную с учётом размера шрифта.
См. также underlinePos(), overlinePos() и strikeOutPos().
qreal QFontMetricsF::maxWidth() const
Возвращает ширину самого широкого символа в шрифте.
qreal QFontMetricsF::minLeftBearing() const
Возвращает минимальное левое смещение шрифта.
Это наименьшее leftBearing(символ) всех символов в шрифте.
Обратите внимание, что эта функция может быть очень медленной, если шрифт большой.
См. также minRightBearing() и leftBearing().
qreal QFontMetricsF::minRightBearing() const
Возвращает минимальное правое смещение шрифта.
Это наименьшее rightBearing(символ) всех символов в шрифте.
Обратите внимание, что эта функция может быть очень медленной, если шрифт большой.
См. также minLeftBearing() и rightBearing().
qreal QFontMetricsF::overlinePos() const
Возвращает расстояние от базовой линии до места, где должна быть нарисована линия надстрочного символа.
См. также underlinePos(), strikeOutPos() и lineWidth().
qreal QFontMetricsF::rightBearing(QChar ch) const
Возвращает правое смещение символа ch в шрифте.
Правое смещение — это расстояние влево от правого пикселя символа до логической точки начала последующего символа. Это значение отрицательное, если пиксели символа выходят вправо от horizontalAdvance() символа.
См. horizontalAdvance() для графического описания этой метрики.
См. также leftBearing(), minRightBearing() и horizontalAdvance().
QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
Возвращает размер в пикселях символов в заданном тексте text.
Аргумент flags — это битовое ИЛИ следующих флагов:
- Qt::TextSingleLine игнорирует символы новой строки.
- Qt::TextExpandTabs расширяет табуляцию (см. ниже)
- Qt::TextShowMnemonic интерпретирует "&x" как x; т.е. подчёркнутое.
- Qt::TextWordWrap разбивает текст для подгонки под прямоугольник.
Эти флаги определены в перечислении Qt::TextFlag.
Если флаг Qt::TextExpandTabs установлен в flags, используется следующее поведение для интерпретации символов табуляции в тексте:
- Если tabArray не равен null, он задаёт последовательность, завершающуюся нулём, позиций табуляции в пикселях.
- Если tabStops не равно нулю, оно используется в качестве интервала табуляции (в пикселях).
Символы новой строки обрабатываются как разрывы строк.
Примечание: Несмотря на разные фактические высоты символов, высоты ограничивающих прямоугольников "Да" и "да" одинаковы.
См. также boundingRect().
qreal QFontMetricsF::strikeOutPos() const
Возвращает расстояние от базовой линии до места, где должна быть нарисована линия зачёркивания.
См. также underlinePos(), overlinePos() и lineWidth().
void QFontMetricsF::swap(QFontMetricsF &other)
Меняет местами этот экземпляр метрик шрифта и other. Эта функция очень быстрая и никогда не даёт сбоев.
Эта функция была добавлена в Qt 5.0.
QRectF QFontMetricsF::tightBoundingRect(const QString &text) const
Возвращает ограничивающий прямоугольник, плотно облегающий символы в строке, заданной text. Ограничивающий прямоугольник всегда охватывает по меньшей мере набор пикселей, которые текст будет занимать, если его нарисовать в (0, 0).
Обратите внимание, что ограничивающий прямоугольник может выходить за пределы (0, 0), например, для наклонных шрифтов, и что ширина возвращённого прямоугольника может отличаться от того, что возвращает метод horizontalAdvance().
END_OF_DOCUMENT_MARKERЕсли вы хотите узнать ширину строки для выравнивания набора строк рядом друг с другом, используйте horizontalAdvance() вместо этого.
Символы новой строки обрабатываются как обычные символы, а не как разрывы строк.
Предупреждение: Вызов этого метода очень медленный в Windows.
Эта функция была добавлена в Qt 4.3.
См. также horizontalAdvance(), height() и boundingRect().
qreal QFontMetricsF::underlinePos() const
Возвращает расстояние от базовой линии до места, где должна быть нарисована черта подчёркивания.
См. также overlinePos(), strikeOutPos() и lineWidth().
qreal QFontMetricsF::xHeight() const
Возвращает высоту символа 'x' шрифта. Часто, но не всегда, совпадает с высотой символа 'x'.
bool QFontMetricsF::operator!=(const QFontMetricsF &other) const
Это перегруженная функция.
Возвращает true если метрики шрифта не равны метрикам шрифта other; в противном случае возвращает false.
См. также operator==().
bool QFontMetricsF::operator==(const QFontMetricsF &other) const
Возвращает true если метрики шрифта равны метрикам шрифта other; в противном случае возвращает false.
Две метрики шрифта считаются равными, если они были созданы из одного и того же QFont, и устройства рисования, для которых они были созданы, считаются совместимыми.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qfontmetricsf.html