Spec-Zone.ru › Qt 5.15

Класс QRawFont

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

Заголовок: #include <QRawFont>
qmake: QT += gui
С момента версии: Qt 4.8

Этот класс был введен в Qt 4.8.

  • Список всех членов, включая унаследованные члены

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

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()
QVector<QPointF> advancesForGlyphIndexes(const QVector<quint32> &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const
QVector<QPointF> advancesForGlyphIndexes(const QVector<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
QVector<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)

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

uint qHash(const QRawFont &font, uint 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 Будет растрировать, измеряя покрытие каждого субпикселя, возвращая отдельное значение альфа для каждого из красного, зеленого и синего компонентов каждого пикселя.

enum QRawFont::LayoutFlagflags 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

QVector<QPointF> QRawFont::advancesForGlyphIndexes(const QVector<quint32> &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const

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

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

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

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

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

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

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

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

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

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

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

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::width().

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().

QRectF QRawFont::boundingRect(quint32 glyphIndex) const

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

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

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 должен иметь длину четыре символа и должен быть отформатирован в соответствии с предпочтительной кодировкой платформы.

[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().

QVector<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().

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.

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

uint qHash(const QRawFont &font, uint 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-5.15/qrawfont.html

Spec-Zone.ru

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