QGlyphRun Class
QGlyphRun クラスは、フォント内の内部グリフへの直接アクセスを提供します。詳細...
| ヘッダー: | #include <QGlyphRun> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QGlyphRunは「暗黙的に共有されるクラス」の一部です。
パブリック型
| enum | GlyphRunFlag { Overline, Underline, StrikeOut, RightToLeft, SplitLigature } |
| flags | GlyphRunFlags |
パブリック関数
| QGlyphRun() | |
| QGlyphRun(const QGlyphRun &other) | |
| ~QGlyphRun() | |
| QRectF | boundingRect() const |
| void | clear() |
| QGlyphRun::GlyphRunFlags | flags() const |
| QList<quint32> | glyphIndexes() const |
| bool | isEmpty() const |
| bool | isRightToLeft() const |
| bool | overline() const |
| QList<QPointF> | positions() const |
| QRawFont | rawFont() const |
| void | setBoundingRect(const QRectF &boundingRect) |
| void | setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true) |
| void | setFlags(QGlyphRun::GlyphRunFlags flags) |
| void | setGlyphIndexes(const QList<quint32> &glyphIndexes) |
| void | setOverline(bool overline) |
| void | setPositions(const QList<QPointF> &positions) |
| void | setRawData(const quint32 *glyphIndexArray, const QPointF *glyphPositionArray, int size) |
| void | setRawFont(const QRawFont &rawFont) |
| void | setRightToLeft(bool rightToLeft) |
(since 6.5) void | setSourceString(const QString &sourceString) |
| void | setStrikeOut(bool strikeOut) |
(since 6.5) void | setStringIndexes(const QList<qsizetype> &stringIndexes) |
| void | setUnderline(bool underline) |
(since 6.5) QString | sourceString() const |
| bool | strikeOut() const |
(since 6.5) QList<qsizetype> | stringIndexes() const |
| void | swap(QGlyphRun &other) |
| bool | underline() const |
| bool | operator!=(const QGlyphRun &other) const |
| QGlyphRun & | operator=(const QGlyphRun &other) |
| bool | operator==(const QGlyphRun &other) const |
詳細な説明
Qt が Unicode でエンコードされたテキスト文字列を表示する場合、まず、1 つ以上のフォントに基づいて、Unicode ポイントをグリフインデックスのリストと位置のリストに変換します。 この場合、テキストの Unicode 表現と `QFont ` オブジェクトは、画面上にテキストを表示する際に実際に何が起こっているかの詳細を隠蔽する、便利な抽象化として機能します。 たとえば、テキストが実際に画面に表示される時点で、ユーザーが指定したフォントに加えて、別のフォントのセットによって表現される場合があります。これは、当初選択したフォントが、テキストに含まれるすべての文字体系に対応していなかった場合などです。
状況によっては、アプリケーション開発者として、特定のフォントのどのグリフを画面に描画するかを、より低レベルで制御できると便利な場合があります。 これは、たとえば、Qt と併せて外部フォントエンジンやテキストシェイパーを使用するアプリケーションの場合などが該当します。QGlyphRun は、テキストを画面に表示するために必要な生データへのインターフェースを提供します。これには、グリフインデックスのリスト、各グリフの位置、およびフォントが含まれます。
選択したフォントに、指定されたグリフインデックスが実際に含まれていることを確認するのは、ユーザーの責任です。
QTextLayout::glyphRuns() またはQTextFragment::glyphRuns() を使用して、Unicode エンコードされたテキストを QGlyphRun オブジェクトのリストに変換し、QPainter::drawGlyphRun() を使用してグリフを描画することができます。
メンバ型のドキュメント
enum QGlyphRun::GlyphRunFlag
flags QGlyphRun::GlyphRunFlags
この列挙型は、視覚的なレイアウトにおいて、グリフの連続の表示方法や動作を変更するフラグを表します。グリフの連続を生成するレイアウトは、レイアウトのユーザーが意図した通りにテキストを表示するために必要な情報を保持するため、関連する内部データに基づいてこれらのフラグを設定することができます。
| 定数 | 値 | 説明 |
|---|---|---|
QGlyphRun::Overline | 0x01 | グリフをオーバーラインとともに表示することを示します。 |
QGlyphRun::Underline | 0x02 | グリフをアンダーラインとともに表示することを示します。 |
QGlyphRun::StrikeOut | 0x04 | グリフを視覚的に取り消し線付きで表示することを示します。 |
QGlyphRun::RightToLeft | 0x08 | グリフの順序が右から左であることを示します。これは、インラインテキストオブジェクトなど、グリフランに対して相対的な位置にある他の画面要素の位置に影響を与える可能性があります。 |
QGlyphRun::SplitLigature | 0x10 | グリフランが合字グリフを分割していることを示します。これは、合字グリフがランに含まれているが、それによって表される文字はその合字の一部にのみ対応していることを意味します。 この場合、グリフランの `boundingRect()` 関数を使用して、そのグリフランによって表される文字に対応するグリフがカバーする領域を取得できます。 グリフを可視化する際は、リガチャーの対応する部分のみが描画されるように、この境界矩形に合わせてクリッピングを行うよう注意する必要があります。特に、特定の文字範囲のQTextLayout からグリフランを取得する場合、例えばQTextLayout の選択領域を取得する場合などに、この状況が発生する可能性があります。 |
GlyphRunFlags 型は、QFlags<GlyphRunFlag> の typedef です。これは、GlyphRunFlag 値の論理和(OR)の組み合わせを格納します。
メンバ関数のドキュメント
QGlyphRun::QGlyphRun()
空の QGlyphRun オブジェクトを作成します。
QGlyphRun::QGlyphRun(const QGlyphRun &other)
other のコピーであるQGlyphRunオブジェクトを作成します。
[noexcept] QGlyphRun::~QGlyphRun()
QGlyphRun を破棄します。
QRectF QGlyphRun::boundingRect() const
このQGlyphRun に含まれるすべてのグリフを囲む最小の矩形を返します。setBoundingRect() を使用して境界矩形が設定されている場合は、その境界矩形が返されます。そうでない場合は、グリフラン内のグリフのフォントメトリクスに基づいて境界矩形が計算されます。
setBoundingRect()も参照してください 。
void QGlyphRun::clear()
QGlyphRun オブジェクト内のすべてのデータを消去します。
QGlyphRun::GlyphRunFlags QGlyphRun::flags() const
このQGlyphRun に対して設定されているフラグを返します。
setFlags() およびsetFlag()も参照してください 。
QList<quint32> QGlyphRun::glyphIndexes() const
この `QGlyphRun ` オブジェクトのグリフインデックスを返します。
setGlyphIndexes() およびsetPositions()も参照してください 。
bool QGlyphRun::isEmpty() const
QGlyphRun にグリフが含まれていない場合、true を返します。
bool QGlyphRun::isRightToLeft() const
この `QGlyphRun ` に、右から左へ描画されるグリフが含まれている場合、true を返します。
setRightToLeft() およびflags()も参照してください 。
bool QGlyphRun::overline() const
このQGlyphRun に上線装飾を適用すべきかどうかを判定し、true を返します。
setOverline() およびflags()も参照してください 。
QList<QPointF> QGlyphRun::positions() const
このグリフインデックスセットに含まれる各グリフについて、ベースラインの端の位置を返します。
setPositions()も参照してください 。
QRawFont QGlyphRun::rawFont() const
このQGlyphRun オブジェクトで選択されているフォントを返します。
setRawFont()も参照してください 。
void QGlyphRun::setBoundingRect(const QRectF &boundingRect)
このQGlyphRun 内のグリフの境界矩形をboundingRect に設定します。この矩形は、boundingRect()によって返されます。ただし、この値がnullの場合は、代わりにグリフ・ラン内のグリフの境界矩形が返されます。
注: テキストシェーピングを実装している場合を除き 、この関数を使用する必要はありません。この関数は、QGlyphRun が、その中に含まれるグリフの領域よりも小さい領域を表すべき場合にのみ使用されます。 これは、例えば、QTextLayout::glyphRuns() を呼び出してグリフランを取得し、指定された範囲が合字(2 つ以上の文字が 1 つのグリフに結合されたもの)の一部のみを含んでいる場合に発生する可能性があります。 このような場合、バウンディング矩形には、リガチュアを構成する文字の平均幅の計算に基づいて、リガチュア・グリフの適切な部分のみを含める必要があります。
このようなケース(例:本文の色とは異なる色で描画されるべき選択範囲など)に対応するためには、リガチュア・グリフ全体が描画されないように、boundingRect() から返される矩形に描画メカニズムをクリップする必要があります。
boundingRect()も参照してください 。
void QGlyphRun::setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true)
enabled が true の場合、flag は有効になります。そうでない場合は無効になります。
flags() およびsetFlags()も参照してください 。
void QGlyphRun::setFlags(QGlyphRun::GlyphRunFlags flags)
このQGlyphRun のフラグをflags に設定します。
setFlag() およびflags()も参照してください 。
void QGlyphRun::setGlyphIndexes(const QList<quint32> &glyphIndexes)
このQGlyphRun オブジェクトのグリフインデックスをglyphIndexes に設定します。グリフインデックスは、選択されたフォントに対して有効なものでなければなりません。
glyphIndexes()も参照してください 。
void QGlyphRun::setOverline(bool overline)
overline が真の場合、このQGlyphRun には上線装飾を付けて描画すべきであることを示します。そうでない場合、QGlyphRun には上線装飾を付けずに描画すべきです。
overline()、setFlag()、およびsetFlags()も参照してください 。
void QGlyphRun::setPositions(const QList<QPointF> &positions)
このグリフインデックスセットに含まれる各グリフのベースラインの端の位置を、positions に設定します。
positions()も参照してください 。
void QGlyphRun::setRawData(const quint32 *glyphIndexArray, const QPointF *glyphPositionArray, int size)
このQGlyphRun のグリフインデックスと位置を、配列glyphIndexArray およびglyphPositionArray の最初のsize 個の要素を使用するように設定します。データはコピーされません。呼び出し元は、このQGlyphRun およびそのコピーが存在する限り、これらの配列が削除されないことを保証しなければなりません。
setGlyphIndexes() およびsetPositions()も参照してください 。
void QGlyphRun::setRawFont(const QRawFont &rawFont)
グリフインデックスの検索に使用するフォントを、指定された「rawFont 」に設定します。
rawFont() およびsetGlyphIndexes()も参照してください 。
void QGlyphRun::setRightToLeft(bool rightToLeft)
このQGlyphRun には、rightToLeft がtrueの場合、右から左の順序で並べるべきグリフが含まれていることを示します。それ以外の場合は、グリフの順序は左から右であるとみなされます。
isRightToLeft()、setFlag()、およびsetFlags()も参照してください 。
[since 6.5] void QGlyphRun::setSourceString(const QString &sourceString)
グリフランに対応する文字列をsourceString に設定します。これが設定されている場合、stringIndexes()が返すインデックスは、この文字列内のインデックスである必要があります。
この関数は Qt 6.5 で導入されました。
sourceString() およびstringIndexes()も参照してください 。
void QGlyphRun::setStrikeOut(bool strikeOut)
strikeOut が真の場合、このQGlyphRun には取り消し線装飾を適用すべきであることを示します。それ以外の場合は、QGlyphRun には取り消し線装飾を適用せずに描画すべきです。
strikeOut()、setFlag()、およびsetFlags()も参照してください 。
[since 6.5] void QGlyphRun::setStringIndexes(const QList<qsizetype> &stringIndexes)
グリフインデックスに対応する文字列インデックスのリストをstringIndexes
このリストの規則に関する詳細については、stringIndexes() を参照してください。
この関数は Qt 6.5 で導入されました。
stringIndexes() およびsourceString()も参照してください 。
void QGlyphRun::setUnderline(bool underline)
underline がtrueの場合、このQGlyphRun には下線装飾を付けて描画すべきであることを示します。そうでない場合、QGlyphRun には下線装飾を付けずに描画すべきです。
underline()、setFlag()、およびsetFlags()も参照してください 。
[since 6.5] QString QGlyphRun::sourceString() const
グリフランが文字列から作成され、かつその文字列がレイアウトから要求された場合、そのグリフランに対応する文字列を返します。
この関数は Qt 6.5 で導入されました。
setSourceString()、stringIndexes()、およびQTextLayout::glyphRuns()も参照してください 。
bool QGlyphRun::strikeOut() const
このQGlyphRun に打ち消し線装飾を適用すべきかどうかを判定し、true を返します。
setStrikeOut() およびflags()も参照してください 。
[since 6.5] QList<qsizetype> QGlyphRun::stringIndexes() const
グリフランが文字列から構築され、レイアウトから文字列インデックスの取得が要求された場合、各グリフインデックスに対応する文字列インデックスを返します。この場合、返されるベクトルの長さは、glyphIndexes() の長さと同じになります。それ以外の場合は、空になります。
1つのグリフがソース文字列内の複数の文字に対応する場合があるため、文字列インデックスのリストには隙間が生じる可能性があります。例えば、文字列「first」が、文字ペア「fi」の合字を含むフォントによって処理された場合、この5文字の文字列は4つのグリフのみで構成されるグリフランを生成します。 この場合、グリフインデックスは (1, 2, 3, 4) (4つの任意のグリフインデックス)となる可能性がありますが、文字列インデックスは (0, 2, 3, 4) となります。 グリフは文字列の論理的な順序で並んでいるため、このケースでは最初のグリフが文字 0 と 1 にまたがっていることが暗黙的に示されます。
逆に、1 つの文字が複数のグリフを生成する場合もあり、その場合は文字列インデックスのリストに重複するエントリが存在することになります。
文字列インデックスは文字列に対応しており、必要に応じて `sourceString()` を通じて取得できます。
この関数は Qt 6.5 で導入されました。
setStringIndexes()、sourceString()、およびQTextLayout::glyphRuns()も参照してください 。
[noexcept] void QGlyphRun::swap(QGlyphRun &other)
このグリフのランインスタンスを「other 」と入れ替えます。この操作は非常に高速で、失敗することはありません。
bool QGlyphRun::underline() const
この `QGlyphRun ` に下線装飾を適用すべきかどうかを判定し、true を返します。
setUnderline() およびflags()も参照してください 。
bool QGlyphRun::operator!=(const QGlyphRun &other) const
other と、このQGlyphRun オブジェクトを比較します。グリフインデックスのリスト、位置のリスト、またはフォントのいずれかが異なる場合はtrue を返し、それ以外の場合はfalse を返します。
QGlyphRun &QGlyphRun::operator=(const QGlyphRun &other)
このQGlyphRun オブジェクトにother を割り当てます。
bool QGlyphRun::operator==(const QGlyphRun &other) const
other と、このQGlyphRun オブジェクトを比較します。グリフインデックスのリスト、位置のリスト、およびフォントがすべて等しい場合はtrue を返し、そうでない場合はfalse を返します。
© 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.