Класс QFontDatabase
Класс QFontDatabase предоставляет информацию о шрифтах, доступных в подлежащей системе окон. Подробнее...
| Заголовок: | #include <QFontDatabase> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Примечание: Все функции в этом классе являются безопасными для потоков.
Типы
| перечисление | SystemFont { GeneralFont, FixedFont, TitleFont, SmallestReadableFont } |
| перечисление | WritingSystem { Any, Latin, Greek, Cyrillic, Armenian, …, Nko } |
Статические публичные члены
| int | addApplicationFont(const QString &fileName) |
| int | addApplicationFontFromData(const QByteArray &fontData) |
| QStringList | applicationFontFamilies(int id) |
| bool | bold(const QString &family, const QString &style) |
| QStringList | families(QFontDatabase::WritingSystem writingSystem = Any) |
| QFont | font(const QString &family, const QString &style, int pointSize) |
| bool | isBitmapScalable(const QString &family, const QString &style = QString()) |
| bool | isFixedPitch(const QString &family, const QString &style = QString()) |
| bool | isPrivateFamily(const QString &family) |
| bool | isScalable(const QString &family, const QString &style = QString()) |
| bool | isSmoothlyScalable(const QString &family, const QString &style = QString()) |
| bool | italic(const QString &family, const QString &style) |
| QList<int> | pointSizes(const QString &family, const QString &styleName = QString()) |
| bool | removeAllApplicationFonts() |
| bool | removeApplicationFont(int id) |
| QList<int> | smoothSizes(const QString &family, const QString &styleName) |
| QList<int> | standardSizes() |
| QString | styleString(const QFont &font) |
| QString | styleString(const QFontInfo &fontInfo) |
| QStringList | styles(const QString &family) |
| QFont | systemFont(QFontDatabase::SystemFont type) |
| int | weight(const QString &family, const QString &style) |
| QString | writingSystemName(QFontDatabase::WritingSystem writingSystem) |
| QString | writingSystemSample(QFontDatabase::WritingSystem writingSystem) |
| QList<QFontDatabase::WritingSystem> | writingSystems() |
| QList<QFontDatabase::WritingSystem> | writingSystems(const QString &family) |
Подробное описание
Наиболее распространённые случаи использования этого класса — это запросы к базе данных для списка шрифтов families() и для pointSizes() и styles(), доступных для каждого семейства. Альтернативой pointSizes() является smoothSizes(), которая возвращает размеры, при которых данное семейство и стиль будут выглядеть привлекательно.
Если семейство шрифтов доступно из двух или более производителей, имя производителя включается в имя семейства; например: «Helvetica [Adobe]» и «Helvetica [Cronyx]». При указании семейства можно использовать старый форматированный «производитель-шрифт» или форматированный «шрифт [производитель]»; например: «Cronyx-Helvetica» или «Helvetica [Cronyx]». Если у семейства есть производитель, оно всегда возвращается в форматированном виде «[производитель]», как и значение, возвращаемое families().
Функция font() возвращает QFont, заданные семейство, стиль и размер.
Можно проверить комбинацию семейства и стиля, чтобы увидеть, является ли она курсивом или полужирным, и получить её вес. Аналогично, можно вызвать isBitmapScalable(), isSmoothlyScalable(), isScalable() и isFixedPitch().
Используйте styleString(), чтобы получить текстовое представление стиля.
Класс QFontDatabase предоставляет некоторые вспомогательные функции, например, standardSizes(). Вы можете получить описание системы письма с помощью writingSystemName(), а образец символов в системе письма с помощью writingSystemSample().
Пример:
QTreeWidget fontTree;
fontTree.setColumnCount(2);
fontTree.setHeaderLabels(QStringList() << "Font" << "Smooth Sizes");
const QStringList fontFamilies = QFontDatabase::families();
for (const QString &family : fontFamilies) {
QTreeWidgetItem *familyItem = new QTreeWidgetItem(&fontTree);
familyItem->setText(0, family);
const QStringList fontStyles = QFontDatabase::styles(family);
for (const QString &style : fontStyles) {
QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
styleItem->setText(0, style);
QString sizes;
const QList<int> smoothSizes = QFontDatabase::smoothSizes(family, style);
for (const auto &points : smoothSizes)
sizes += QString::number(points) + ' ';
styleItem->setText(1, sizes.trimmed());
}
} В этом примере получается список семейств шрифтов, список стилей для каждого семейства и размеры точек, доступные для каждой комбинации семейства и стиля, отображая эту информацию в представлении дерева.
См. также QFont, QFontInfo, QFontMetrics и Пример карты символов.
Документация по типам членов
[since 5.2] перечисление QFontDatabase::SystemFont
| Константа | Значение | Описание |
|---|---|---|
QFontDatabase::GeneralFont |
0 |
Стандартный системный шрифт. |
QFontDatabase::FixedFont |
1 |
Фиксированный шрифт, рекомендуемый системой. |
QFontDatabase::TitleFont |
2 |
Стандартный системный шрифт для заголовков. |
QFontDatabase::SmallestReadableFont |
3 |
Наименьший читаемый системный шрифт. |
Это перечисление было введено или изменено в Qt 5.2.
перечисление QFontDatabase::WritingSystem
| Константа | Значение | Описание |
|---|---|---|
QFontDatabase::Any |
0 |
|
QFontDatabase::Latin |
1 |
|
QFontDatabase::Greek |
2 |
|
QFontDatabase::Cyrillic |
3 |
|
QFontDatabase::Armenian |
4 |
|
QFontDatabase::Hebrew |
5 |
|
QFontDatabase::Arabic |
6 |
|
QFontDatabase::Syriac |
7 |
|
QFontDatabase::Thaana |
8 |
|
QFontDatabase::Devanagari |
9 |
|
QFontDatabase::Bengali |
10 |
|
QFontDatabase::Gurmukhi |
11 |
|
QFontDatabase::Gujarati |
12 |
|
QFontDatabase::Oriya |
13 |
|
QFontDatabase::Tamil |
14 |
|
QFontDatabase::Telugu |
15 |
|
QFontDatabase::Kannada |
16 |
|
QFontDatabase::Malayalam |
17 |
|
QFontDatabase::Sinhala |
18 |
|
QFontDatabase::Thai |
19 |
|
QFontDatabase::Lao |
20 |
|
QFontDatabase::Tibetan |
21 |
|
QFontDatabase::Myanmar |
22 |
|
QFontDatabase::Georgian |
23 |
|
QFontDatabase::Khmer |
24 |
|
QFontDatabase::SimplifiedChinese |
25 |
|
QFontDatabase::TraditionalChinese |
26 |
|
QFontDatabase::Japanese |
27 |
|
QFontDatabase::Korean |
28 |
|
QFontDatabase::Vietnamese |
29 |
|
QFontDatabase::Symbol |
30 |
|
QFontDatabase::Other |
Symbol |
(то же, что и Символ) |
QFontDatabase::Ogham |
31 |
|
QFontDatabase::Runic |
32 |
|
QFontDatabase::Nko |
33 |
Документация функций-членов
[static] int QFontDatabase::addApplicationFont(const QString &fileName)
Загружает шрифт из файла, указанного параметром fileName, и делает его доступным для приложения. Возвращается идентификатор, который можно использовать для удаления шрифта с помощью removeApplicationFont() или для получения списка имен семейств, содержащихся в шрифте.
Функция возвращает -1, если шрифт не удалось загрузить.
В настоящее время поддерживаются только TrueType-шрифты, коллекции TrueType-шрифтов и OpenType-шрифты.
Примечание: Добавление прикладных шрифтов на платформах Unix/X11 без fontconfig в настоящее время не поддерживается.
См. также addApplicationFontFromData(), applicationFontFamilies() и removeApplicationFont().
[static] int QFontDatabase::addApplicationFontFromData(const QByteArray &fontData)
Загружает шрифт из двоичных данных, указанных параметром fontData, и делает его доступным для приложения. Возвращается идентификатор, который можно использовать для удаления шрифта с помощью removeApplicationFont() или для получения списка имен семейств, содержащихся в шрифте.
Функция возвращает -1, если шрифт не удалось загрузить.
В настоящее время поддерживаются только TrueType-шрифты и коллекции TrueType-шрифтов.
Примечание: Добавление прикладных шрифтов на платформах Unix/X11 без fontconfig в настоящее время не поддерживается.
См. также addApplicationFont(), applicationFontFamilies() и removeApplicationFont().
[static] QStringList QFontDatabase::applicationFontFamilies(int id)
Возвращает список семейств шрифтов для данного прикладного шрифта, идентифицируемого параметром id.
См. также addApplicationFont() и addApplicationFontFromData().
[static] bool QFontDatabase::bold(const QString &family, const QString &style)
Возвращает true, если шрифт с семейством family и стилем style является полужирным; в противном случае возвращает false.
См. также italic() и weight().
[static] QStringList QFontDatabase::families(QFontDatabase::WritingSystem writingSystem = Any)
Возвращает отсортированный список доступных семейств шрифтов, поддерживающих writingSystem.
Если семейство шрифта существует в нескольких типографиях, возвращаемое имя шрифта имеет вид «family [foundry]». Примеры: «Times [Adobe]», «Times [Cronyx]», «Palatino».
См. также writingSystems().
[static] QFont QFontDatabase::font(const QString &family, const QString &style, int pointSize)
Возвращает объект QFont, у которого семейство family, стиль style и размер pointSize. Если соответствующий шрифт не может быть создан, возвращается объект QFont, использующий стандартный шрифт приложения.
[static] bool QFontDatabase::isBitmapScalable(const QString &family, const QString &style = QString())
Возвращает true, если шрифт с семейством family и стилем style является масштабируемым растровым шрифтом; в противном случае возвращает false.
Масштабирование растрового шрифта обычно приводит к непривлекательному и трудночитаемому результату, поскольку пиксели шрифта масштабируются. Если вам нужно масштабировать растровый шрифт, лучше масштабировать его до одного из фиксированных размеров, возвращаемых smoothSizes().
См. также isScalable() и isSmoothlyScalable().
[static] bool QFontDatabase::isFixedPitch(const QString &family, const QString &style = QString())
Возвращает true, если шрифт с семейством family и стилем style имеет фиксированный шаг; в противном случае возвращает false.
[static, since 5.5] bool QFontDatabase::isPrivateFamily(const QString &family)
Возвращает true, если и только если семейство шрифтов family является частным.
Это происходит, например, на macOS и iOS, где системные шрифты недоступны пользователю. Для полноты информации, QFontDatabase::families() возвращает все семейства шрифтов, включая приватные. Вы должны использовать эту функцию, если разрабатываете элемент управления выбором шрифтов, чтобы скрыть приватные шрифты.
Эта функция была добавлена в Qt 5.5.
См. также families().
[static] bool QFontDatabase::isScalable(const QString &family, const QString &style = QString())
Возвращает true, если шрифт с семейством family и стилем style масштабируемый; в противном случае возвращает false.
См. также isBitmapScalable() и isSmoothlyScalable().
[static] bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &style = QString())
Возвращает true, если шрифт с семейством family и стилем style плавно масштабируется; в противном случае возвращает false. Если функция возвращает true, безопасно масштабировать этот шрифт до любого размера, и результат всегда будет привлекательным.
См. также isScalable() и isBitmapScalable().
[static] bool QFontDatabase::italic(const QString &family, const QString &style)
Возвращает true, если шрифт с семейством family и стилем style курсивный; в противном случае возвращает false.
[static] QList<int> QFontDatabase::pointSizes(const QString &family, const QString &styleName = QString())
Возвращает список доступных размеров точек для шрифта с семейством family и стилем styleName. Список может быть пустым.
См. также smoothSizes() и standardSizes().
[static] bool QFontDatabase::removeAllApplicationFonts()
Удаляет все шрифты, добавленные локально с помощью addApplicationFont() и addApplicationFontFromData().
Возвращает true если разгрузка шрифтов прошла успешно; в противном случае возвращает false.
См. также removeApplicationFont(), addApplicationFont(), и addApplicationFontFromData().
[static] bool QFontDatabase::removeApplicationFont(int id)
Удаляет загруженный локально шрифт, идентифицированный по id. Возвращает true если разгрузка шрифта прошла успешно; в противном случае возвращает false.
См. также removeAllApplicationFonts(), addApplicationFont(), и addApplicationFontFromData().
[static] QList<int> QFontDatabase::smoothSizes(const QString &family, const QString &styleName)
Возвращает размеры точек шрифта с семейством family и стилем styleName, которые будут выглядеть привлекательно. Список может быть пустым. Для несжимаемых шрифтов и растровых масштабируемых шрифтов эта функция эквивалентна pointSizes().
См. также pointSizes() и standardSizes().
[static] QList<int> QFontDatabase::standardSizes()
Возвращает список стандартных размеров шрифтов.
См. также smoothSizes() и pointSizes().
[static] QString QFontDatabase::styleString(const QFont &font)
Возвращает строку, описывающую стиль шрифта font. Например, "Жирный Курсив", "Жирный", "Курсив" или "Обычный". Возможна пустая строка.
[static] QString QFontDatabase::styleString(const QFontInfo &fontInfo)
Возвращает строку, описывающую стиль шрифта fontInfo. Например, "Жирный Курсив", "Жирный", "Курсив" или "Обычный". Возможна пустая строка.
[static] QStringList QFontDatabase::styles(const QString &family)
Возвращает список доступных стилей для семейства шрифтов family. Некоторые примеры стилей: "Светлый", "Светлый Курсив", "Жирный", "Наклонный", "Полужирный". Список может быть пустым.
См. также families().
[static, since 5.2] QFont QFontDatabase::systemFont(QFontDatabase::SystemFont type)
Возвращает наиболее подходящий шрифт для данного типа type для правильной интеграции с внешним видом системы.
Эта функция была добавлена в Qt 5.2.
См. также QGuiApplication::font().
[static] int QFontDatabase::weight(const QString &family, const QString &style)
Возвращает вес шрифта с семейством family и стилем style. Если такой комбинации семейства и стиля нет, возвращает -1.
[static] QString QFontDatabase::writingSystemName(QFontDatabase::WritingSystem writingSystem)
Возвращает имена writingSystem (например, для отображения пользователю в диалоге).
[static] QString QFontDatabase::writingSystemSample(QFontDatabase::WritingSystem writingSystem)
Возвращает строку с образцами символов из writingSystem.
[static] QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems()
Возвращает отсортированный список доступных систем письма. Этот список генерируется из информации обо всех установленных шрифтах на системе.
См. также families().
[static] QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems(const QString &family)
Возвращает отсортированный список систем письма, поддерживаемых заданным семейством шрифтов family.
См. также families().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qfontdatabase.html