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 でエンコードされたテキスト文字列を表示するとき、まず Unicode ポイントをグリフインデックスのリストと 1 つ以上のフォントに基づく位置のリストに変換します。この場合、テキストの Unicode 表現とQFont オブジェクトは、テキストを画面に表示する際に実際に行われることの詳細を隠す便利な抽象として機能します。た と えば、 テ キ ス ト が実際に画面に表示 さ れ る ま でに、 ユーザーが指定 し た フ ォ ン ト 以外の フ ォ ン ト セ ッ ト で表 さ れてい る こ と があ り え ます。
特定の状況下では、アプリケーション開発者として、特定のフォント内のどのグリフが画面に描画されるかをより低レベルで制御することが有用な場合があります。これは例えば、外部のフォントエンジンとテキストシェイパーをQtと共に使用するアプリケーションの場合です。QGlyphRunは、テキストを画面に表示するために必要な生のデータへのインタフェースを提供します。これはグリフインデックスのリスト、各グリフの位置、フォントを含んでいます。
選択されたフォントが提供されたグリフインデックスを実際に含んでいることを確認するのはユーザーの責任です。
QTextLayout::glyphRuns() またはQTextFragment::glyphRuns() を使えば、ユニコードでエンコードされたテキストを 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() およびsetFlag()も参照 。
QList<quint32> QGlyphRun::glyphIndexes() const
このQGlyphRun オブジェクトのグリフインデックスを返す。
setGlyphIndexes() およびsetPositions()も参照 。
bool QGlyphRun::isEmpty() const
QGlyphRun にグ リ フ が 1 つ も ない と き は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 に設定 し ます。この矩形は、それが null でない限りboundingRect() によって返され、その場合はグリフラン内のグリフの外接矩形が代わりに返されます。
注 : テ キ ス ト シ ェーピ ン グ を実装 し ていない限 り 、 こ の関数を使 う 必要はあ り ません。こ れは特に、QGlyphRun がそれを含むグ リ フの領域 よ り も 小 さ い領域を表す必要があ る と き に用い ら れます。こ れは、 た と えばQTextLayout::glyphRuns () を呼び出 し てグ リ フ ラ ン を取得 し た と き に、 指定 さ れた範囲が合字 (2 個ない し 複数のキ ャ ラ ク タ が 1 個のグ リ フ に結合 さ れた も の) の一部分のみを含んでい る と き に起こ り え ます。
こ の よ う な場合 (例 と し ては、 テ キ ス ト 本体の色 と は異な る 色で描かれるべき選択部分) に対応す る ためには、boundingRect () か ら 返 さ れ る 矩形に描画機構を ク リ ッ プ し て、 合字グ リ フ全体を描画 し ない よ う にす る 必要があ り ます。
boundingRect()も参照してください 。
void QGlyphRun::setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true)
もしenabled がtrueなら、flag が有効になり、そうでなければ無効になる。
void QGlyphRun::setFlags(QGlyphRun::GlyphRunFlags flags)
このQGlyphRun のフラグを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)
rightToLeft が true の と き は、 こ のQGlyphRun がグリフを右から左へ並べる必要があ る こ と を示す。そうでない場合はグリフの順序は左から右とみなされる。
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 が true の場合、この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
を返します。
© 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.