このページでは

QFontMetricsF Class

QFontMetricsF クラスは、フォントのメトリクス情報を提供します。詳細...

ヘッダー: #include <QFontMetricsF>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

注:このクラスのすべての関数は再入可能です。

パブリック関数

QFontMetricsF(const QFont &font)
QFontMetricsF(const QFontMetrics &fontMetrics)
QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice)
QFontMetricsF(const QFontMetricsF &fm)
QFontMetricsF(QFontMetricsF &&)
~QFontMetricsF()
qreal ascent() const
qreal averageCharWidth() const
QRectF boundingRect(QChar ch) const
QRectF boundingRect(const QString &text) const
(since 6.3) QRectF boundingRect(const QString &text, const QTextOption &option) const
QRectF boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
qreal capHeight() const
qreal descent() const
QString elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const
qreal fontDpi() const
qreal height() const
(since 6.3) qreal horizontalAdvance(const QString &text, const QTextOption &option) const
qreal horizontalAdvance(const QString &text, int length = -1) const
qreal horizontalAdvance(QChar ch) const
bool inFont(QChar ch) const
bool inFontUcs4(uint ch) const
qreal leading() const
qreal leftBearing(QChar ch) const
qreal lineSpacing() const
qreal lineWidth() const
qreal maxWidth() const
qreal minLeftBearing() const
qreal minRightBearing() const
qreal overlinePos() const
qreal rightBearing(QChar ch) const
QSizeF size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
qreal strikeOutPos() const
void swap(QFontMetricsF &other)
QRectF tightBoundingRect(const QString &text) const
(since 6.3) QRectF tightBoundingRect(const QString &text, const QTextOption &option) const
qreal underlinePos() const
qreal xHeight() const
bool operator!=(const QFontMetricsF &other) const
QFontMetricsF &operator=(QFontMetricsF &&other)
QFontMetricsF &operator=(const QFontMetrics &other)
QFontMetricsF &operator=(const QFontMetricsF &fm)
bool operator==(const QFontMetricsF &other) const

詳細な説明

QFontMetricsF 関数は、指定されたフォントの文字および文字列のサイズを計算します。既存のQFont を使用して QFontMetricsF オブジェクトを構築し、そのフォントのメトリックを取得することができます。後でフォントが変更されても、フォント メトリック オブジェクトは更新されません。

一度作成されると、このオブジェクトは、フォント、その文字、およびそのフォントでレンダリングされた文字列の個々のメトリクスにアクセスするための関数を提供します。

フォントに対して操作を行う関数はいくつかあります。ascent()、descent()、height()、leading()、およびlineSpacing() は、フォントの基本的なサイズプロパティを返します。underlinePos()、overlinePos()、strikeOutPos()、およびlineWidth() 関数は、文字の下線、上線、または取り消し線を引くラインのプロパティを返します。これらの関数はすべて高速です。

また、フォント内のグリフの集合に対して操作を行う関数もいくつかあります:minLeftBearing()、minRightBearing()、およびmaxWidth() です。これらは必然的に処理が遅いため、可能であれば使用を避けることをお勧めします。

各文字について、horizontalAdvance()、leftBearing()、rightBearing() を取得でき、inFont() を使用してその文字がフォントに含まれているかどうかを確認できます。また、文字を文字列として扱い、文字列関数を適用することも可能です。

文字列関数には、文字列の幅をピクセル単位(またはプリンタの場合はポイント単位)で返す `horizontalAdvance()`、レンダリングされた文字列を収めるのに十分な大きさの矩形を返す `boundingRect()`、およびその矩形のサイズを返す `size()` などがあります。

QFontMetrics には、文字列の境界を計算するための2つの異なる関数があり、それぞれに複数のオーバーロードがあります:boundingRect() とtightBoundingRect() です。正確な境界矩形が必要な場合は、tightBoundingRect() を使用することを推奨します。この関数は各グリフを個別に測定し、レンダリングされたテキストにぴったりと沿う境界矩形を返します。 プラットフォームによっては、boundingRect() 関数は近似値の境界を返す場合がありますが、計算負荷は低くなります。

例:

QFont font("times", 24);
QFontMetricsF fm(font);
qreal pixelsWide = fm.horizontalAdvance("What's the advance width of this text?");
qreal pixelsHigh = fm.height();

関連項目: QFont 、QFontInfo 、およびQFontDatabase 。

メンバ関数のドキュメント

[explicit] QFontMetricsF::QFontMetricsF(const QFont &font)

font 用のフォントメトリクスオブジェクトを作成します。

このフォントメトリクスは、font の作成に使用されたペイントデバイスと互換性があります。

フォントメトリクスオブジェクトは、作成時にコンストラクタで渡されたフォントに関する情報を保持しており、後でフォントの属性が変更されても更新されません。

特定のペイントデバイスと互換性のあるフォントメトリクスを取得するには、QFontMetricsF(constQFont &,QPaintDevice *) を使用します。

QFontMetricsF::QFontMetricsF(const QFontMetrics &fontMetrics)

指定されたfontMetrics オブジェクトから、浮動小数点精度を持つフォントメトリクスオブジェクトを作成します。

QFontMetricsF::QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice)

font およびpaintdevice 用のフォントメトリクスオブジェクトを構築します。

フォントメトリクスは、渡されたペイントデバイスと互換性があります。paintdevice がnullptr の場合、メトリクスは画面互換となります。つまり、QPicture やQPrinter ではなく、widgets やpixmaps でテキストを描画する際に得られるメトリクスとなります。

フォントメトリクスオブジェクトは、作成時にコンストラクタで渡されたフォントに関する情報を保持しており、後でフォントの属性が変更されても更新されることはありません。

QFontMetricsF::QFontMetricsF(const QFontMetricsF &fm)

fm のコピーを作成します。

[constexpr noexcept default] QFontMetricsF::QFontMetricsF(QFontMetricsF &&)

QFontMetricsF のインスタンスをMoveコンストラクタで生成します。

[noexcept] QFontMetricsF::~QFontMetricsF()

フォントメトリクスオブジェクトを破棄し、割り当てられたすべてのリソースを解放します。

qreal QFontMetricsF::ascent() const

フォントのアセントを返します。

フォントのアセントとは、ベースラインから文字が伸びる最高位置までの距離のことです。実際には、フォントデザイナーによっては、例えば1つの文字の上に複数のアクセントを配置する場合や、特定の文字に対応させる場合など、このルールから外れることがあります。そのため、この値が小さすぎる場合もあり得ます(ただし、稀です)。

descent()も参照してください 。

qreal QFontMetricsF::averageCharWidth() const

そのフォントに含まれるグリフの平均幅を返します。

QRectF QFontMetricsF::boundingRect(QChar ch) const

文字「ch 」の、ベースラインの最左端を基準とした境界矩形を返します。

なお、囲み矩形は(0, 0)の左側にまで及ぶ場合がある(例:イタリック体のフォントなど)こと、また、テキストの出力が囲み矩形内のすべてのピクセルを覆う場合があることに注意してください。

この矩形は通常、ベースラインの上下両方に及ぶことに注意してください。

horizontalAdvance()も参照してください 。

QRectF QFontMetricsF::boundingRect(const QString &text) const

text で指定された文字列に含まれる文字の境界矩形を返します。この境界矩形は、常に、テキストが (0, 0) に描画された場合に覆うピクセルの範囲を少なくとも包含します。

なお、イタリック体のフォントの場合など、境界矩形が (0, 0) の左側にまで及ぶ場合があること、また、返される矩形の幅がhorizontalAdvance() メソッドが返す値とは異なる場合があることに注意してください。

文字列の進み幅を知りたい場合(一連の文字列を隣り合わせに配置する場合など)、代わりにhorizontalAdvance() を使用してください。

改行文字は、改行としてではなく、通常の文字として処理されます。

境界矩形の高さは、height() が返す値以上になります。

horizontalAdvance()、height()、およびQPainter::boundingRect()も参照してください 。

[since 6.3] QRectF QFontMetricsF::boundingRect(const QString &text, const QTextOption &option) const

text で指定された文字列内の文字について、option を使用して配置された際の境界矩形を返します。この境界矩形は、常に、テキストが (0, 0) に描画された場合に覆うピクセルの範囲を少なくとも包含します。

なお、イタリック体のフォントなどによっては、境界矩形が (0, 0) の左側にまで及ぶ場合があり、また、返される矩形の幅はhorizontalAdvance() メソッドが返す値とは異なる場合があることに注意してください。

文字列のアドバンス幅を知りたい場合(一連の文字列を隣り合わせに配置するためなど)は、代わりにhorizontalAdvance() を使用してください。

改行文字は、改行としてではなく、通常の文字として処理されます。

バウンディング矩形の高さは、height() が返す値以上になります。

この関数は Qt 6.3 で導入されました。

horizontalAdvance()、height()、およびQPainter::boundingRect()も参照してください 。

QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const

指定されたtext 内の文字の境界矩形を返します。これは、rect で指定された境界矩形に制限されて描画された場合に、テキストが覆うピクセルの集合です。rect がnullptr オブジェクトへの参照である場合(例えば、デフォルト構築されたQRectF を渡す場合など)、境界矩形はそのサイズに制限されません。

flags 引数は、以下のフラグのビット単位のOR演算の結果です:

Qt::Horizontal 配置のデフォルトはQt::AlignLeft 、垂直方向の配置のデフォルトはQt::AlignTop です。

水平方向または垂直方向の整列フラグが複数設定されている場合、結果の整列は未定義となります。

これらのフラグは、Qt::AlignmentFlag で定義されています。

Qt::TextExpandTabs がflags に設定されている場合、テキスト内のタブ文字は以下の挙動に従って解釈されます。

  • tabArray が null 以外の場合、テキスト内のタブに対するピクセル位置の 0 で終了するシーケンスを指定します。
  • tabStops がゼロ以外の場合、これはタブ間隔(ピクセル単位)として使用されます。

なお、境界矩形は(0, 0)の左側にまで及ぶ場合があります(例:イタリック体のフォントなど)。

改行文字は、改行として処理されます。

実際の文字の高さは異なりますが、「Yes」と「yes」の境界矩形の高さは同じです。

この関数が返す境界矩形は、より単純な boundingRect() 関数によって計算されるものよりも多少大きくなります。この関数は、複数行のテキストを正しく揃えるために必要な、maximum left およびright フォントベアリングを使用します。また、高さの計算には、個々の文字の高さではなく、fontHeight() およびlineSpacing() が使用されます。

これはオーバーロードされた関数です。

horizontalAdvance()、QPainter::boundingRect()、およびQt::Alignmentも参照してください 。

qreal QFontMetricsF::capHeight() const

フォントのキャップハイトを返します。

フォントのキャップハイトとは、ベースラインから大文字の上端までの高さのことです。具体的には、HやIのような平らな大文字の高さを指し、Oのような丸みを帯びた文字や、Aのような先端が尖った文字とは対照的です。後者の2つは、オーバーシュートが発生する可能性があります。

ascent()も参照してください 。

qreal QFontMetricsF::descent() const

フォントのディセントを返します。

ディセントとは、ベースラインから文字が伸びる最下点までの距離のことです(Xでは1ピクセルが加算されるため、これとは異なります)。実際には、特定の文字に対応させるためなどに、このルールに従わないフォントデザイナーもおり、この値が小さすぎる場合(まれですが)もあります。

ascent()も参照してください 。

QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const

文字列 `text ` の幅が `width` よりも広い場合、その文字列の省略版(つまり、「...」が含まれる文字列)を返します。それ以外の場合は、元の文字列を返します。

mode パラメータは、テキストを左側(例: "...tech")、中央(例: "Tr...ch")、または右側(例: "Trol...")で省略するかを指定します。

width は、文字単位ではなくピクセル単位で指定されます。

flags 引数はオプションであり、現在、値としてQt::TextShowMnemonic のみをサポートしています。

省略記号は `layoutdirection` の後に続きます。たとえば、`mode ` が `Qt::ElideLeft` の場合、右から左へのレイアウトではテキストの右側に、`mode ` が `Qt::ElideRight` の場合、テキストの左側に表示されます。

qreal QFontMetricsF::fontDpi() const

フォントのDPIを返します。

qreal QFontMetricsF::height() const

フォントの高さを返します。

これは常にascent() +descent() に等しくなります。

leading() およびlineSpacing()も参照してください 。

[since 6.3] qreal QFontMetricsF::horizontalAdvance(const QString &text, const QTextOption &option) const

option を使用してレイアウトされた `text ` の水平方向の進み量をピクセル単位で返します。

この進み量は、text の後に続く文字を描画するのに適切な距離です。

この関数は Qt 6.3 で導入されました。

boundingRect()も参照してください 。

qreal QFontMetricsF::horizontalAdvance(const QString &text, int length = -1) const

text の最初のlength 文字分の水平進め量をピクセル単位で返します。length が負の値(デフォルト)の場合、文字列全体が使用されます。length が大幅に短い場合でも、text の全長が解析されます。

advance は、text の後に続く文字を描画するのに適切な距離です。

boundingRect()も参照してください 。

qreal QFontMetricsF::horizontalAdvance(QChar ch) const

ベアリング

文字「ch 」の水平進み量をピクセル単位で返します。これは、ch の後に続く文字を描画するのに適切な距離です。

一部のメトリクスは右の図に示されています。中央の暗い長方形は、各文字の論理的な horizontalAdvance() を表しています。外側の薄い長方形は、各文字のleftBearing() およびrightBearing() を表しています。 この特定のフォントでは、「f」のベアリングは両方とも負であるのに対し、「o」のベアリングは両方とも正であることに注意してください。

警告:この関数は 、文字列の処理時に発生するグリフの成形やマークの位置決めを考慮できないため、文字列の途中にアラビア文字や非スペース記号が含まれている場合、誤った結果を生成します。対話型のテキストコントロールを実装する際は、代わりに `QTextLayout ` を使用してください。

これはオーバーロードされた関数です。

boundingRect()も参照してください 。

bool QFontMetricsF::inFont(QChar ch) const

文字 `ch ` がそのフォントで有効な文字である場合は `true ` を返し、そうでない場合は `false` を返します。

bool QFontMetricsF::inFontUcs4(uint ch) const

ch で指定された文字が、UCS-4/UTF-32 でエンコードされた状態で、そのフォントの有効な文字である場合は、true を返します。そうでない場合は、false を返します。

qreal QFontMetricsF::leading() const

フォントの行頭間隔を返します。

これは自然な行間です。

height() およびlineSpacing()も参照してください 。

qreal QFontMetricsF::leftBearing(QChar ch) const

フォント内の文字「ch 」の左方位を返します。

左ベアリングとは、文字の最左端のピクセルから、その文字の論理原点までの右方向への距離のことです。この値は、文字のピクセルが論理原点の左側に伸びている場合、負の値となります。

このメトリックに関する図解については、horizontalAdvance() を参照してください。

rightBearing()、minLeftBearing()、およびhorizontalAdvance()も参照してください 。

qreal QFontMetricsF::lineSpacing() const

あるベースラインから次のベースラインまでの距離を返します。

この値は常に、leading() +height() に等しくなります。

height() およびleading()も参照してください 。

qreal QFontMetricsF::lineWidth() const

フォントのポイントサイズに合わせて調整された、下線および取り消し線の幅を返します。

underlinePos()、overlinePos()、およびstrikeOutPos()も参照してください 。

qreal QFontMetricsF::maxWidth() const

そのフォントの中で最も幅の広い文字の幅を返します。

qreal QFontMetricsF::minLeftBearing() const

そのフォントの最小左方位を返します。

これは、フォント内のすべての文字のうち、最も小さいleftBearing (char)です。

フォントのサイズが大きい場合、この関数の実行が非常に遅くなる可能性があることに注意してください。

minRightBearing() およびleftBearing()も参照してください 。

qreal QFontMetricsF::minRightBearing() const

そのフォントの最小の右ベアリングを返します。

これは、フォント内のすべての文字のうち、最も小さい「rightBearing (char)」です。

フォントのサイズが大きい場合、この関数の実行速度が著しく低下する可能性があることに注意してください。

minLeftBearing() およびrightBearing()も参照してください 。

qreal QFontMetricsF::overlinePos() const

ベースラインから、オーバーラインを描画すべき位置までの距離を返します。

underlinePos()、strikeOutPos()、およびlineWidth()も参照してください 。

qreal QFontMetricsF::rightBearing(QChar ch) const

フォント内の文字「ch 」の右方向のベアリングを返します。

右ベアリングとは、文字の最右端のピクセルから、その次の文字の論理原点までの左方向への距離のことです。この値は、文字のピクセルがhorizontalAdvance()の右側に伸びている場合、負の値となります。

このメトリックに関する図解については、horizontalAdvance() を参照してください。

leftBearing()、minRightBearing()、およびhorizontalAdvance()も参照してください 。

QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const

指定されたtext に含まれる文字のサイズをピクセル単位で返します。

flags 引数は、以下のフラグのビット単位のOR演算の結果です。

これらのフラグは、Qt::TextFlag 列挙型で定義されています。

flags でQt::TextExpandTabs が設定されている場合、テキスト内のタブ文字は以下の挙動に従って解釈されます:

  • tabArray がnullでない場合、テキスト内のタブ位置を示す0で終了するピクセル位置のシーケンスを指定します。
  • tabStops が null 以外の場合、これはタブの間隔(ピクセル単位)として使用されます。

改行文字は、改行として処理されます。

注:実際の文字の高さは異なるものの、「Yes」と「yes」の境界矩形の高さは同じです。

boundingRect()も参照してください 。

qreal QFontMetricsF::strikeOutPos() const

ベースラインから、ストライクアウトラインを描画すべき位置までの距離を返します。

underlinePos()、overlinePos()、およびlineWidth()も参照してください 。

[noexcept] void QFontMetricsF::swap(QFontMetricsF &other)

このフォントメトリクスインスタンスをother と入れ替えます。この操作は非常に高速で、失敗することはありません。

QRectF QFontMetricsF::tightBoundingRect(const QString &text) const

text で指定された文字列内の文字を囲む、最小限の囲み矩形を返します。この囲み矩形は、常に、テキストが (0, 0) に描画された場合に覆うピクセルの集合を少なくとも含みます。

なお、イタリック体のフォントなどによっては、境界矩形が (0, 0) の左側にまで及ぶ場合があり、また、返される矩形の幅はhorizontalAdvance() メソッドが返す値とは異なる場合があることに注意してください。

文字列のアドバンス幅を知りたい場合(一連の文字列を並べてレイアウトする場合など)は、代わりにhorizontalAdvance() を使用してください。

改行文字は、改行としてではなく、通常の文字として処理されます。

horizontalAdvance()、height()、およびboundingRect()も参照してください 。

[since 6.3] QRectF QFontMetricsF::tightBoundingRect(const QString &text, const QTextOption &option) const

text で指定された文字列内の文字を、option を使用して配置した際の、文字列を囲む最小の矩形を返します。この矩形は、常に、テキストが(0, 0)に描画された場合に覆うピクセルの範囲を少なくともカバーします。

なお、イタリック体のフォントなどによっては、境界矩形が (0, 0) の左側に伸びる場合があり、また、返される矩形の幅はhorizontalAdvance() メソッドが返す値とは異なる場合があることに注意してください。

文字列のアドバンス幅を知りたい場合(一連の文字列を隣り合わせに配置するためなど)は、代わりにhorizontalAdvance() を使用してください。

改行文字は、改行としてではなく、通常の文字として処理されます。

この関数は Qt 6.3 で導入されました。

horizontalAdvance()、height()、およびboundingRect()も参照してください 。

qreal QFontMetricsF::underlinePos() const

ベースラインからアンダースコアを描画すべき位置までの距離を返します。

overlinePos()、strikeOutPos()、およびlineWidth()も参照してください 。

qreal QFontMetricsF::xHeight() const

フォントの「x」の高さを返します。これは多くの場合、文字「x」の高さと同じですが、必ずしもそうとは限りません。

bool QFontMetricsF::operator!=(const QFontMetricsF &other) const

フォントのメトリックがother のフォントメトリックと等しくない場合はtrue を返し、等しい場合はfalse を返します。

operator==()も参照してください 。

[noexcept] QFontMetricsF &QFontMetricsF::operator=(QFontMetricsF &&other)

other をこのQFontMetricsF インスタンスに割り当てます。

QFontMetricsF &QFontMetricsF::operator=(const QFontMetrics &other)

このオブジェクトにother を割り当てます。

QFontMetricsF &QFontMetricsF::operator=(const QFontMetricsF &fm)

このフォントメトリクスオブジェクトに、フォントメトリクスfm を割り当てます。

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

フォントメトリクスが `other ` のフォントメトリクスと等しい場合は `true ` を返し、そうでない場合は `false` を返します。

2つのフォントメトリクスは、同じQFont から構築され、かつそれらが構築されたペイントデバイスが互換性があるとみなされる場合に、等しいとみなされます。

© 2026 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.