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

Ö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.

KonstanteWertBeschreibung
QGlyphRun::Overline0x01Zeigt an, dass die Glyphen zusammen mit einer Überlinie dargestellt werden sollen.
QGlyphRun::Underline0x02Zeigt an, dass die Glyphen zusammen mit einer Unterstreichung dargestellt werden sollen.
QGlyphRun::StrikeOut0x04Zeigt an, dass die Glyphen visuell durchgestrichen werden sollen.
QGlyphRun::RightToLeft0x08Zeigt 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::SplitLigature0x10Zeigt 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.