QGlyphRun Class
QGlyphRun クラスは、フォントの内部グリフへの直接アクセスを提供します。詳細...
Header: | #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 にグリフがない場合は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 が true ならば、この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 が真の場合、この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)
other を こ のQGlyphRun オブジ ェ ク ト に割 り 当て ます。
bool QGlyphRun::operator==(const QGlyphRun &other) const
other をこのQGlyphRun オブジェクトと比較します。グリフインデックスのリスト、位置のリスト、フォントがすべて等しい場合はtrue
を返し、そうでない場合はfalse
を返します。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。