Spec-Zone.ru › Qt 5.6

Класс QRawFont

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

Заголовок: #include <QRawFont>
qmake: QT += gui
С версии: Qt 4.8
  • Список всех членов, включая унаследованные

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

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

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

QRawFont()
QRawFont(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)
QRawFont(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting)
QRawFont(const QRawFont &other)
~QRawFont()
QVector<QPointF> advancesForGlyphIndexes(const QVector<quint32> &glyphIndexes, 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, LayoutFlags layoutFlags) const
QImage alphaMapForGlyph(quint32 glyphIndex, AntialiasingType antialiasingType = SubPixelAntialiasing, const QTransform &transform = QTransform()) const
qreal ascent() const
qreal averageCharWidth() const
QRectF boundingRect(quint32 glyphIndex) 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
QRawFont & operator=(QRawFont &&other)
QRawFont & operator=(const QRawFont &other)
bool operator==(const QRawFont &other) const

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

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

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

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

Примечание: 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, так как он оптимизирует затраты памяти кэша, а также предоставляет возможность кэширования для специфических движков отрисовки для дополнительного ускорения.

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

перечисление QRawFont::AntialiasingType

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

Постоянная Значение Описание
QRawFont::PixelAntialiasing 0 Будет растрировать, измеряя покрытие формы на целых пикселях. Возвращаемое изображение содержит значения альфа каждого пикселя на основе покрытия формы глифа.
QRawFont::SubPixelAntialiasing 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()

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

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

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

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

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

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

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

QRawFont::QRawFont(const QRawFont &other)

Создает QRawFont, который является копией other.

QRawFont::~QRawFont()

Уничтожает QRawFont.

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

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

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

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

END_OF_DOCUMENT_MARKER

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

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

Если 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::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

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

Примечание: Список определяется на основе диапазонов Unicode и диапазонов кодовых страниц, заданных в таблице 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.

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

Оператор присваивания перемещения.

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

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

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

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

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

Spec-Zone.ru

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