QFontMetricsF Class

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

Header: #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

Distance関数は、ある基準線から次の基準線までの距離を返します。

この値は、常に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

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)

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

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 か ら 作成 さ れてお り 、 そ し て、 それ ら が作成 さ れたペ イ ン ト デバ イ ス が互換性を持っ てい る と 見な さ れ る 場合です。

このドキュメントに含まれるコントリビューションの著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。