QFont Class
QFont 类指定了对用于绘制文本的字体的查询。更多
头文件: | #include <QFont> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 所有成员(包括继承成员)的列表
- 已废弃成员
- QFont 是绘制类、隐式共享 类和富文本处理 API 的一部分。
注意:该类中的所有函数都是可重入的。
公共类型
(since 6.7) struct | Tag |
enum | Capitalization { MixedCase, AllUppercase, AllLowercase, SmallCaps, Capitalize } |
enum | HintingPreference { PreferDefaultHinting, PreferNoHinting, PreferVerticalHinting, PreferFullHinting } |
enum | SpacingType { PercentageSpacing, AbsoluteSpacing } |
enum | Stretch { AnyStretch, UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, …, UltraExpanded } |
enum | Style { StyleNormal, StyleItalic, StyleOblique } |
enum | StyleHint { AnyStyle, SansSerif, Helvetica, Serif, Times, …, System } |
enum | StyleStrategy { PreferDefault, PreferBitmap, PreferDevice, PreferOutline, ForceOutline, …, PreferQuality } |
enum | Weight { Thin, ExtraLight, Light, Normal, Medium, …, Black } |
公共函数
QFont() | |
QFont(const QFont &font, const QPaintDevice *pd) | |
QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false) | |
QFont(const QStringList &families, int pointSize = -1, int weight = -1, bool italic = false) | |
QFont(const QFont &font) | |
~QFont() | |
bool | bold() const |
QFont::Capitalization | capitalization() const |
(since 6.7) void | clearFeatures() |
(since 6.7) void | clearVariableAxes() |
QString | defaultFamily() const |
bool | exactMatch() const |
QStringList | families() const |
QString | family() const |
(since 6.7) QList<QFont::Tag> | featureTags() const |
(since 6.7) quint32 | featureValue(QFont::Tag tag) const |
bool | fixedPitch() const |
bool | fromString(const QString &descrip) |
QFont::HintingPreference | hintingPreference() const |
bool | isCopyOf(const QFont &f) const |
(since 6.7) bool | isFeatureSet(QFont::Tag tag) const |
(since 6.7) bool | isVariableAxisSet(QFont::Tag tag) const |
bool | italic() const |
bool | kerning() const |
QString | key() const |
qreal | letterSpacing() const |
QFont::SpacingType | letterSpacingType() const |
bool | overline() const |
int | pixelSize() const |
int | pointSize() const |
qreal | pointSizeF() const |
QFont | resolve(const QFont &other) const |
void | setBold(bool enable) |
void | setCapitalization(QFont::Capitalization caps) |
void | setFamilies(const QStringList &families) |
void | setFamily(const QString &family) |
(since 6.7) void | setFeature(QFont::Tag tag, quint32 value) |
void | setFixedPitch(bool enable) |
void | setHintingPreference(QFont::HintingPreference hintingPreference) |
void | setItalic(bool enable) |
void | setKerning(bool enable) |
void | setLetterSpacing(QFont::SpacingType type, qreal spacing) |
void | setOverline(bool enable) |
void | setPixelSize(int pixelSize) |
void | setPointSize(int pointSize) |
void | setPointSizeF(qreal pointSize) |
void | setStretch(int factor) |
void | setStrikeOut(bool enable) |
void | setStyle(QFont::Style style) |
void | setStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = PreferDefault) |
void | setStyleName(const QString &styleName) |
void | setStyleStrategy(QFont::StyleStrategy s) |
void | setUnderline(bool enable) |
(since 6.7) void | setVariableAxis(QFont::Tag tag, float value) |
void | setWeight(QFont::Weight weight) |
void | setWordSpacing(qreal spacing) |
int | stretch() const |
bool | strikeOut() const |
QFont::Style | style() const |
QFont::StyleHint | styleHint() const |
QString | styleName() const |
QFont::StyleStrategy | styleStrategy() const |
void | swap(QFont &other) |
QString | toString() const |
bool | underline() const |
(since 6.7) void | unsetFeature(QFont::Tag tag) |
(since 6.7) void | unsetVariableAxis(QFont::Tag tag) |
(since 6.7) QList<QFont::Tag> | variableAxisTags() const |
(since 6.7) float | variableAxisValue(QFont::Tag tag) const |
QFont::Weight | weight() const |
qreal | wordSpacing() const |
QVariant | operator QVariant() const |
bool | operator!=(const QFont &f) const |
bool | operator<(const QFont &f) const |
QFont & | operator=(QFont &&other) |
QFont & | operator=(const QFont &font) |
bool | operator==(const QFont &f) const |
静态公共成员
void | insertSubstitution(const QString &familyName, const QString &substituteName) |
void | insertSubstitutions(const QString &familyName, const QStringList &substituteNames) |
void | removeSubstitutions(const QString &familyName) |
QString | substitute(const QString &familyName) |
QStringList | substitutes(const QString &familyName) |
QStringList | substitutions() |
相关非成员
size_t | qHash(const QFont &key, size_t seed = 0) |
QDataStream & | operator<<(QDataStream &s, const QFont &font) |
QDataStream & | operator>>(QDataStream &s, QFont &font) |
详细说明
QFont 可视为对系统中一种或多种字体的查询。
创建 QFont 对象时,您可以指定希望字体具有的各种属性。Qt 将使用具有指定属性的字体,如果没有匹配的字体,Qt 将使用最匹配的已安装字体。实际使用的字体的属性可从QFontInfo 对象中获取。如果窗口系统提供了完全匹配的exactMatch() 返回true
。使用QFontMetricsF 获取测量值,例如使用 QFontMetrics::width() 获取字符串的像素长度。
未特别设置的属性不会影响字体选择算法,默认值将被优先使用。
要加载特定的物理字体(通常由单个文件表示),请使用QRawFont 。
请注意,在使用 QFont 之前,QGuiApplication 实例必须存在。您可以使用QGuiApplication::setFont() 设置应用程序的默认字体。
如果选择的字体不包含需要显示的所有字符,QFont 将尝试在最近的等效字体中查找字符。当QPainter 从字体中绘制字符时,QFont 将报告是否有该字符;如果没有,QPainter 将绘制一个未填充的正方形。
像这样创建 QFonts:
在构造函数中设置的属性也可以在以后设置,例如setFamily(),setPointSize(),setPointSizeF(),setWeight() 和setItalic().其余属性必须在构建后设置,如setBold(),setUnderline(),setOverline(),setStrikeOut() 和setFixedPitch() 。QFontInfo 对象应在字体属性设置后创建。即使更改字体属性,QFontInfo 对象也不会改变。相应的 "get "函数(如family(),pointSize() 等)会返回已设置的值,尽管使用的值可能不同。实际值可通过QFontInfo 对象获取。
如果请求的字体族不可用,可以通过setStyleHint() 选择特定的QFont::StyleHint 和QFont::StyleStrategy 来影响font matching algorithm 。默认族(与当前样式提示相对应)由defaultFamily() 返回。
您可以使用insertSubstitution() 和insertSubstitutions() 替换字体族名称。可以使用removeSubstitutions() 删除替换。使用substitute() 可检索族的第一个替代名称,如果没有替代名称,则检索族名称本身。使用substitutes() 可获取一个族的替代字体列表(可能为空)。替换字体后,必须通过销毁和重新创建所有 QFont 对象来触发字体更新。
每个 QFont 都有一个key() ,您可以将其用作缓存或字典中的键。如果您想存储用户的字体偏好,可以使用QSettings ,用toString() 写入字体信息,再用fromString() 读回。操作符<<()和操作符>>()函数也可用,但它们是在数据流上工作的。
使用setPixelSize() 可以将屏幕上显示的字符高度设置为指定的像素数;不过,使用setPointSize() 也有类似的效果,而且与设备无关。
加载字体的代价可能很高,尤其是在 X11 上。QFont 包含大量优化功能,可快速复制 QFont 对象,并缓存其依赖的慢速窗口系统函数的结果。
字体匹配算法的工作原理如下:
- 搜索指定的字体族(由setFamilies() 设置)。
- 如果没有,则选择支持书写系统的替代字体。字体匹配算法将尝试找到与 QFont 中设置的所有属性最匹配的字体。具体方法因平台而异。
- 如果系统中不存在支持文本的字体,则会显示特殊的 "缺失字符 "框。
注意: 如果所选字体虽然支持一般的书写系统,但缺少一个或多个特定字符的字形,那么 Qt 将尝试为这个或这些特定字符寻找后备字体。可以使用QFont::NoFontMerging 风格策略禁用此功能。
在 Windows 中,对 "Courier "字体的请求会自动更改为 "Courier New",这是 Courier 的改进版本,可实现平滑缩放。可以通过设置PreferBitmap 样式策略(请参阅setStyleStrategy() )来选择较旧的 "Courier "位图字体。
找到字体后,其余属性将按优先顺序进行匹配:
- fixedPitch()
- pointSize() (见下文)
- weight()
- style()
如果有一种字体与族匹配,即使其他属性都不匹配,也会优先选择这种字体,而不是与族不匹配但与其他属性匹配的字体。这是因为字体族是主要的搜索条件。
如果点大小在所要求点大小的 20% 以内,则定义为匹配。如果有几种字体相匹配,并且仅以字号大小来区分,那么将选择与所要求的字号大小最接近的字体。
用于绘制文本的实际族、字体大小、权重和其他字体属性将取决于所选族在窗口系统中的可用性。可以使用QFontInfo 对象来确定用于绘制文本的实际值。
例如
QFont f("Helvetica");
如果您同时拥有一个 Adobe 和一个 Cronyx Helvetica,您可能会得到以下两种结果。
QFont f("Helvetica [Cronyx]");
您可以在族名称中指定所需的代工厂。上例中的字体 f 将被设置为 "Helvetica [Cronyx]"。
要确定窗口系统中实际使用的字体属性,请使用QFontInfo 对象,例如
要了解字体指标,请使用QFontMetrics 对象,例如
QFontMetrics fm(f1); int textWidthInPixels = fm.horizontalAdvance("How many pixels wide is this text?"); int textHeightInPixels = fm.height();
有关字体的更多一般信息,请参阅comp.fonts FAQ。有关编码的信息,请参见UTR17页面。
另请参见 QFontMetrics,QFontInfo, 和QFontDatabase 。
成员类型文档
enum QFont::Capitalization
该字体适用文本的渲染选项。
常量 | 值 | 说明 |
---|---|---|
QFont::MixedCase | 0 | 这是正常的文本渲染选项,不会更改大写字母。 |
QFont::AllUppercase | 1 | 将文本改为全大写。 |
QFont::AllLowercase | 2 | 将文本改为全小写。 |
QFont::SmallCaps | 3 | 将文本改成小写。 |
QFont::Capitalize | 4 | 将文本改为每个单词的第一个字符为大写字符。 |
enum QFont::HintingPreference
该枚举描述了可应用于字形的不同级别的提示,以提高显示屏上的可读性,在显示屏上,由于像素密度的原因,可能需要使用提示。
常数 | 值 | 说明 |
---|---|---|
QFont::PreferDefaultHinting | 0 | 使用目标平台的默认提示级别。 |
QFont::PreferNoHinting | 1 | 如果可能,渲染文本时不提示字形轮廓。使用与打印时相同的度量标准,文本布局在排版上将是准确和可缩放的。 |
QFont::PreferVerticalHinting | 2 | 如果可能,在渲染文本时不使用水平提示,但在垂直方向上将字形与像素网格对齐。在密度过低而无法准确呈现字形的显示器上,文字会显得更清晰。但由于字形的水平度量没有提示,因此文本的布局可以扩展到密度较高的设备(如打印机)上,而不会影响换行等细节。 |
QFont::PreferFullHinting | 3 | 如果可能的话,在水平和垂直方向上渲染都有提示的文本。文本将被修改,以优化在目标设备上的可读性,但由于衡量标准将取决于文本的目标尺寸,因此字形、换行符和其他排版细节的位置不会缩放,这意味着文本布局在不同像素密度的设备上可能看起来不同。 |
请注意,该枚举仅描述了一种偏好,因为并非所有 Qt 支持的平台都支持全部的提示级别。下表详细说明了给定的提示首选项在一组选定的目标平台上的效果。
首选默认提示 | 首选无提示 | 首选垂直提示 | 首选完全提示 | |
---|---|---|---|---|
在 Qt 中启用 Windows 和 DirectWrite | 完全提示 | 垂直提示 | 垂直提示 | 完全提示 |
自由字体 | 操作系统设置 | 无提示 | 垂直提示(轻度) | 完全提示 |
MacOS 上的 Cocoa | 无提示 | 无提示 | 无提示 | 无提示 |
enum QFont::SpacingType
常数 | 值 | 说明 |
---|---|---|
QFont::PercentageSpacing | 0 | 值为 100 时,间距保持不变;值为 200 时,字符后的间距将按字符本身的宽度增大。 |
QFont::AbsoluteSpacing | 1 | 正值增加相应像素的字母间距,负值减小间距。 |
enum QFont::Stretch
遵循 CSS 命名规则的预定义拉伸值。值越大,文本的拉伸程度越大。
常数 | 值 | 说明 |
---|---|---|
QFont::AnyStretch (since Qt 5.8) | 0 | 0 接受使用其他QFont 属性匹配的任何拉伸值 |
QFont::UltraCondensed | 50 | 50 |
QFont::ExtraCondensed | 62 | 62 |
QFont::Condensed | 75 | 75 |
QFont::SemiCondensed | 87 | 87 |
QFont::Unstretched | 100 | 100 |
QFont::SemiExpanded | 112 | 112 |
QFont::Expanded | 125 | 125 |
QFont::ExtraExpanded | 150 | 150 |
QFont::UltraExpanded | 200 | 200 |
另请参见 setStretch() 和stretch()。
enum QFont::Style
该枚举描述了用于显示文本的不同字形样式。
常量 | 值 | 说明 |
---|---|---|
QFont::StyleNormal | 0 | 用于非样式文本的普通字形。 |
QFont::StyleItalic | 1 | 斜体字形,专门用于表示斜体文本。 |
QFont::StyleOblique | 2 | 具有斜体外观的字形,通常以未定型字形为基础,但未为表示斜体文本而进行微调。 |
另请参阅 Weight 。
enum QFont::StyleHint
如果所选字体系列不可用,font matching 算法会使用样式提示来查找合适的默认系列。
常数 | 值 | 说明 |
---|---|---|
QFont::AnyStyle | 5 | 让字体匹配算法选择族。这是默认值。 |
QFont::SansSerif | Helvetica | 字体匹配器更喜欢无衬线字体。 |
QFont::Helvetica | 0 | 是SansSerif 的同义词。 |
QFont::Serif | Times | 字体匹配器更喜欢衬线字体。 |
QFont::Times | 1 | 是Serif 的同义词。 |
QFont::TypeWriter | Courier | 字体匹配器首选固定间距字体。 |
QFont::Courier | 2 | 是TypeWriter 的同义词。 |
QFont::OldEnglish | 3 | 字体匹配器偏好装饰字体。 |
QFont::Decorative | OldEnglish | 是OldEnglish 的同义词。 |
QFont::Monospace | 7 | 字体匹配器首选映射到 CSS 通用字体-family "monospace "的字体。 |
QFont::Fantasy | 8 | 字体匹配器优先选择映射到 CSS 通用字体-family "fantasy "的字体。 |
QFont::Cursive | 6 | 字体匹配器会优先选择映射到 CSS 通用字体-family "草书 "的字体。 |
QFont::System | 4 | 字体匹配器首选系统字体。 |
enum QFont::StyleStrategy
样式策略告诉font matching 算法应使用哪种类型的字体来查找合适的默认族。
可使用以下策略:
常量 | 值 | 说明 |
---|---|---|
QFont::PreferDefault | 0x0001 | 默认样式策略。它不偏好任何类型的字体。 |
QFont::PreferBitmap | 0x0002 | 首选位图字体(相对于轮廓字体)。 |
QFont::PreferDevice | 0x0004 | 首选设备字体。 |
QFont::PreferOutline | 0x0008 | 优先选择轮廓字体(相对于位图字体)。 |
QFont::ForceOutline | 0x0010 | 强制使用轮廓字体。 |
QFont::NoAntialias | 0x0100 | 不反锯齿字体。 |
QFont::NoSubpixelAntialias | 0x0800 | 尽可能避免对字体进行亚像素抗锯齿。 |
QFont::PreferAntialias | 0x0080 | 尽可能反锯齿。 |
QFont::ContextFontMerging (since Qt 6.8) | 0x2000 | 如果所选字体不包含特定字符,Qt 会自动选择包含该字符的外观相似的后备字体。默认情况下,这是在逐个字符的基础上进行的。这意味着,在某些不常见的情况下,即使是同一脚本中的文本字符串,也可能使用多种字体来表示。设置ContextFontMerging 后,将尝试查找与输入字符串最大子集匹配的后备字体。对于字形缺失的字符串,这样做的代价会更高,但可能会得到更一致的结果。如果设置了NoFontMerging ,那么ContextFontMerging 将不起作用。 |
QFont::PreferTypoLineMetrics (since Qt 6.8) | 0x4000 | 出于兼容性考虑,OpenType 字体包含两组相互竞争的垂直线度量值,分别为ascent 、descent 和leading 。这些指标通常被称为win(Windows)指标和typo(排版)指标。虽然规范建议使用typo 度量来确定行距,但许多应用程序更倾向于使用win 度量,除非在字体的fsSelection字段中设置了USE_TYPO_METRICS 标志。出于向后兼容的考虑,Qt 应用程序也是如此。对于设置USE_TYPO_METRICS 标志以表示typo 度量有效的字体,以及win 度量和typo 度量相匹配的字体,这并不是一个问题。不过,对于某些字体,win 指标可能大于理想行距,而USE_TYPO_METRICS 标志可能被错误地取消设置。对于这类字体,设置PreferTypoLineMetrics 可能会得到更好的结果。 |
QFont::NoFontMerging | 0x8000 | 如果为特定书写系统选择的字体不包含要求绘制的字符,那么 Qt 会自动选择包含该字符的外观相似的字体。NoFontMerging 标志将禁用此功能。请注意,启用该标志不会阻止 Qt 在所选字体不支持文本的书写系统时自动选择合适的字体。 |
QFont::PreferNoShaping | 0x1000 | 有时,字体会对一组字符应用复杂的规则,以便正确显示这些字符。在某些书写系统(如婆罗门文字)中,为了使文本清晰易读,必须这样做,但在拉丁字母等文字中,这只是一种外观特征。在不需要时,PreferNoShaping 标志将禁用所有此类功能,这将在大多数情况下提高性能(自 Qt 5.10 起)。 |
这些标志中的任何一个都可以与其中一个标志进行 OR 编辑:
常量 | 值 | 说明 |
---|---|---|
QFont::PreferMatch | 0x0020 | 偏好精确匹配。字体匹配器将尝试使用指定的精确字体大小。 |
QFont::PreferQuality | 0x0040 | 首选最佳质量字体。字体匹配器将使用字体支持的最接近的标准点大小。 |
enum QFont::Weight
Qt 使用与 OpenType 兼容的从 1 到 1000 的权重表。权重为 1 的字体较细,而权重为 1000 的字体则极黑。
该枚举包含预定义的字体权重:
常量 | 值 | 说明 |
---|---|---|
QFont::Thin | 100 | 100 |
QFont::ExtraLight | 200 | 200 |
QFont::Light | 300 | 300 |
QFont::Normal | 400 | 400 |
QFont::Medium | 500 | 500 |
QFont::DemiBold | 600 | 600 |
QFont::Bold | 700 | 700 |
QFont::ExtraBold | 800 | 800 |
QFont::Black | 900 | 900 |
成员功能文档
QFont::QFont()
构造使用应用程序默认字体的字体对象。
另请参阅 QGuiApplication::setFont() 和QGuiApplication::font()。
QFont::QFont(const QFont &font, const QPaintDevice *pd)
从font 构建字体,供绘画设备pd 使用。
QFont::QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false)
使用指定的family 、pointSize 、weight 和italic 设置构建字体对象。
如果pointSize 为零或负数,字体的点大小将设置为与系统相关的默认值。一般情况下,默认值为 12 点。
family 名称还可选择包含代工厂名称,如 "Helvetica [Cronyx]"。如果family 可从多个代工厂获得,但未指定代工厂,则任意选择一个代工厂。如果没有可用的族,将使用font matching 算法设置一个族。
这将以逗号分割族字符串,并调用setFamilies() 得到结果列表。要保留名称中使用逗号的字体,请使用包含QStringList 的构造函数。
另请参见 Weight,setFamily(),setPointSize(),setWeight(),setItalic(),setStyleHint(),setFamilies(), 和QGuiApplication::font().
[explicit]
QFont::QFont(const QStringList &families, int pointSize = -1, int weight = -1, bool italic = false)
使用指定的families 、pointSize 、weight 和italic 设置构建字体对象。
如果pointSize 为零或负数,字体的点大小将设置为与系统相关的默认值。一般为 12 点。
families 中的每个族名条目还可选择包含代工厂名称,如 "Helvetica [Cronyx]"。如果有一个以上的字体代工厂提供该族,但未指定代工厂,则任意选择一个代工厂。如果没有可用的族,则将使用font matching 算法设置一个族。
另请参阅 Weight,setPointSize(),setWeight(),setItalic(),setStyleHint(),setFamilies(), 和QGuiApplication::font().
QFont::QFont(const QFont &font)
构造一种字体,它是font 的副本。
[noexcept]
QFont::~QFont()
销毁字体对象并释放所有已分配的资源。
bool QFont::bold() const
如果weight() 的值大于QFont::Medium ,则返回true
;否则返回false
。
另请参见 weight()、setBold() 和QFontInfo::bold()。
QFont::Capitalization QFont::capitalization() const
返回字体的当前大写类型。
另请参阅 setCapitalization()。
[since 6.7]
void QFont::clearFeatures()
清除QFont 上先前设置的任何特征。
有关字体特征的更多详情,请参阅setFeature() 。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag,setFeature(),unsetFeature(),featureTags() 和featureValue() 。
[since 6.7]
void QFont::clearVariableAxes()
清除QFont 上先前设置的任何可变轴值。
有关可变轴的更多详情,请参阅setVariableAxis() 。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag,setVariableAxis(),unsetVariableAxis(),isVariableAxisSet() 和variableAxisValue() 。
QString QFont::defaultFamily() const
返回与当前样式提示相对应的族名。
另请参阅 StyleHint,styleHint() 和setStyleHint()。
bool QFont::exactMatch() const
如果存在与该字体设置完全匹配的窗口系统字体,则返回true
。
另请参阅 QFontInfo 。
QStringList QFont::families() const
返回请求的字体族名称,即最后一次调用setFamilies() 或通过构造函数设置的名称。否则返回空列表。
另请参见 setFamily()、setFamilies()、family()、substitutes() 和substitute()。
QString QFont::family() const
返回请求的字体族名称。该名称始终与families() 调用中的第一个条目相同。
另请参阅 setFamily()、substitutes()、substitute()、setFamilies() 和families()。
[since 6.7]
QList<QFont::Tag> QFont::featureTags() const
返回当前在QFont 上设置的所有字体特征的标记列表。
有关字体特性的更多详情,请参阅setFeature() 。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag,setFeature(),unsetFeature(),isFeatureSet() 和clearFeatures() 。
[since 6.7]
quint32 QFont::featureValue(QFont::Tag tag) const
返回为特定特征设置的值tag 。如果未设置标签,则返回 0。
有关字体特征的更多详情,请参阅setFeature() 。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag,setFeature(),unsetFeature(),featureTags() 和isFeatureSet() 。
bool QFont::fixedPitch() const
如果已设置固定间距,则返回true
;否则返回false
。
另请参阅 setFixedPitch() 和QFontInfo::fixedPitch() 。
bool QFont::fromString(const QString &descrip)
设置该字体以匹配descrip 的描述。描述是以逗号分隔的字体属性列表,由toString() 返回。
另请参阅 toString()。
QFont::HintingPreference QFont::hintingPreference() const
返回使用该字体渲染的字形的当前首选提示级别。
另请参阅 setHintingPreference()。
[static]
void QFont::insertSubstitution(const QString &familyName, const QString &substituteName)
将substituteName 插入familyName 族的替换表中。
替换字体后,通过销毁和重新创建所有QFont 对象来触发字体更新。
另请参阅 insertSubstitutions()、removeSubstitutions()、substitutions()、substitute() 和substitutes()。
[static]
void QFont::insertSubstitutions(const QString &familyName, const QStringList &substituteNames)
将substituteNames 系列列表插入familyName 的替换列表。
替换字体后,通过销毁和重新创建所有QFont 对象来触发字体更新。
另请参阅 insertSubstitution()、removeSubstitutions()、substitutions() 和substitute()。
bool QFont::isCopyOf(const QFont &f) const
如果该字体和f 是彼此的副本,即其中一个字体是作为另一个字体的副本创建的,并且此后都没有修改过,则返回true
。这比相等严格得多。
另请参见 operator=() 和operator==()。
[since 6.7]
bool QFont::isFeatureSet(QFont::Tag tag) const
如果tag 给定的特征值已在QFont 上设置,则返回 true,否则返回 false。
有关字体特征的更多详情,请参阅setFeature() 。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag,setFeature(),unsetFeature(),featureTags() 和featureValue() 。
[since 6.7]
bool QFont::isVariableAxisSet(QFont::Tag tag) const
如果tag 给定的变量轴的值已在QFont 上设置,则返回 true,否则返回 false。
有关字体变轴的更多详情,请参阅setVariableAxis() 。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag,setVariableAxis(),unsetVariableAxis(),variableAxisValue() 和clearVariableAxes().
bool QFont::italic() const
如果字体的style() 不是true
,则返回 。QFont::StyleNormal
bool QFont::kerning() const
如果在使用该字体绘制文本时要使用分隔符,则返回true
。
另请参阅 setKerning().
QString QFont::key() const
返回字体的键,即字体的文本表示。它通常用作字体缓存或字典的键。
另请参阅 QMap 。
qreal QFont::letterSpacing() const
返回字体的字母间距。
另请参阅 setLetterSpacing()、letterSpacingType() 和setWordSpacing()。
QFont::SpacingType QFont::letterSpacingType() const
返回字母间距使用的间距类型。
另请参阅 letterSpacing()、setLetterSpacing() 和setWordSpacing()。
bool QFont::overline() const
如果设置了换行,则返回true
;否则返回false
。
另请参阅 setOverline() 。
int QFont::pixelSize() const
如果字体大小是通过setPixelSize() 设置的,则返回字体的像素大小。如果字体大小是通过setPointSize() 或setPointSizeF() 设置的,则返回-1。
另请参阅 setPixelSize()、pointSize()、QFontInfo::pointSize() 和QFontInfo::pixelSize()。
int QFont::pointSize() const
返回字体的点大小。如果字体大小以像素为单位,则返回-1。
另请参阅 setPointSize() 和pointSizeF()。
qreal QFont::pointSizeF() const
返回字体的点大小。如果字体大小以像素为单位,则返回-1。
另请参阅 pointSize()、setPointSizeF()、pixelSize()、QFontInfo::pointSize() 和QFontInfo::pixelSize()。
[static]
void QFont::removeSubstitutions(const QString &familyName)
删除familyName 的所有替换。
另请参见 insertSubstitutions()、insertSubstitution()、substitutions() 和substitute()。
QFont QFont::resolve(const QFont &other) const
返回一个新的QFont ,其中的属性是从other 复制而来,该字体之前未设置过这些属性。
void QFont::setBold(bool enable)
如果enable 为 true,则将字体的权重设置为QFont::Bold ;否则将权重设置为QFont::Normal 。
如需更精细的粗细控制,请使用setWeight() 。
注意: 如果设置了styleName(),该值可能会被忽略,或者如果平台支持,字体会被人为加粗。
void QFont::setCapitalization(QFont::Capitalization caps)
将该字体文本的大小写设置为caps 。
字体的大小写使文本以选定的大小写模式显示。
另请参阅 capitalization() 。
void QFont::setFamilies(const QStringList &families)
设置字体的族名列表。这些名称不区分大小写,可能包括铸造厂名称。families 中的第一个族将被设置为字体的主族。
families 中的每个族名还可选择包含一个铸造厂名称,例如 "Helvetica [Cronyx]"。如果有一个以上的字体代工厂提供该族,但未指定代工厂,则会任意选择一个代工厂。如果没有可用的族,则将使用font matching 算法设置一个族。
另请参阅 family(),families(),setFamily(),setStyleHint() 和QFontInfo 。
void QFont::setFamily(const QString &family)
设置字体的族名。该名称不区分大小写,可包含代工厂名称。
family 名称也可选择包含代工厂名称,如 "Helvetica [Cronyx]"。如果family 可从一个以上的代工厂获得,且未指定代工厂,则任意选择一个代工厂。如果没有可用的族,将使用font matching 算法设置一个族。
另请参阅 family(),setStyleHint(),setFamilies(),families() 和QFontInfo 。
[since 6.7]
void QFont::setFeature(QFont::Tag tag, quint32 value)
这是一个重载函数。
在塑造文本时,将一个整数值应用于tag 指定的字体特征。这提供了对字体整形过程的高级访问,可用于支持 API 未涵盖的字体特征。
该特征由tag 指定,通常由字体特征图中的四字符特征名称编码而成。
在大多数情况下,与标签一起传递的这个整数value 代表一个布尔值:零值表示禁用该特征,非零值表示启用该特征。但对于某些字体特征,它可能有其他解释。例如,当应用于salt
功能时,该值是一个索引,用于指定要使用的替代样式。
例如,frac
字体功能会将用斜线分隔的对角线分数(如1/2
)转换为不同的表示方法。通常情况下,这需要将完整的分数转换为单个字符宽度(如½
)。
如果字体支持frac
功能,则可以通过在字体特征图中设置features["frac"] = 1
,在整形器中启用该功能。
注: 默认情况下,Qt 将根据其他字体属性启用或禁用某些字体功能。特别是,kern
功能的启用/禁用将取决于QFont 的kerning() 属性。此外,如果应用了letterSpacing() ,所有连字功能(liga
,clig
,dlig
,hlig
)都将禁用,但仅适用于不需要使用连字的书写系统。对于需要使用连字符的书写系统,这些功能将保持默认状态。使用 setFeature() 和相关函数设置的值将覆盖默认行为。例如,如果将 "kern "特性设置为 1,那么无论 "kerning "属性是否设置为 false,都将始终启用 "kerning"。同样,如果将其设置为 0,则将始终禁用。要将字体功能重置为默认行为,可以使用unsetFeature() 取消设置。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag 、clearFeatures()、setFeature()、unsetFeature() 和featureTags()。
void QFont::setFixedPitch(bool enable)
如果enable 为 true,则开启固定螺距;否则关闭固定螺距。
另请参阅 fixedPitch() 和QFontInfo 。
void QFont::setHintingPreference(QFont::HintingPreference hintingPreference)
将字形的提示级别首选项设置为hintingPreference 。这是对底层字体渲染系统的一种提示,要求其使用一定级别的提示,不同平台的支持情况各不相同。详情请参见QFont::HintingPreference 文档中的表格。
默认的提示首选项是QFont::PreferDefaultHinting 。
另请参阅 hintingPreference().
void QFont::setItalic(bool enable)
如果enable 为 true,则将字体的style() 设置为QFont::StyleItalic ;否则,将字体样式设置为QFont::StyleNormal 。
注意: 如果设置了styleName() ,该值可能会被忽略,或者如果平台支持,字体可能会倾斜呈现,而不是选择设计的斜体字体变量。
void QFont::setKerning(bool enable)
如果enable 为 true,则启用该字体的分色;否则禁用。默认情况下,启用字形分辨。
启用分隔后,字形度量值不再相加,即使是拉丁文本也是如此。换句话说,width('a') + width('b') 等于 width("ab") 的假设并不一定成立。
另请参见 kerning() 和QFontMetrics 。
void QFont::setLetterSpacing(QFont::SpacingType type, qreal spacing)
将字体的字母间距设置为spacing ,间距类型设置为type 。
字母间距更改字体中单个字母之间的默认间距。根据所选的间距类型,字母间距既可以变小,也可以变大,可以是字符宽度的百分比,也可以是像素。
另请参阅 letterSpacing()、letterSpacingType() 和setWordSpacing()。
void QFont::setOverline(bool enable)
如果enable 为 true,则开启叠加线;否则关闭叠加线。
void QFont::setPixelSize(int pixelSize)
将字体大小设置为pixelSize 像素,最大字体大小为无符号 16 位整数。
使用该函数会使字体依赖于设备。请使用setPointSize() 或setPointSizeF() 以独立于设备的方式设置字体大小。
另请参阅 pixelSize()。
void QFont::setPointSize(int pointSize)
设置点大小为pointSize 。点大小必须大于零。
另请参阅 pointSize() 和setPointSizeF()。
void QFont::setPointSizeF(qreal pointSize)
将点尺寸设置为pointSize 。点尺寸必须大于零。要求的精度可能无法在所有平台上实现。
另请参阅 pointSizeF()、setPointSize() 和setPixelSize()。
void QFont::setStretch(int factor)
设置字体的拉伸因子。
拉伸因子匹配字体的压缩或扩展版本,或应用拉伸变换,将字体中所有字符的宽度改变factor %。例如,将factor 设置为 150 会使字体中所有字符的宽度增加 1.5 倍(即 150%)。最小拉伸因子为 1,最大拉伸因子为 4000。默认的拉伸因数是AnyStretch
,它接受任何拉伸因数,不会对字体应用任何变换。
拉伸因子只应用于轮廓字体。位图字体将忽略拉伸因数。
注意: 在匹配具有本地非默认拉伸因数的字体时,请求拉伸 100 将把字体拉伸回中等宽度字体。
另请参阅 stretch() 和QFont::Stretch 。
void QFont::setStrikeOut(bool enable)
如果enable 为 true,则设置 strikeout on;否则设置 strikeout off。
void QFont::setStyle(QFont::Style style)
将字体样式设置为style 。
另请参阅 style(),italic() 和QFontInfo 。
void QFont::setStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = PreferDefault)
将样式提示和策略分别设置为hint 和strategy 。
如果没有明确设置,则默认样式提示为AnyStyle
,样式策略为PreferDefault
。
Qt 不支持 X11 上的样式提示,因为窗口系统不提供此类信息。
另请参阅 StyleHint,styleHint(),StyleStrategy,styleStrategy(), 和QFontInfo 。
void QFont::setStyleName(const QString &styleName)
将字体的样式名称设置为styleName 。设置后,其他样式属性(如style() 和weight() )将在字体匹配中被忽略,但如果平台的字体引擎支持,它们可能会被模拟。
由于人工模拟的样式质量较低,而且缺乏全面的跨平台支持,因此不建议同时使用样式名称匹配和样式属性匹配。
另请参阅 styleName()。
void QFont::setStyleStrategy(QFont::StyleStrategy s)
将字体的样式策略设置为s 。
另请参阅 styleStrategy() 和QFont::StyleStrategy 。
void QFont::setUnderline(bool enable)
如果enable 为 true,则打开下划线;否则关闭下划线。
[since 6.7]
void QFont::setVariableAxis(QFont::Tag tag, float value)
将value 应用于与tag 对应的变量轴。
可变字体提供了一种在同一字体文件中存储多种变化(具有不同重量、宽度或样式)的方法。这些变化以浮点数值的形式给出,用于一组预定义的参数,称为 "变量轴"。具体实例通常由字体设计者命名,在 Qt XML 中,可以使用setStyleName() 选择这些实例,就像传统的子字库一样。
在某些情况下,为不同轴提供任意值也很有用。例如,如果一种字体有普通和粗体两个子字体,您可能需要一个介于两者之间的权重。这时,您可以通过为字体中的 "wght "轴提供自定义值来手动实现这一要求。
如果字体支持 "wght "轴,且给定值在其定义范围内,则将提供与权重 550.0 相对应的字体。
许多字体都提供一些标准轴,如 "wght"(重量)、"wdth"(宽度)、"ital"(斜体)和 "opsz"(光学尺寸)。字体本身定义了它们各自的范围。例如,"wght "可以从 100 到 900(QFont::Thin 到QFont::Black ),而 "ital "可以从 0 到 1(从非斜体到完全斜体)。
字体也可以选择定义自定义轴;唯一的限制是名称必须符合QFont::Tag (四个拉丁-1 字符的序列)的要求。
默认情况下,不设置可变轴。
注意: 在 Windows 系统中,如果使用了可选的 GDI 字体后端,则不支持可变轴。
此函数在 Qt 6.7 中引入。
另请参阅 unsetVariableAxis 。
void QFont::setWeight(QFont::Weight weight)
使用QFont::Weight 枚举定义的比例,将字体的权重设置为weight 。
注: 如果设置了styleName(),则在选择字体时可以忽略此值。
void QFont::setWordSpacing(qreal spacing)
将字体的字间距设置为spacing 。
字间距更改单个字之间的默认间距。正值会相应增加字间距的像素数,而负值则会相应减少字间距。
单词间距不适用于书写系统,因为在书写系统中,单个单词之间没有空白分隔。
另请参阅 wordSpacing() 和setLetterSpacing()。
int QFont::stretch() const
返回字体的拉伸因子。
另请参见 setStretch()。
bool QFont::strikeOut() const
如果设置了 strikeout,则返回true
;否则返回false
。
另请参阅 setStrikeOut() 。
QFont::Style QFont::style() const
返回字体的样式。
另请参见 setStyle()。
QFont::StyleHint QFont::styleHint() const
返回StyleHint 。
样式提示会影响font matching algorithm 。可用提示列表请参见QFont::StyleHint 。
另请参阅 setStyleHint(),QFont::StyleStrategy, 和QFontInfo::styleHint().
QString QFont::styleName() const
返回请求的字体样式名称。这可用于匹配不规则样式(无法在其他样式属性中规范化)的字体。
另请参阅 setStyleName()、setFamily() 和setStyle()。
QFont::StyleStrategy QFont::styleStrategy() const
返回StyleStrategy 。
样式策略会影响font matching 算法。有关可用策略的列表,请参见QFont::StyleStrategy 。
另请参阅 setStyleStrategy(),setStyleHint() 和QFont::StyleHint 。
[static]
QString QFont::substitute(const QString &familyName)
返回在指定familyName 时使用的第一个族名。查询不区分大小写。
如果familyName 没有替代项,则返回familyName 。
要获取替换列表,请使用substitutes() 。
另请参阅 setFamily()、insertSubstitutions()、insertSubstitution() 和removeSubstitutions()。
[static]
QStringList QFont::substitutes(const QString &familyName)
返回在指定familyName 时使用的族名列表。查找不区分大小写。
如果familyName 没有替换,则返回空列表。
另请参阅 substitute()、insertSubstitutions()、insertSubstitution() 和removeSubstitutions()。
[static]
QStringList QFont::substitutions()
返回已替换姓氏的排序列表。
另请参阅 insertSubstitution()、removeSubstitutions() 和substitute()。
[noexcept]
void QFont::swap(QFont &other)
将此字体实例与other 互换。该操作速度非常快,从未出现过故障。
QString QFont::toString() const
返回字体的描述。该描述是以逗号分隔的属性列表,非常适合在QSettings 中使用,包括以下内容:
- 字体系列
- 点大小
- 像素大小
- 样式提示
- 字体重量
- 字体样式
- 下划线
- 删除
- 固定间距
- 始终为0
- 大写
- 字母间距
- 单词间距
- 拉伸
- 样式策略
- 字体样式(不可用时省略)
另请参阅 fromString().
bool QFont::underline() const
如果已设置下划线,则返回true
;否则返回false
。
另请参阅 setUnderline() 。
[since 6.7]
void QFont::unsetFeature(QFont::Tag tag)
这是一个重载函数。
从明确启用/禁用的特征映射中取消设置tag 。
注意: 即使之前未添加该特征,也会在此QFont 中将字体特征映射标记为已修改,因此在与其他字体进行解析时将优先使用。
在QFont 上取消设置现有特征会将行为还原为默认行为。
有关字体特征的更多详情,请参阅setFeature() 。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag,clearFeatures(),setFeature(),featureTags() 和featureValue() 。
[since 6.7]
void QFont::unsetVariableAxis(QFont::Tag tag)
取消tag 先前设置的变轴值。
此函数在 Qt 6.7 中引入。
另请参阅 setVariableAxis 。
[since 6.7]
QList<QFont::Tag> QFont::variableAxisTags() const
返回当前在此QFont 上设置的所有变量轴的标记列表。
有关变量轴的更多详情,请参阅setVariableAxis() 。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag,setVariableAxis(),unsetVariableAxis(),isVariableAxisSet() 和clearVariableAxes() 。
[since 6.7]
float QFont::variableAxisValue(QFont::Tag tag) const
返回为特定变量轴tag 设置的值。如果未设置标签,则将返回 0.0。
有关变量轴的更多详情,请参阅setVariableAxis() 。
此函数在 Qt 6.7 中引入。
另请参阅 QFont::Tag,setVariableAxis(),unsetVariableAxis(),isVariableAxisSet() 和clearVariableAxes() 。
QFont::Weight QFont::weight() const
使用与QFont::Weight 枚举相同的比例返回字体的权重。
另请参阅 setWeight(),Weight, 和QFontInfo 。
qreal QFont::wordSpacing() const
返回字体的字间距。
另请参阅 setWordSpacing() 和setLetterSpacing()。
QVariant QFont::operator QVariant() const
返回字体的QVariant
bool QFont::operator!=(const QFont &f) const
如果该字体与f 不同,则返回true
;否则返回false
。
如果两个 QFonts 的字体属性不同,则视为不同。
另请参阅 operator==() 。
bool QFont::operator<(const QFont &f) const
提供该字体与f 字体的任意比较。如果两种字体相等,运算符返回false
;如果两种字体不相等,运算符返回 (f1 < f2) == !(f2 < f1)。
该函数在某些情况下非常有用,例如,如果您想将QFont 对象用作QMap 中的键。
另请参阅 operator==(),operator!=() 和isCopyOf()。
[noexcept]
QFont &QFont::operator=(QFont &&other)
Move-assignsother 到此QFont 实例。
QFont &QFont::operator=(const QFont &font)
为该字体指定font 并返回其引用。
bool QFont::operator==(const QFont &f) const
如果该字体等于f ,则返回true
;否则返回 false。
如果两个 QFonts 的字体属性相等,则视为相等。
另请参阅 operator!=() 和isCopyOf()。
相关非成员
[noexcept]
size_t qHash(const QFont &key, size_t seed = 0)
返回key 的哈希值,使用seed 作为计算的种子。
QDataStream &operator<<(QDataStream &s, const QFont &font)
将字体font 写入数据流s. (toString() 写入文本流。)
另请参阅 QDataStream 操作符的格式。
QDataStream &operator>>(QDataStream &s, QFont &font)
从数据流s 中读取字体font 。(fromString() 从文本流中读取)。
另请参阅 QDataStream 操作符的格式。
© 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.