Класс 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. Если paintdevice равен 0, метрики будут совместимы с экраном, то есть такими, как вы получите, если используете шрифт для вывода текста на виджеты или пиксельмапы, а не на QPicture или QPrinter.
Объект метрик шрифта содержит информацию о шрифте, переданном в конструктор на момент создания, и не обновляется, если атрибуты шрифта изменяются позже.
Эта функция была представлена в Qt 5.13.
QFontMetricsF::QFontMetricsF(const QFont &font)
Создаёт объект метрик шрифта для font.
Метрики шрифта будут совместимы с paintdevice, используемым для создания 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 не равен нулю, он задаёт последовательность позиций пикселей для табуляции в тексте, завершающуюся нулём.
- Если tabStops не равно нулю, оно используется как отступ табуляции (в пикселях).
Обратите внимание, что охватывающий прямоугольник может простираться влево от (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 в качестве значения.
Отметка эллипса следует за направлением макета. Например, она будет расположена справа от текста для макетов справа налево, если режим равен Qt::ElideLeft, и слева от текста, если режим равен 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.
Некоторые метрики описаны на изображении справа. Центральные тёмные прямоугольники покрывают логический горизонтальный отступ (horizontalAdvance()) каждого символа. Внешние светлые прямоугольники покрывают 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(char) всех символов в шрифте.
Обратите внимание, что эта функция может быть очень медленной для больших шрифтов.
См. также minRightBearing() и leftBearing().
qreal QFontMetricsF::minRightBearing() const
Возвращает минимальный правый отступ шрифта.
Это наименьший rightBearing(char) всех символов в шрифте.
Обратите внимание, что эта функция может быть очень медленной для больших шрифтов.
См. также 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 не равен нулю, он указывает на последовательность позиций символов табуляции в тексте.
- Если tabStops не равно нулю, оно используется как отступ табуляции (в пикселях).
Символы новой строки обрабатываются как разрывы строк.
Примечание: Несмотря на различные фактические высоты символов, высоты ограничивающих прямоугольников для "Yes" и "yes" одинаковы.
См. также 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.14/qfontmetricsf.html