Spec-Zone.ru › Qt 6.1

Класс QRawFont

Класс QRawFont предоставляет доступ к одному физическому экземпляру шрифта. Подробнее...

Заголовок: #include <QRawFont>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
  • Список всех членов, включая унаследованные члены

Открытые типы

enum AntialiasingType { PixelAntialiasing, SubPixelAntialiasing }
enum LayoutFlag { SeparateAdvances, KernedAdvances, UseDesignMetrics }
flags LayoutFlags

Открытые функции

QRawFont(const QRawFont &other)
QRawFont(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)
QRawFont(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)
QRawFont()
QRawFont & operator=(const QRawFont &other)
~QRawFont()
QList<QPointF> advancesForGlyphIndexes(const QList<quint32> &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const
QList<QPointF> advancesForGlyphIndexes(const QList<quint32> &glyphIndexes) const
bool advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs) const
bool advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs, QRawFont::LayoutFlags layoutFlags) const
QImage alphaMapForGlyph(quint32 glyphIndex, QRawFont::AntialiasingType antialiasingType = SubPixelAntialiasing, const QTransform &transform = QTransform()) const
qreal ascent() const
qreal averageCharWidth() const
QRectF boundingRect(quint32 glyphIndex) const
qreal capHeight() const
qreal descent() const
QString familyName() const
QByteArray fontTable(const char *tagName) const
bool glyphIndexesForChars(const QChar *chars, int numChars, quint32 *glyphIndexes, int *numGlyphs) const
QList<quint32> glyphIndexesForString(const QString &text) const
QFont::HintingPreference hintingPreference() const
bool isValid() const
qreal leading() const
qreal lineThickness() const
void loadFromData(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference)
void loadFromFile(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference)
qreal maxCharWidth() const
QPainterPath pathForGlyph(quint32 glyphIndex) const
qreal pixelSize() const
void setPixelSize(qreal pixelSize)
QFont::Style style() const
QString styleName() const
QList<QFontDatabase::WritingSystem> supportedWritingSystems() const
bool supportsCharacter(QChar character) const
bool supportsCharacter(uint ucs4) const
void swap(QRawFont &other)
qreal underlinePosition() const
qreal unitsPerEm() const
int weight() const
qreal xHeight() const
bool operator!=(const QRawFont &other) const
bool operator==(const QRawFont &other) const

Статические открытые члены

QRawFont fromFont(const QFont &font, QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any)

Связанные внешние члены

size_t qHash(const QRawFont &font, size_t seed = 0)

Подробное описание

Примечание: QRawFont - это низкоуровневый класс. В большинстве случаев QFont является более подходящим классом.

Чаще всего, при представлении текста в пользовательском интерфейсе, точные шрифты, используемые для отрисовки символов, в некоторой степени неизвестны. Это может быть по нескольким причинам: например, фактические физические шрифты, присутствующие в целевой системе, могут быть неожиданными для разработчиков, или текст может содержать выбранные пользователем стили, размеры или системы письма, которые не поддерживаются шрифтом, выбранным в коде.

Поэтому класс QFont в Qt действительно представляет собой запрос на шрифты. При интерпретации текста Qt сделает все возможное, чтобы сопоставить текст с запросом, но в зависимости от поддержки могут использоваться разные шрифты за кулисами.

В большинстве случаев это ожидаемо и необходимо, так как это сводит к минимуму возможность отображения недоступного текста в пользовательском интерфейсе. Однако в некоторых случаях может потребоваться более прямой контроль над этим процессом. Именно для этих случаев существует класс QRawFont.

Объект QRawFont представляет собой единственный физический экземпляр шрифта с заданным размером в пикселях. То есть в типичном случае он представляет набор таблиц шрифтов TrueType или OpenType и использует указанный пользователем размер в пикселях для преобразования метрик в логические пиксельные единицы. Он может использоваться в сочетании с классом QGlyphRun для рисования определенных индексов глифов в определенных позициях, а также для доступа к некоторым релевантным данным в физическом шрифте.

QRawFont поддерживает только основные технологии шрифтов: GDI и DirectWrite на платформах Windows, FreeType на платформах Linux и CoreText на macOS. Для других шрифтовых бэкэндов API будут отключены.

QRawFont можно создать несколькими способами:

  • Он может быть создан путем вызова QTextLayout::glyphs() или QTextFragment::glyphs(). Возвращаемые объекты QGlyphs будут содержать объекты QRawFont, которые представляют фактические шрифты, используемые для отображения каждой части текста.
  • Его можно создать, передав объект QFont функции QRawFont::fromFont(). Функция вернёт объект QRawFont, представляющий шрифт, который будет выбран в ответ на запрос QFont и выбранной системы письма.
  • Его можно создать, передав имя файла или QByteArray напрямую конструктору QRawFont или вызвав loadFromFile() или loadFromData(). В этом случае шрифт не будет зарегистрирован в QFontDatabase и не будет доступен в рамках стандартного выбора шрифтов.

QRawFont считается локальным для потока, в котором он был создан (либо с помощью конструктора, либо вызвав loadFromData() или loadFromFile()). QRawFont нельзя переместить в другой поток, но его нужно будет пересоздать в интересующем потоке.

Примечание: Для требования к кешированию индексов глифов и выбору шрифтов для статического текста, чтобы избежать повторного форматирования и переразметки во внутреннем цикле приложения, лучшим выбором является класс QStaticText, так как он оптимизирует затраты памяти кеша, а также предоставляет возможность кеширования, специфичного для движка рисования, для дополнительного повышения скорости.

Документация типов членов

enum QRawFont::AntialiasingType

Этот перечисление представляет собой различные способы растрирования глифа в функции alphaMapForGlyph().

Константа Значение Описание
QRawFont::PixelAntialiasing 0 Будет производить растрирование, измеряя покрытие формы на целых пикселях. Возвращаемый образ содержит альфа-значения каждого пикселя, основанные на покрытии формы глифа.
QRawFont::SubPixelAntialiasing 1 Будет производить растрирование, измеряя покрытие каждого субпикселя, возвращая отдельные альфа-значения для каждого из компонентов красного, зеленого и синего каждого пикселя.

[since 5.1] перечисление QRawFont::LayoutFlagфлаги QRawFont::LayoutFlags

Это перечисление указывает функции advancesForGlyphIndexes() способ вычисления величин смещений.

Константа Значение Описание
QRawFont::SeparateAdvances 0 Будет вычислять смещение для каждого глифа отдельно.
QRawFont::KernedAdvances 1 Будет применять кернинг между соседними глифами. Обратите внимание, что кернинг на основе OpenType GPOS в настоящее время не поддерживается.
QRawFont::UseDesignMetrics 2 Использовать метрики дизайна вместо метрик с учётом наклона, откорректированных до разрешения устройства рисования. Можно объединять с любыми из вышеперечисленных вариантов.

Это перечисление было введено или изменено в Qt 5.1.

Тип LayoutFlags является псевдонимом для QFlags<LayoutFlag>. Он хранит логическое ИЛИ сочетание значений LayoutFlag.

Документация функций членов

QRawFont::QRawFont(const QRawFont &other)

Создаёт QRawFont, являющийся копией other.

QRawFont::QRawFont(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)

Создаёт QRawFont, представляющий шрифт, содержащийся в переданных данных fontData, для размера (в пикселях), заданного pixelSize, и используя предпочтения наклона, указанные в hintingPreference.

Примечание: Данные должны содержать шрифт TrueType или OpenType.

QRawFont::QRawFont(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)

Создаёт QRawFont, представляющий шрифт, содержащийся в файле, на который ссылается fileName, для размера (в пикселях), заданного pixelSize, и используя предпочтения наклона, указанные в hintingPreference.

Примечание: Ссылка на файл должна содержать шрифт TrueType или OpenType.

QRawFont::QRawFont()

Создаёт недействительный QRawFont.

QRawFont &QRawFont::operator=(const QRawFont &other)

Присваивает other этому QRawFont.

QRawFont::~QRawFont()

Удаляет QRawFont

[since 5.1] QList<QPointF> QRawFont::advancesForGlyphIndexes(const QList<quint32> &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const

Возвращает величины смещений QRawFont для каждого из glyphIndexes в пиксельных единицах. Величины смещений задают расстояние от позиции данного глифа до того места, где следует нарисовать следующий глиф, чтобы сделать их видимыми как неразделённые. Способ вычисления смещений контролируется параметром layoutFlags.

Эта функция была введена в Qt 5.1.

См. также QTextLine::horizontalAdvance() и QFontMetricsF::horizontalAdvance().

QList<QPointF> QRawFont::advancesForGlyphIndexes(const QList<quint32> &glyphIndexes) const

Это перегруженная функция.

Возвращает величины смещений QRawFont для каждого из glyphIndexes в пиксельных единицах. Величины смещений задают расстояние от позиции данного глифа до того места, где следует нарисовать следующий глиф, чтобы сделать их видимыми как неразделённые. Смещение каждого глифа вычисляется отдельно.

См. также QTextLine::horizontalAdvance() и QFontMetricsF::horizontalAdvance().

bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs) const

Это перегруженная функция.

Возвращает величины смещений QRawFont для каждого из glyphIndexes в пиксельных единицах. Величины смещений задают расстояние от позиции данного глифа до того места, где следует нарисовать следующий глиф, чтобы сделать их видимыми как неразделённые. Индексы глифов задаются массивом glyphIndexes, а результаты возвращаются через advances, оба массива должны иметь numGlyphs элементов. Смещение каждого глифа вычисляется отдельно.

См. также QTextLine::horizontalAdvance() и QFontMetricsF::horizontalAdvance().

[since 5.1] bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs, QRawFont::LayoutFlags layoutFlags) const

Возвращает величины смещений QRawFont для каждого из glyphIndexes в пиксельных единицах. Величины смещений задают расстояние от позиции данного глифа до того места, где следует нарисовать следующий глиф, чтобы сделать их видимыми как неразделённые. Индексы глифов задаются массивом glyphIndexes, а результаты возвращаются через advances, оба массива должны иметь numGlyphs элементов. Способ вычисления смещений контролируется параметром layoutFlags.

Эта функция была введена в Qt 5.1.

См. также QTextLine::horizontalAdvance() и QFontMetricsF::horizontalAdvance().

END_OF_DOCUMENT_MARKER

QImage QRawFont::alphaMapForGlyph(quint32 glyphIndex, QRawFont::AntialiasingType antialiasingType = SubPixelAntialiasing, const QTransform &transform = QTransform()) const

Эта функция возвращает растровое изображение глифа с заданным glyphIndex в базовом шрифте, используя указанное преобразование transform. Если QRawFont недействителен, эта функция вернёт недействительный QImage.

Если шрифт является цветным, то полученное изображение будет содержать отрисованный глиф в текущем размере пикселей. В этом случае antialiasingType будет проигнорирован.

В противном случае, если antialiasingType установлен в QRawFont::SubPixelAntialiasing, то полученное изображение будет в формате QImage::Format_RGB32, а значения RGB каждого пикселя будут представлять субпиксельные непрозрачности пикселя в растровом изображении глифа. В противном случае, изображение будет в формате QImage::Format_Indexed8, и каждый пиксель будет содержать непрозрачность пикселя в растре.

См. также pathForGlyph() и QPainter::drawGlyphRun().

qreal QRawFont::ascent() const

Возвращает восходящую составляющую этого QRawFont в единицах пикселей.

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

См. также QFontMetricsF::ascent().

qreal QRawFont::averageCharWidth() const

Возвращает среднюю ширину символа этого QRawFont в единицах пикселей.

См. также QFontMetricsF::averageCharWidth().

[since 5.0] QRectF QRawFont::boundingRect(quint32 glyphIndex) const

Возвращает наименьший прямоугольник, содержащий глиф с данным glyphIndex.

Эта функция была добавлена в Qt 5.0.

[since 5.8] qreal QRawFont::capHeight() const

Возвращает высоту прописных букв этого QRawFont в единицах пикселей.

Высота прописных букв шрифта — это высота заглавной буквы над базовой линией. Конкретно это высота заглавных букв, которые плоские (такие как H или I), в отличие от округлённых (таких как O) или острых букв (таких как A), которые могут отображаться с переходом.

Эта функция была добавлена в Qt 5.8.

См. также QFontMetricsF::capHeight().

qreal QRawFont::descent() const

Возвращает нисходящую составляющую этого QRawFont в единицах пикселей.

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

См. также QFontMetricsF::descent().

QString QRawFont::familyName() const

Возвращает имя семейства этого QRawFont.

QByteArray QRawFont::fontTable(const char *tagName) const

Извлекает таблицу sfnt с именем tagName из базового физического шрифта или пустой массив байтов, если такая таблица не найдена. Порядок байтов возвращаемой таблицы шрифта — Big Endian, как это определено форматом sfnt. tagName должен иметь длину четыре символа и должен быть отформатирован в стандартной endianности текущей платформы.

[static] QRawFont QRawFont::fromFont(const QFont &font, QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any)

Получает физическое представление на основе запроса font. Физический шрифт, возвращаемый функцией, предпочтительнее используется Qt для отображения текста в выбранном writingSystem.

Предупреждение: Эта функция потенциально ресурсоёмкая и не должна вызываться в критичных по производительности участках кода.

bool QRawFont::glyphIndexesForChars(const QChar *chars, int numChars, quint32 *glyphIndexes, int *numGlyphs) const

Преобразует строку юникодных кодов в индексы глифов, используя таблицу CMAP в базовом шрифте. Функция работает как glyphIndexesForString(), за исключением того, что принимает массив (chars), результаты возвращаются через массив glyphIndexes, а количество глифов задаётся в numGlyphs. Размер массива glyphIndexes должен быть как минимум numChars. Если этого недостаточно, функция вернёт false, после чего можно перераспределить glyphIndexes на размер, возвращённый в numGlyphs.

См. также glyphIndexesForString(), advancesForGlyphIndexes(), QGlyphRun, QTextLayout::glyphRuns(), и QTextFragment::glyphRuns().

QList<quint32> QRawFont::glyphIndexesForString(const QString &text) const

Преобразует строку юникодных кодов, заданную text, в индексы глифов, используя таблицу CMAP в базовом шрифте, и возвращает список с результатом.

Обратите внимание, что в случаях, когда в шрифте есть другие таблицы, влияющие на формирование текста, возвращаемые индексы глифов не будут корректно представлять отображение текста. Чтобы получить корректно сформированный текст, используйте QTextLayout для выкладки и формирования текста, а затем вызовите QTextLayout::glyphs() для получения набора списков индексов глифов и пар QRawFont.

См. также advancesForGlyphIndexes(), glyphIndexesForChars(), QGlyphRun, QTextLayout::glyphRuns(), и QTextFragment::glyphRuns().

QFont::HintingPreference QRawFont::hintingPreference() const

Возвращает предпочтение сглаживания, использованное для создания этого QRawFont.

См. также QFont::hintingPreference().

bool QRawFont::isValid() const

Возвращает true, если QRawFont действителен, и false в противном случае.

qreal QRawFont::leading() const

Возвращает величину межстрочного интервала этого QRawFont в единицах пикселей.

Это естественный интервал между строками.

См. также QFontMetricsF::leading().

qreal QRawFont::lineThickness() const

Возвращает толщину линий (подчёркивания, надчёркивания и т. д.) вместе с текстом, нарисованным в этом шрифте.

void QRawFont::loadFromData(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference)

Заменяет текущий QRawFont шрифтом, содержащимся в предоставленных fontData, для размера (в пикселях), заданного pixelSize, и используя указанное предпочтение сглаживания hintingPreference.

fontData должен содержать шрифт TrueType или OpenType.

См. также loadFromFile().

void QRawFont::loadFromFile(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference)

Заменяет текущий QRawFont содержимым файла, на который указывает fileName, для размера (в пикселях), заданного pixelSize, и используя указанное предпочтение сглаживания hintingPreference.

Файл должен ссылаться на шрифт TrueType или OpenType.

См. также loadFromData().

qreal QRawFont::maxCharWidth() const

Возвращает ширину самого широкого символа в шрифте.

См. также QFontMetricsF::maxWidth().

QPainterPath QRawFont::pathForGlyph(quint32 glyphIndex) const

Эта функция возвращает форму глифа по заданному glyphIndex в базовом шрифте, если QRawFont является валидным. В противном случае она возвращает пустую QPainterPath.

Возвращаемый глиф всегда будет без подгонки.

См. также alphaMapForGlyph() и QPainterPath::addText().

qreal QRawFont::pixelSize() const

Возвращает размер в пикселях, установленный для этого QRawFont. Размер в пикселях влияет на то, как глифы растрируются, размер глифов, возвращаемых функцией pathForGlyph(), и используется для преобразования внутренних метрик из единиц дизайна в логические единицы пикселей.

См. также setPixelSize().

void QRawFont::setPixelSize(qreal pixelSize)

Устанавливает размер в пикселях, с которым этот шрифт должен быть отрисован, в pixelSize.

См. также pixelSize().

QFont::Style QRawFont::style() const

Возвращает стиль этого QRawFont.

См. также QFont::style().

QString QRawFont::styleName() const

Возвращает имя стиля этого QRawFont.

См. также QFont::styleName().

QList<QFontDatabase::WritingSystem> QRawFont::supportedWritingSystems() const

Возвращает список систем письма, поддерживаемых шрифтом в соответствии с информацией, предоставленной дизайнером в файле шрифта. Обратите внимание, что это не гарантирует поддержку конкретной точки Юникода в шрифте. Вы можете использовать supportsCharacter(), чтобы проверить поддержку отдельного, конкретного символа.

Примечание: Список определяется на основе диапазонов Юникода и диапазонов кодовых страниц, установленных в таблице OS/2 шрифта, и требует наличия такой таблицы в файле базового шрифта.

См. также supportsCharacter().

bool QRawFont::supportsCharacter(QChar character) const

Возвращает true, если шрифт имеет глиф, соответствующий данному character.

См. также supportedWritingSystems().

bool QRawFont::supportsCharacter(uint ucs4) const

Это перегруженная функция.

Возвращает true, если шрифт имеет глиф, соответствующий символу UCS-4 с кодом ucs4.

См. также supportedWritingSystems().

[since 5.0] void QRawFont::swap(QRawFont &other)

Меняет местами этот шрифт с other. Эта функция очень быстрая и никогда не терпит неудачу.

Эта функция была добавлена в Qt 5.0.

qreal QRawFont::underlinePosition() const

Возвращает позицию от базовой линии для рисования подчеркиваний под текстом, нарисованным этим шрифтом.

qreal QRawFont::unitsPerEm() const

Возвращает количество единиц дизайна, определяющих ширину и высоту квадратного эма для этого QRawFont. Это значение используется вместе с размером в пикселях при преобразовании метрик дизайна в единицы пикселей, поскольку внутренние метрики задаются в единицах дизайна, а размер в пикселях задает размер 1 эма в пикселях.

См. также pixelSize() и setPixelSize().

int QRawFont::weight() const

Возвращает вес этого QRawFont.

См. также QFont::weight().

qreal QRawFont::xHeight() const

Возвращает xHeight этого QRawFont в единицах пикселей.

Часто, но не всегда, совпадает с высотой символа 'x'.

См. также QFontMetricsF::xHeight().

bool QRawFont::operator!=(const QRawFont &other) const

Возвращает true, если этот QRawFont не равен other. В противном случае возвращает false.

bool QRawFont::operator==(const QRawFont &other) const

Возвращает true, если этот QRawFont равен other. В противном случае возвращает false.

Связанные нечленные функции

[since 5.8] size_t qHash(const QRawFont &font, size_t seed = 0)

Возвращает хэш-значение для font. Если задано, seed используется для инициализации хэша.

Эта функция была добавлена в Qt 5.8.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qrawfont.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API