QFontMetrics Class

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

Header: #include <QFontMetrics>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

注意:このクラスの関数はすべてリエントラントです。

パブリック関数

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

詳細説明

QFontMetrics 関数は、指定されたフォントの文字と文字列のサイズを計算します。QFontMetrics オブジェクトを作成する方法は 3 つあります:

  1. QFontMetrics コンストラクタをQFont で呼び出すと、スクリーン互換フォントのフォント・メトリクス・オブジェクトが作成されます。フォントを後で変更しても、フォント・メトリクス・オブジェクトは更新されません。

    (注: プリンタ・フォントを使用した場合、返される値は不正確かもしれません。プリンタ・フォントは常にアクセスできるとは限らないので、プリンタ・フォントが提供された場合は、最も近いスクリーン・フォントが使用されます)。

  2. QWidget::fontMetrics() は、ウィジェットのフォントのフォント・メトリクスを返します。これはQFontMetrics(widget->font())と同等です。ウィジェットのフォントが後で変更されても、フォント・メトリクス・オブジェクトは更新されません
  3. QPainter::fontMetrics() は、ペインターの現在のフォントのフォント・メトリクスを返します。ペインターのフォントが後で変更されても、フォント・メトリクス・オブジェクトは更新されません

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

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

また、フォント内のグリフの集合を操作する関数もいくつかあります:minLeftBearing(),minRightBearing(),maxWidth()。これらは必然的に遅くなるので、できれば避けることをお勧めします。

各文字について、horizontalAdvance(),leftBearing(),rightBearing() を取得し、inFont() を使ってそれがフォント内にあるかどうかを調べることができます。また、その文字を文字列として扱い、文字列関数を使用することもできます。

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

注意: 先行幅は、実際にレンダリングされるテキストの幅とは異なる場合があります。これは、文字列の原点から文字を追加する位置までの距離を指します。テキストにははみ出しがあったり(たとえば斜体フォントの場合)、文字と文字の間にパディングがあったりするため、進み幅はテキストの実際のレンダリングよりも小さくなったり大きくなったりします。これをテキストの右寄せと呼びます。

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

QFontQFontInfoQFontDatabaseも参照

メンバ関数 ドキュメント

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

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

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

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

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

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

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

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

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

QFontMetrics::QFontMetrics(const QFontMetrics &fm)

fm のコピーを構築します。

[noexcept] QFontMetrics::~QFontMetrics()

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

int QFontMetrics::ascent() const

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

フォントのアセントは、ベースラインから、文字が伸びる最も高い位置までの距離です。実際には、フォントデザイナーの中には、文字の上に複数のアクセント記号を置く場合や、特定の文字に対応するためなど、このルールを破る人もいるので、この値が小さすぎる可能性もあります(まれですが)。

descent()も参照

int QFontMetrics::averageCharWidth() const

フォント内のグリフの平均幅を返します。

QRect QFontMetrics::boundingRect(QChar ch) const

文字ch を座標系の原点に描画した場合にインクで覆われる矩形を返します。

外接矩形は (0, 0) よ り も 左へ広が る こ と があ り (た と えば斜体フ ォ ン ト の場合)、 テ キ ス ト 出力は外接矩形内のすべてのピ ク セルを覆 う こ と があ る こ と に留意 し て く だ さ い。空白キ ャ ラ ク タ の場合、 矩形は通常空にな り ます。

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

警告 返される矩形の幅は、文字の事前幅ではありません。代わりに boundingRect(constQString &) またはhorizontalAdvance() を使用してください。

horizontalAdvance()も参照

QRect QFontMetrics::boundingRect(const QString &text) const

text で指定された文字列内の文字の外接矩形を返します。外接矩形は,常に,少なくとも,テキストが (0, 0) で描画された場合にカバーするピクセルの集合をカバーします。

外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 返 さ れ る 矩形の幅は、horizontalAdvance() メ ソ ッ ド が返す幅 と は異な る 可能性があ る こ と に留意 し て く だ さ い。

文字列の事前幅を知りたい場合 (文字列を横に並べたい場合)、代わりにhorizontalAdvance() を使用します。

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

外接矩形の高さは、少なくともheight() が返す値と同じ大きさになります。

horizontalAdvance()、height()、QPainter::boundingRect()、tightBoundingRect()も参照

[since 6.3] QRect QFontMetrics::boundingRect(const QString &text, const QTextOption &option) const

option を用いて、text で指定された文字列の文字の外接矩形を返します。外接矩形は、常に、テキストが (0, 0) で描画された場合にカバーすることになるピクセルの集合を少なくともカバーします。

外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 返 さ れ る 矩形の幅は、horizontalAdvance() メ ソ ッ ド が返す幅 と は異な る 可能性があ る こ と に留意 し て く だ さ い。

文字列の事前幅を知りたい場合 (文字列を横に並べたい場合)、代わりにhorizontalAdvance() を使用します。

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

外接矩形の高さは、少なくともheight() が返す値と同じ大きさになります。

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

horizontalAdvance(),height(),QPainter::boundingRect(),tightBoundingRect()も参照してください

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

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

text で指定された文字列の文字の外接矩形を返します。これは、(0, 0) で描画された場合にテキストがカバーするピクセルの集合です。描画、 ひいては外接矩形は、 矩形rect に拘束 さ れます。

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

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

水平アライメントフラグまたは垂直アライメントフラグのいくつかが設定されている場合、結果のアライメントは不定です。

Qt::TextExpandTabsflags で設定 さ れてい る 場合 :tabArray が非 NULL の と き は、 タ ブに対す る ピ ク セル位置の 0 終端シーケ ン ス を指定 し ます。 そ う でない と き は、tabStops が非ゼ ロ の と き は、 タ ブ間隔 (ピ ク セル単位) と し て用い ら れます。

こ の外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 テ キ ス ト 出力がその外接矩形内のすべてのピ ク セルを覆 う こ と があ る こ と に留意 し て く だ さ い。

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

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

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

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

QRect QFontMetrics::boundingRect(int x, int y, int width, int height, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const

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

与えられたtext の外接矩形を、x およびy 座標、width およびheight で指定された矩形内に返します。

Qt::TextExpandTabsflags で設定 さ れてお り 、 かつtabArray が NULL でない と き は、 タ ブに対す る ピ ク セル位置の 0 終端シーケ ン ス を指定 し ます。 そ う でない と き は、tabStops が 0 でない と き は、 タ ブ間隔 (ピ ク セル単位) と し て用い ら れます。

int QFontMetrics::capHeight() const

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

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

ascent()も参照

int QFontMetrics::descent() const

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

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

ascent()も参照

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

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

mode パラメーターは、テキストを左側(例:"...tech")、中央(例:"Tr...ch")、右側(例:"Trol...")のいずれで消去するかを指定する。

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

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

エ リ ド マ ー ク はlayoutdirection に従います。 た と えば、 右書 き レ イ ア ウ ト の場合、modeQt::ElideLeft の と き はテ キ ス ト の右側に、modeQt::ElideRight の と き はテ キ ス ト の左側に位置 し ます。

qreal QFontMetrics::fontDpi() const

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

int QFontMetrics::height() const

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

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

leading() およびlineSpacing()も参照

[since 6.3] int QFontMetrics::horizontalAdvance(const QString &text, const QTextOption &option) const

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

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

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

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

int QFontMetrics::horizontalAdvance(const QString &text, int len = -1) const

text の最初のlen 文字の水平方向の進み量をピクセル単位で返します。len が負(デフォルト)の場合、文字列全体が使用されます。len がかなり短い場合でも、text の全長が解析される。

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

boundingRect()も参照のこと

int QFontMetrics::horizontalAdvance(QChar ch) const

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

Bearings

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

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

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

boundingRect()も参照

bool QFontMetrics::inFont(QChar ch) const

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

bool QFontMetrics::inFontUcs4(uint ucs4) const

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

int QFontMetrics::leading() const

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

こ れは自然な行間間隔です。

height() およびlineSpacing()も参照

int QFontMetrics::leftBearing(QChar ch) const

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

左方位は、文字の論理的な原点から、その文字の左端のピクセルの右方向への距離です。この値は、文字のピクセルが論理原点より左側に広がっている場合は負になります。

このメトリックのグラフィカルな説明についてはhorizontalAdvance() を参照のこと。

rightBearing()、minLeftBearing()、horizontalAdvance()も参照

int QFontMetrics::lineSpacing() const

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

この値は、常にleading()+height() に等しい。

height() およびleading()も参照

int QFontMetrics::lineWidth() const

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

underlinePos()、overlinePos() およびstrikeOutPos() も参照

int QFontMetrics::maxWidth() const

文字幅関数は、フォント内で最も幅の広い文字の幅を返します。

int QFontMetrics::minLeftBearing() const

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

こ れは、 フ ォ ン ト 内のすべてのキ ャ ラ ク タ の中で最小のleftBearing (char)。

フ ォ ン ト が大 き い と き は、 こ の関数は非常に低速にな る 可能性があ る こ と に留意 し て く だ さ い。

minRightBearing() およびleftBearing()も参照

int QFontMetrics::minRightBearing() const

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

こ れは、 フ ォ ン ト 内のすべてのキ ャ ラ ク タ の中で最小のrightBearing (char)。

フ ォ ン ト が大 き い と き は、 こ の関数は非常に遅 く な る こ と があ り ますので注意 し て く だ さ い。

minLeftBearing() およびrightBearing()も参照

int QFontMetrics::overlinePos() const

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

underlinePos()、strikeOutPos() およびlineWidth()も参照

int QFontMetrics::rightBearing(QChar ch) const

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

右方位は、後続の文字の論理原点から、その文字の最右端のピクセルの左方向の距離です。この値は、文字のピクセルがその文字のhorizontalAdvance() の右側に広がっている場合は負になります。

このメトリックのグラフィカルな説明についてはhorizontalAdvance() を参照のこと。

leftBearing()、minRightBearing()、horizontalAdvance()も参照

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

text のピクセル単位のサイズを返す。

flags 引数は、以下のフラグのビット OR である:

Qt::TextExpandTabsflags で設定されている場合:tabArray が NULL でない場合、0 終端のタブ用ピクセル位置シーケンスを指定する。そうでない場合、tabStops が 0 でない場合、タブ間隔(ピクセル単位)として使用される。

改行文字は改行文字として処理される。

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

boundingRect()も参照

int QFontMetrics::strikeOutPos() const

基準線から、取り消し線を引くべき位置までの距離を返す。

underlinePos()、overlinePos()、lineWidth() も参照

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

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

QRect QFontMetrics::tightBoundingRect(const QString &text) const

text で指定 し た文字列内のキ ャ ラ ク タ の回 り に厳 し い外接矩形を返 し ます。外接矩形は常に、 テ キ ス ト が (0, 0) で描かれた と き に覆われ る ピ ク セルの集合を少な く と も カバー し ます。

外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 返 さ れ る 矩形の幅は、horizontalAdvance() メ ソ ッ ド が返す幅 と は異な る 可能性があ る こ と に留意 し て く だ さ い。

文字列の事前幅を知りたい場合 (文字列を横に並べたい場合)、代わりにhorizontalAdvance() を使用します。

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

horizontalAdvance()、height()、boundingRect()も参照

[since 6.3] QRect QFontMetrics::tightBoundingRect(const QString &text, const QTextOption &option) const

text で指定された文字列内の文字を、option を用いてレイアウトした、タイトな外接矩形を返す。外接矩形は,常に,少なくとも,テキストが (0, 0) で描画された場合にカバーされるピクセルの集合をカバーします。

外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 返 さ れ る 矩形の幅は、horizontalAdvance() メ ソ ッ ド が返す幅 と は異な る 可能性があ る こ と に留意 し て く だ さ い。

文字列の事前幅を知りたい場合 (文字列を横に並べたい場合)、代わりにhorizontalAdvance() を使用します。

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

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

horizontalAdvance(),height(),boundingRect()も参照してください

int QFontMetrics::underlinePos() const

アンダースコアを描画する基準線からの距離を返します。

overlinePos(),strikeOutPos(),lineWidth()も参照

int QFontMetrics::xHeight() const

フォントの 'x' の高さを返します。これは、文字 'x' の高さと同じであることが多いが、必ずしも同じとは限らない。

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

other が こ のオブジ ェ ク ト と 等 し く なければtrue を返し、 そ う でなければfalse を返す。

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

operator==()も参照

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

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

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

フ ォ ン ト の メ ト リ ッ ク をfm に割 り 当てます。

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

other が こ のオブジ ェ ク ト と 等 し ければtrue を返し、 そ う でなければfalse を返します。

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

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

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