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()
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 ()があります。

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

QFontQFontInfoQFontDatabaseも参照のこと

メンバ関数ドキュメント

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

font に対する フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト を構築 し ます。

フ ォ ン ト の メ ト リ ッ ク は、font を作成す る ために用い ら れた paintdevice と 互換です。

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

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

QFontMetricsF::QFontMetricsF(const QFontMetrics &fontMetrics)

与えられたfontMetrics オブジ ェ ク ト か ら 、 浮動小数点精度の フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト を構築 し ます。

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

fontpaintdevice に対す る フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト を構築 し ます。

フ ォ ン ト の メ ト リ ッ ク は、 渡 さ れた paintdevice と 互換です。paintdevicenullptr の場合、 メ ト リ ッ ク は画面互換にな り ます。 すなわち、widgetspixmaps でテ キ ス ト を描 く ために フ ォ ン ト を使用す る と き に得 ら れ る メ ト リ ッ ク であ り 、QPictureQPrinter では得られません。

フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト は、 コ ス ト ラ ク タ で渡された フ ォ ン ト の情報を、 それが生成 さ れた時点で保持 し ます。

QFontMetricsF::QFontMetricsF(const QFontMetricsF &fm)

fm のコピーを作成する。

[noexcept] QFontMetricsF::~QFontMetricsF()

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

qreal QFontMetricsF::ascent() const

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

フォントのアセントとは、ベースラインから文字が伸びる最も高い位置までの距離のことです。実際には、フォントデザイナーの中にはこのルールを破る人もいます。たとえば、文字の上に複数のアクセントを置いたり、特定の文字に対応させたりする場合などです。

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

option を用いてレイアウトされた、text で指定された文字列内の文字の外接矩形を返します。外接矩形は常に、テキストが (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 で指定 さ れた外接矩形に拘束 さ れて描画 さ れた と き に、 テ キ ス ト が覆 う ピ ク セルの集合です。rectnullptr オブジ ェ ク ト への参照であ る と き (た と えばデフ ォ ル ト で構築 さ れたQRectF を渡す と き) は、 外接矩形はそのサ イ ズに拘束 さ れません。

flags 引数は,以下のフラグのビット OR です:

Qt::Horizontal alignment のデフォルトは で、 vertical alignment のデフォルトは です。Qt::AlignLeft Qt::AlignTop

水平ア ラ イ メ ン ト ・ 垂直ア ラ イ メ ン ト フ ラ グの う ちのい く つかが設定 さ れてい る と 、 結果のア ラ イ メ ン ト は不定にな り ます。

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

flagsQt::TextExpandTabs が設定 さ れてい る 場合、 テ キ ス ト 内の タ ブキ ャ ラ ク タ の解釈には以下の動作が用い ら れます:

  • tabArray が非 NULL の場合、 テ キ ス ト 内の タ ブに対す る ピ ク セル位置の 0 終端シーケ ン ス を指定 し ます。
  • tabStops が 0 でない と き は、 こ れが タ ブ間隔 と し て用い ら れます (単位は ピ ク セル)。

こ の外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ る こ と に留意 し て く だ さ い。

改行キ ャ ラ ク タ は改行 と し て処理 さ れます。

実際の文字の高 さ は異な る も のの、 "Yes" と "yes" の外接矩形の高 さ は同 じ です。

こ の関数が返す外接矩形は、 よ り 簡単な boundingRect() 関数で算出 さ れた も の よ り も 若干大き く な り ます。こ の関数は、 複数行テ キ ス ト が正 し く 整列す る ために必要な、maximum leftright のフ ォ ン ト ベーシ ョ ン を用います。ま た、 個々の文字の高 さ で はな く fontHeight() ・lineSpacing() を用いて高 さ を算出 し ます。

horizontalAdvance(),QPainter::boundingRect(),Qt::Alignmentも参照

qreal QFontMetricsF::capHeight() const

フォントのキャップの高さを返します。

フォントのキャップハイトとは、ベースラインからの大文字の高さのことです。具体的には、O のような丸い文字や A のような尖った文字とは対照的に、H や I のような平らな大文字の高さです。

ascent()も参照

qreal QFontMetricsF::descent() const

フォントの下降点を返します。

下降は、ベースラインから、文字が伸びる最も低い点までの距離です。(これは、1 ピクセルを加算する X とは異なることに注意してください。) 実際には、フォントデザイナーの中には、特定の文字に対応するためなどにこのルールを破る人もいるので、この値が小さすぎる可能性もあります (まれですが)。

ascent()も参照

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

文字列textwidth よりも幅が広い場合、その文字列の消去バージョン(つまり、"... "を含む文字列)を返す。そうでない場合は、元の文字列を返す。

mode パラメータは、文字列を左側(例えば、"...tech")、中央(例えば、"Tr...ch")、または右側(例えば、"Trol...")のいずれに消去するかを指定する。

width は文字数ではなくピクセル数で指定する。

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

エ リ ド マ ー ク はlayoutdirection に従います。 た と えば、 右書 き レ イ ア ウ ト の場合、modeQt::ElideLeft の と き はテ キ ス ト の右側に、modeQt::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 の全長が分析される。

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

boundingRect()も参照のこと

qreal QFontMetricsF::horizontalAdvance(QChar ch) const

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

Bearings

文字ch の水平方向の進み具合をピクセル単位で返す。これは、ch の後に続く文字を描画するのに適切な距離です。

メ ト リ ッ ク のい く つかを右の画像に示 し ます。中央の暗い長方形は、各文字の論理的な horizontalAdvance() をカバーしています。外側の淡い長方形は、各文字のleftBearing() とrightBearing() をカバーする。この特定のフォントの "f "の方位は両方とも負で、"o "の方位は両方とも正であることに注意。

警告: 警告 : こ の関数は、 ア ラ ビ ア文字のキ ャ ラ ク タ や、 文字列の途中のノンスペーシングマークに対しては不正確な結果を生成し ます。対話型テキストコントロールを実装する場合は、代わりにQTextLayout を使用してください。

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

bool QFontMetricsF::inFont(QChar ch) const

文字ch が フ ォ ン ト 内で有効なキ ャ ラ ク タ であ る な らtrue を返し、 そ う でないならfalse を返す。

bool QFontMetricsF::inFontUcs4(uint ch) const

UCS-4/UTF-32 でエン コ ーデ ィ ン グ さ れたch で与え ら れたキ ャ ラ ク タ が フ ォ ン ト 内で有効なキ ャ ラ ク タ であ る な らtrue を返し、 そ う でないな らfalse を返す。

qreal QFontMetricsF::leading() const

leading関数は、フォントのleadingを返します。

これは自然な行間です。

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 enumで定義されている。

flagsQt::TextExpandTabs が設定されている場合、 テキ ス ト 内の タ ブキ ャ ラ ク タ の解釈には以下の動作が用い ら れます:

  • tabArray が NULL でない と き は、 テ キ ス ト 内の タ ブに対す る ピ ク セル位置の 0 終端シーケ ン ス を指定 し ます。
  • tabStops が 0 でない と き は、 こ れが タ ブ間隔 と し て用い ら れます (単位は ピ ク セル)。

改行キ ャ ラ ク タ は改行 と し て処理 さ れます。

注意:実際の文字の高さは異なるが、"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

option を用いてレイアウトされた、text で指定された文字列内の文字を囲む、きつい外接矩形を返します。外接矩形は常に、テキストが (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)

Move-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 を返します。

二つのフ ォ ン ト メ ト リ ッ ク が等 し い と 見な さ れ る のは、 それ ら が同 じQFont か ら 作成 さ れてお り 、 かつ、 それ ら が作成 さ れたペ イ ン ト デバ イ ス が互換性を持つ と 見な さ れ る 場合です。

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