QFontDatabase Class
QFontDatabase 类提供有关底层窗口系统中可用字体的信息。更多
Header: | #include <QFontDatabase> |
CMake.QFontDatabase | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
注意:该类中的所有函数都是线程安全的。
公共类型
enum | SystemFont { GeneralFont, FixedFont, TitleFont, SmallestReadableFont } |
enum | WritingSystem { Any, Latin, Greek, Cyrillic, Armenian, …, Nko } |
静态公共成员
(since 6.9) void | addApplicationEmojiFontFamily(const QString &familyName) |
(since 6.8) void | addApplicationFallbackFontFamily(QChar::Script script, const QString &familyName) |
int | addApplicationFont(const QString &fileName) |
int | addApplicationFontFromData(const QByteArray &fontData) |
(since 6.9) QStringList | applicationEmojiFontFamilies() |
(since 6.8) QStringList | applicationFallbackFontFamilies(QChar::Script script) |
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() |
(since 6.9) bool | removeApplicationEmojiFontFamily(const QString &familyName) |
(since 6.8) bool | removeApplicationFallbackFontFamily(QChar::Script script, const QString &familyName) |
bool | removeApplicationFont(int id) |
(since 6.9) void | setApplicationEmojiFontFamilies(const QStringList &familyNames) |
(since 6.8) void | setApplicationFallbackFontFamilies(QChar::Script script, const QStringList &familyNames) |
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]"。指定族时,可以使用旧的连字符 "foundry-family "格式,也可以使用带括号的 "family [foundry]"格式;例如例如:"Cronyx-Helvetica "或 "Helvetica [Cronyx]"。如果族有代工厂,则始终使用括号内的格式返回,如families() 返回的值。
font() 函数在给定族、样式和字号的情况下返回QFont 。
可以检查族和样式的组合,查看它是italic() 还是bold() ,并检索它的weight()。类似地,我们可以调用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 。
成员类型文档
enum QFontDatabase::SystemFont
常数 | 值 | 说明 |
---|---|---|
QFontDatabase::GeneralFont | 0 | 系统默认字体。 |
QFontDatabase::FixedFont | 1 | 系统推荐的固定字体。 |
QFontDatabase::TitleFont | 2 | 标题的系统标准字体。 |
QFontDatabase::SmallestReadableFont | 3 | 最小的可读系统字体。 |
enum 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, since 6.9]
void QFontDatabase::addApplicationEmojiFontFamily(const QString &familyName)
添加familyName 作为应用程序定义的表情符号字体。
对于显示多色表情符号或表情符号序列,Qt 默认首选系统默认的表情符号字体。有时,应用程序可能希望覆盖默认字体,以实现特定的视觉风格或显示系统不支持的表情符号。
此功能在 Qt 6.9 中引入。
另请参阅 removeApplicationEmojiFontFamily,setApplicationEmojiFontFamilies(),applicationEmojiFontFamilies() 和addApplicationFallbackFontFamily()。
[static, since 6.8]
void QFontDatabase::addApplicationFallbackFontFamily(QChar::Script script, const QString &familyName)
为script 添加familyName 作为应用程序定义的后备字体。
当 Qt 遇到所选字体不支持的字符时,它会在后备字体列表中查找匹配的字体。这样,即使主字体不支持这些字符,也能确保在单个字符串中组合多个脚本。
后备字体列表是根据字符串的脚本和其他条件(如系统语言)选择的。
虽然系统后备列表通常已经足够,但在某些情况下,覆盖默认行为还是很有用的。其中一种情况是使用应用程序字体作为后备,以确保跨平台一致性。
在另一种情况下,应用程序可能是用具有地区差异的脚本编写的,并希望在多个地区以非翻译方式运行。在这种情况下,用与应用程序语言相匹配的语言覆盖本地区域的回退可能会很有用。
通过将familyName 传递给 addApplicationFallbackFontFamily(),当匹配script 中的缺失字符时,该字体将成为首选字体。script 必须是有效的脚本(QChar::Script_Latin
或更高)。为同一脚本添加多个字体时,它们的优先级将倒序排列,即先检查最后添加的族,依次类推。
注意: Qt XML 的字体匹配算法将QChar::Script_Common
(未确定脚本)和QChar::Script_Latin
视为相同。为其中任何一个添加回退也将适用于另一个。
此函数在 Qt 6.8 中引入。
另请参阅 setApplicationFallbackFontFamilies()、removeApplicationFallbackFontFamily() 和applicationFallbackFontFamilies()。
[static]
int QFontDatabase::addApplicationFont(const QString &fileName)
从fileName 指定的文件中加载字体,并将其提供给应用程序。返回的 ID 可用于再次使用removeApplicationFont() 删除字体,或检索字体中包含的族名列表。
如果无法加载字体,函数将返回-1。
目前仅支持 TrueType 字体、TrueType 字体集合和 OpenType 字体。
另请参阅 addApplicationFontFromData()、applicationFontFamilies() 和removeApplicationFont()。
[static]
int QFontDatabase::addApplicationFontFromData(const QByteArray &fontData)
从fontData 指定的二进制数据中加载字体,并将其提供给应用程序。返回的 ID 可用于再次使用removeApplicationFont() 删除字体,或检索字体中包含的族名列表。
如果无法加载字体,函数将返回-1。
目前仅支持 TrueType 字体、TrueType 字体集合和 OpenType 字体。
另请参阅 addApplicationFont()、applicationFontFamilies() 和removeApplicationFont()。
[static, since 6.9]
QStringList QFontDatabase::applicationEmojiFontFamilies()
返回应用程序定义的表情符号字体系列列表。
此函数在 Qt 6.9 中引入。
另请参阅 addApplicationEmojiFontFamily()、removeApplicationEmojiFontFamily()、setApplicationEmojiFontFamilies() 和applicationFallbackFontFamilies()。
[static, since 6.8]
QStringList QFontDatabase::applicationFallbackFontFamilies(QChar::Script script)
返回先前由addApplicationFallbackFontFamily() 函数添加到script 的应用程序定义的后备字体系列列表。
该函数在 Qt 6.8 中引入。
另请参阅 setApplicationFallbackFontFamilies()、addApplicationFallbackFontFamily() 和removeApplicationFallbackFontFamily()。
[static]
QStringList QFontDatabase::applicationFontFamilies(int id)
返回由id 标识的给定应用程序字体的字体族列表。
另请参阅 addApplicationFont() 和addApplicationFontFromData()。
[static]
bool QFontDatabase::bold(const QString &family, const QString &style)
如果具有族family 和样式style 的字体是粗体,则返回true
;否则返回false
。
[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())
如果具有族family 和样式style 的字体是可缩放位图字体,则返回true
;否则返回false
。缩放位图字体通常会产生难以阅读的不美观结果,因为字体的像素被缩放了。如果需要缩放位图字体,最好将其缩放为smoothSizes() 返回的固定大小之一。
另请参见 isScalable() 和isSmoothlyScalable()。
[static]
bool QFontDatabase::isFixedPitch(const QString &family, const QString &style = QString())
如果具有族family 和样式style 的字体是固定间距字体,则返回true
;否则返回false
。
[static]
bool QFontDatabase::isPrivateFamily(const QString &family)
如果且仅如果family 字体系列是私有的,则返回true
。
例如,在 macOS 和 iOS 上就会出现这种情况,因为用户无法访问系统 UI 字体。为完整起见,QFontDatabase::families() 返回所有字体族,包括私有字体。如果要开发字体选择控件以隐藏专用字体,则应使用此函数。
另请参见 families()。
[static]
bool QFontDatabase::isScalable(const QString &family, const QString &style = QString())
如果具有族family 和样式style 的字体是可缩放的,则返回true
;否则返回false
。
另请参见 isBitmapScalable() 和isSmoothlyScalable()。
[static]
bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &style = QString())
如果具有族family 和样式style 的字体可平滑缩放,则返回true
;否则返回false
。如果此函数返回true
,则可以安全地将此字体缩放到任何大小,而且结果看起来总是很美观。
另请参阅 isScalable() 和isBitmapScalable()。
[static]
bool QFontDatabase::italic(const QString &family, const QString &style)
如果具有族family 和样式style 的字体是斜体,则返回true
;否则返回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, since 6.9]
bool QFontDatabase::removeApplicationEmojiFontFamily(const QString &familyName)
从应用程序定义的表情符号字体列表中移除familyName ,前提是之前已使用addApplicationEmojiFontFamily() 添加过该字体。
如果字体名称在列表中,则返回 true;如果不在列表中,则返回 false。
此函数在 Qt 6.9 中引入。
另请参阅 addApplicationEmojiFontFamily()、setApplicationEmojiFontFamilies()、applicationEmojiFontFamilies() 和removeApplicationFallbackFontFamily()。
[static, since 6.8]
bool QFontDatabase::removeApplicationFallbackFontFamily(QChar::Script script, const QString &familyName)
将familyName 从script 的应用程序定义的后备字体列表中删除,前提是之前已通过addApplicationFallbackFontFamily() 添加了该字体。
如果族名在列表中,则返回 true;如果不在列表中,则返回 false。
此函数在 Qt 6.8 中引入。
另请参阅 addApplicationFallbackFontFamily()、setApplicationFallbackFontFamilies() 和applicationFallbackFontFamilies()。
[static]
bool QFontDatabase::removeApplicationFont(int id)
删除由id 标识的先前加载的应用程序字体。如果卸载字体成功,则返回true
;否则返回false
。
另请参阅 removeAllApplicationFonts()、addApplicationFont() 和addApplicationFontFromData()。
[static, since 6.9]
void QFontDatabase::setApplicationEmojiFontFamilies(const QStringList &familyNames)
将应用程序定义的表情符号字体列表设置为familyNames 。
此函数在 Qt 6.9 中引入。
另请参阅 addApplicationEmojiFontFamily()、removeApplicationEmojiFontFamily()、applicationEmojiFontFamilies() 和setApplicationFallbackFontFamilies()。
[static, since 6.8]
void QFontDatabase::setApplicationFallbackFontFamilies(QChar::Script script, const QStringList &familyNames)
将script 的应用程序定义的后备字体列表设置为familyNames 。
当 Qt 在script 中遇到当前字体不支持的字符时,它会按照从第一个到最后一个的顺序检查familyNames 中的族,直到找到匹配为止。详情请参阅addApplicationFallbackFontFamily() 。
该函数将覆盖当前应用程序定义的后备字体列表script 。
该函数在 Qt 6.8 中引入。
另请参阅 addApplicationFallbackFontFamily()、removeApplicationFallbackFontFamily() 和applicationFallbackFontFamilies()。
[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]
QFont QFontDatabase::systemFont(QFontDatabase::SystemFont type)
为type 的给定情况返回最合适的字体,以便与系统的外观和感觉完美融合。
另请参见 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()。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.