QGlyphRun Class
Die Klasse QGlyphRun bietet direkten Zugriff auf die internen Glyphen eines Fonts. Mehr...
Kopfzeile: | #include <QGlyphRun> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QGlyphRun ist Teil von Implicitly Shared Classes.
Öffentliche Typen
enum | GlyphRunFlag { Overline, Underline, StrikeOut, RightToLeft, SplitLigature } |
flags | GlyphRunFlags |
Öffentliche Funktionen
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 |
Detaillierte Beschreibung
Wenn Qt einen in Unicode kodierten Text anzeigt, konvertiert es zunächst die Unicode-Punkte in eine Liste von Glyph-Indizes und eine Liste von Positionen, die auf einem oder mehreren Fonts basieren. Die Unicode-Darstellung des Textes und das QFont -Objekt dienen in diesem Fall als bequeme Abstraktion, die die Details des tatsächlichen Vorgangs bei der Anzeige des Textes auf dem Bildschirm verbirgt. Zum Beispiel kann der Text, wenn er tatsächlich auf dem Bildschirm erscheint, durch eine andere als die vom Benutzer angegebene Schriftart dargestellt werden, z. B. wenn die ursprünglich gewählte Schriftart nicht alle im Text enthaltenen Schriftsysteme unterstützt.
Unter bestimmten Umständen kann es für den Anwendungsentwickler nützlich sein, mehr Kontrolle darüber zu haben, welche Glyphen in einer bestimmten Schriftart auf dem Bildschirm dargestellt werden. Dies könnte zum Beispiel in Anwendungen der Fall sein, die eine externe Font-Engine und Textformer zusammen mit Qt verwenden. QGlyphRun bietet eine Schnittstelle zu den Rohdaten, die benötigt werden, um Text auf den Bildschirm zu bringen. Es enthält eine Liste von Glyphen-Indizes, eine Position für jede Glyphe und eine Schriftart.
Es liegt in der Verantwortung des Benutzers, sicherzustellen, dass die ausgewählte Schriftart tatsächlich die angegebenen Glyphenindizes enthält.
QTextLayout::glyphRuns() oder QTextFragment::glyphRuns() können verwendet werden, um unicode-kodierten Text in eine Liste von QGlyphRun-Objekten zu konvertieren, und QPainter::drawGlyphRun() kann verwendet werden, um die Glyphen zu zeichnen.
Hinweis: Bitte beachten Sie, dass QRawFont als lokal für den Thread betrachtet wird, in dem es erstellt wird. Dies wiederum bedeutet, dass ein neues QRawFont erstellt und auf dem QGlyphRun gesetzt werden muss, wenn es auf einen anderen Thread verschoben wird. Wenn der QGlyphRun eine Referenz auf ein QRawFont aus einem anderen Thread als dem aktuellen enthält, ist es nicht möglich, die Glyphen mit einem QPainter zu zeichnen, da das QRawFont in diesem Fall als ungültig und unzugänglich gilt.
Dokumentation der Mitgliedstypen
enum QGlyphRun::GlyphRunFlag
flags QGlyphRun::GlyphRunFlags
Diese Aufzählung beschreibt Flags, die die Art und Weise verändern, wie der Glyphenlauf in einem visuellen Layout dargestellt wird oder sich verhält. Das Layout, das die Glyphenläufe erzeugt, kann diese Flags auf der Grundlage relevanter interner Daten setzen, um die Informationen zu erhalten, die für die vom Benutzer des Layouts beabsichtigte Darstellung des Textes erforderlich sind.
Konstante | Wert | Beschreibung |
---|---|---|
QGlyphRun::Overline | 0x01 | Zeigt an, dass die Glyphen zusammen mit einer Überlinie dargestellt werden sollen. |
QGlyphRun::Underline | 0x02 | Zeigt an, dass die Glyphen zusammen mit einer Unterstreichung dargestellt werden sollen. |
QGlyphRun::StrikeOut | 0x04 | Zeigt an, dass die Glyphen visuell durchgestrichen werden sollen. |
QGlyphRun::RightToLeft | 0x08 | Zeigt an, dass die Glyphen von rechts nach links angeordnet sind. Dies kann sich auf die Positionierung anderer Bildschirmelemente auswirken, die sich auf den Glyphenverlauf beziehen, wie z. B. ein Inline-Textobjekt. |
QGlyphRun::SplitLigature | 0x10 | Zeigt an, dass der Glyphenlauf eine Ligaturglyphe aufteilt. Das bedeutet, dass eine Ligaturglyphe in dem Lauf enthalten ist, die durch sie dargestellten Zeichen aber nur einem Teil dieser Ligatur entsprechen. Die Funktion boundingRect() des Glyphenlaufs kann in diesem Fall verwendet werden, um den Bereich abzurufen, der von Glyphen abgedeckt wird, die den durch den Glyphenlauf dargestellten Zeichen entsprechen. Bei der Visualisierung der Glyphen muss darauf geachtet werden, dass dieses begrenzende Rechteck abgeschnitten wird, um sicherzustellen, dass nur der entsprechende Teil der Ligatur gezeichnet wird. Dies kann insbesondere dann der Fall sein, wenn ein Glyphenlauf von einer QTextLayout für einen bestimmten Zeichenbereich abgerufen wird, z. B. beim Abrufen des ausgewählten Bereichs einer QTextLayout. |
Der Typ GlyphRunFlags ist ein Typedef für QFlags<GlyphRunFlag>. Er speichert eine ODER-Kombination von GlyphRunFlag-Werten.
Dokumentation der Mitgliedsfunktionen
QGlyphRun::QGlyphRun()
Konstruiert ein leeres QGlyphRun-Objekt.
QGlyphRun::QGlyphRun(const QGlyphRun &other)
Konstruiert ein QGlyphRun-Objekt, das eine Kopie von other ist.
[noexcept]
QGlyphRun::~QGlyphRun()
Zerstört die QGlyphRun.
QRectF QGlyphRun::boundingRect() const
Gibt das kleinste Rechteck zurück, das alle Glyphen in diesem QGlyphRun enthält. Wenn mit setBoundingRect() ein Begrenzungsrechteck festgelegt wurde, wird dieses zurückgegeben. Andernfalls wird das Begrenzungsrechteck auf der Grundlage der Schriftmetrik der Glyphen im Glyphenlauf berechnet.
Siehe auch setBoundingRect().
void QGlyphRun::clear()
Löscht alle Daten im Objekt QGlyphRun.
QGlyphRun::GlyphRunFlags QGlyphRun::flags() const
Gibt die für diese QGlyphRun gesetzten Flags zurück.
Siehe auch setFlags(), setFlag(), und setFlag().
QList<quint32> QGlyphRun::glyphIndexes() const
Gibt die Glyphenindizes für dieses QGlyphRun Objekt zurück.
Siehe auch setGlyphIndexes() und setPositions().
bool QGlyphRun::isEmpty() const
Gibt true
zurück, wenn die Seite QGlyphRun keine Glyphen enthält.
bool QGlyphRun::isRightToLeft() const
Gibt true
zurück, wenn diese QGlyphRun Glyphen enthält, die von rechts nach links gemalt werden.
Siehe auch setRightToLeft() und flags().
bool QGlyphRun::overline() const
Gibt true
zurück, wenn diese QGlyphRun mit einer Overline-Dekoration gezeichnet werden soll.
Siehe auch setOverline() und flags().
QList<QPointF> QGlyphRun::positions() const
Gibt die Position des Randes der Grundlinie für jede Glyphe in dieser Gruppe von Glyphenindizes zurück.
Siehe auch setPositions().
QRawFont QGlyphRun::rawFont() const
Gibt die für dieses QGlyphRun Objekt ausgewählte Schriftart zurück.
Siehe auch setRawFont().
void QGlyphRun::setBoundingRect(const QRectF &boundingRect)
Setzt das Begrenzungsrechteck der Glyphen in diesem QGlyphRun auf boundingRect. Dieses Rechteck wird von boundingRect() zurückgegeben, es sei denn, es ist null. In diesem Fall wird stattdessen das Begrenzungsrechteck der Glyphen im Glyphenlauf zurückgegeben.
Hinweis: Sofern Sie keine Textformung implementieren, sollten Sie diese Funktion nicht verwenden müssen. Sie wird speziell dann verwendet, wenn QGlyphRun einen Bereich darstellen soll, der kleiner ist als der Bereich der darin enthaltenen Glyphen. Dies könnte z. B. der Fall sein, wenn der Glyphenlauf durch den Aufruf von QTextLayout::glyphRuns() abgerufen wird und der angegebene Bereich nur einen Teil einer Ligatur enthält (bei der zwei oder mehr Zeichen zu einer einzigen Glyphe kombiniert werden). In diesem Fall sollte das Begrenzungsrechteck nur den entsprechenden Teil der Ligaturglyphe enthalten, basierend auf einer Berechnung der durchschnittlichen Breite der Zeichen in der Ligatur.
Um einen solchen Fall zu unterstützen (ein Beispiel sind Markierungen, die mit einer anderen Farbe als die Haupttextfarbe gezeichnet werden sollen), ist es notwendig, den Malmechanismus auf das von boundingRect() zurückgegebene Rechteck zu beschränken, um das Zeichnen der gesamten Ligaturglyphe zu vermeiden.
Siehe auch boundingRect().
void QGlyphRun::setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true)
Wenn enabled wahr ist, ist flag aktiviert; andernfalls ist es deaktiviert.
Siehe auch flags() und setFlags().
void QGlyphRun::setFlags(QGlyphRun::GlyphRunFlags flags)
Setzt die Flags dieses QGlyphRun auf flags.
Siehe auch setFlag() und flags().
void QGlyphRun::setGlyphIndexes(const QList<quint32> &glyphIndexes)
Setzt die Glyphenindizes für dieses QGlyphRun Objekt auf glyphIndexes. Die Glyphenindizes müssen für die ausgewählte Schriftart gültig sein.
Siehe auch glyphIndexes().
void QGlyphRun::setOverline(bool overline)
Gibt an, dass QGlyphRun mit einer Überstrichdekoration gezeichnet werden soll, wenn overline wahr ist. Andernfalls sollte die QGlyphRun ohne Überstreichungsdekoration gezeichnet werden.
Siehe auch overline(), setFlag(), und setFlags().
void QGlyphRun::setPositions(const QList<QPointF> &positions)
Setzt die Positionen der Kante der Grundlinie für jede Glyphe in dieser Gruppe von Glyphenindizes auf positions.
Siehe auch positions().
void QGlyphRun::setRawData(const quint32 *glyphIndexArray, const QPointF *glyphPositionArray, int size)
Legt die Glyphenindizes und -positionen dieses QGlyphRun so fest, dass die ersten size Elemente in den Arrays glyphIndexArray und glyphPositionArray verwendet werden. Die Daten werden nicht kopiert. Der Aufrufer muss sicherstellen, dass die Arrays nicht gelöscht werden, solange diese QGlyphRun und alle Kopien davon existieren.
Siehe auch setGlyphIndexes() und setPositions().
void QGlyphRun::setRawFont(const QRawFont &rawFont)
Setzt die Schriftart, in der die Glyphenindizes nachgeschlagen werden sollen, auf die angegebene rawFont.
Siehe auch rawFont() und setGlyphIndexes().
void QGlyphRun::setRightToLeft(bool rightToLeft)
Zeigt an, dass diese QGlyphRun Glyphen enthält, die von rechts nach links angeordnet werden sollen, wenn rightToLeft wahr ist. Andernfalls wird angenommen, dass die Reihenfolge der Glyphen von links nach rechts ist.
Siehe auch isRightToLeft(), setFlag(), und setFlags().
[since 6.5]
void QGlyphRun::setSourceString(const QString &sourceString)
Setzt die Zeichenkette, die dem Glyphenlauf entspricht, auf sourceString. Wenn gesetzt, sollten die von stringIndexes() zurückgegebenen Indizes Indizes in dieser Zeichenkette sein.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch sourceString() und stringIndexes().
void QGlyphRun::setStrikeOut(bool strikeOut)
Gibt an, dass QGlyphRun mit einer durchgestrichenen Dekoration versehen werden soll, wenn strikeOut wahr ist. Andernfalls sollte QGlyphRun ohne durchgestrichene Dekoration gemalt werden.
Siehe auch strikeOut(), setFlag(), und setFlags().
[since 6.5]
void QGlyphRun::setStringIndexes(const QList<qsizetype> &stringIndexes)
Setzt die Liste der String-Indizes, die den Glyphen-Indizes entsprechen, auf stringIndexes
Siehe stringIndexes() für weitere Details über die Konventionen dieser Liste.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch stringIndexes() und sourceString().
void QGlyphRun::setUnderline(bool underline)
Gibt an, dass QGlyphRun mit einer Unterstreichungsdekoration gezeichnet werden soll, wenn underline wahr ist. Andernfalls sollte QGlyphRun ohne Unterstreichungsdekoration gezeichnet werden.
Siehe auch underline(), setFlag(), und setFlags().
[since 6.5]
QString QGlyphRun::sourceString() const
Gibt die Zeichenkette zurück, die dem Glyphenlauf entspricht, wenn der Glyphenlauf aus einer Zeichenkette erstellt wurde und die Zeichenkette vom Layout angefordert wurde.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch setSourceString(), stringIndexes(), und QTextLayout::glyphRuns().
bool QGlyphRun::strikeOut() const
Gibt true
zurück, wenn diese QGlyphRun mit einer durchgestrichenen Dekoration versehen werden soll.
Siehe auch setStrikeOut() und flags().
[since 6.5]
QList<qsizetype> QGlyphRun::stringIndexes() const
Gibt die String-Indizes zurück, die jedem Glyphenindex entsprechen, wenn der Glyphenlauf aus einem String konstruiert wurde und String-Indizes vom Layout angefordert wurden. In diesem Fall entspricht die Länge des zurückgegebenen Vektors der Länge von glyphIndexes(). In anderen Fällen ist er leer.
Da eine einzelne Glyphe mehreren Zeichen in der Quellzeichenkette entsprechen kann, kann es Lücken in der Liste der Zeichenfolgenindizes geben. Wenn beispielsweise die Zeichenkette "first" von einer Schriftart verarbeitet wird, die eine Ligatur für das Zeichenpaar "fi" enthält, dann wird die fünf Zeichen lange Zeichenkette einen Glyphenlauf erzeugen, der nur aus vier Glyphen besteht. Die Glyphenindizes können in diesem Fall (1, 2, 3, 4) sein (vier beliebige Glyphenindizes), während die Zeichenfolgenindizes (0, 2, 3, 4) lauten würden. Die Glyphen befinden sich in der logischen Reihenfolge der Zeichenkette, d. h., die erste Glyphe umfasst in diesem Fall die Zeichen 0 und 1.
Umgekehrt kann ein einzelnes Zeichen auch mehrere Glyphen erzeugen; in diesem Fall gibt es doppelte Einträge in der Liste der Zeichenfolgenindizes.
Die String-Indizes entsprechen dem String, der optional über sourceString() verfügbar ist.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch setStringIndexes(), sourceString(), und QTextLayout::glyphRuns().
[noexcept]
void QGlyphRun::swap(QGlyphRun &other)
Tauscht diese Glyph-Run-Instanz mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
bool QGlyphRun::underline() const
Gibt true
zurück, wenn diese QGlyphRun mit einer Unterstreichungsdekoration versehen werden soll.
Siehe auch setUnderline() und flags().
bool QGlyphRun::operator!=(const QGlyphRun &other) const
Vergleicht other mit diesem QGlyphRun Objekt. Gibt true
zurück, wenn die Liste der Glyphenindizes, die Liste der Positionen oder die Schriftart unterschiedlich sind, ansonsten false
.
QGlyphRun &QGlyphRun::operator=(const QGlyphRun &other)
Weist other diesem QGlyphRun Objekt zu.
bool QGlyphRun::operator==(const QGlyphRun &other) const
Vergleicht other mit diesem QGlyphRun Objekt. Gibt true
zurück, wenn die Liste der Glyphenindizes, die Liste der Positionen und die Schriftart alle gleich sind, andernfalls 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.