Auf dieser Seite

QGlyphRun Class

Die Klasse „QGlyphRun“ bietet direkten Zugriff auf die internen Glyphen einer Schriftart. 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

Ausführliche Beschreibung

Wenn Qt eine in Unicode kodierte Textzeichenfolge anzeigt, wandelt es zunächst die Unicode-Punkte in eine Liste von Glyphenindizes und eine Liste von Positionen um, die auf einer oder mehreren Schriftarten basieren. Die Unicode-Darstellung des Textes und das ` QFont `-Objekt dienen in diesem Fall als praktische Abstraktion, die die Details dessen verbirgt, was tatsächlich bei der Darstellung des Textes auf dem Bildschirm geschieht. Beispielsweise kann der Text, wenn er tatsächlich auf dem Bildschirm erscheint, zusätzlich zu der vom Benutzer angegebenen Schriftart durch eine Reihe weiterer Schriftarten dargestellt werden, z. B. falls die ursprünglich ausgewählte Schriftart nicht alle im Text enthaltenen Schriftsysteme unterstützt.

Unter bestimmten Umständen kann es für Anwendungsentwickler nützlich sein, eine tiefere Kontrolle darüber zu haben, welche Glyphen einer bestimmten Schriftart auf dem Bildschirm gezeichnet werden. Dies könnte beispielsweise bei Anwendungen der Fall sein, die eine externe Schriftart-Engine und einen Text-Shaper zusammen mit Qt verwenden. QGlyphRun stellt eine Schnittstelle zu den Rohdaten bereit, die erforderlich sind, um Text auf den Bildschirm zu bringen. Es enthält eine Liste von Glyphenindizes, eine Position für jede Glyphe und eine Schriftart.

Es liegt in der Verantwortung des Benutzers, sicherzustellen, dass die ausgewählte Schriftart die bereitgestellten Glyphenindizes tatsächlich enthält.

QTextLayout::glyphRunsMit `()` oder ` QTextFragment::glyphRuns()` kann Unicode-kodierter Text in eine Liste von `QGlyphRun`-Objekten konvertiert werden, und mit ` QPainter::drawGlyphRun()` können die Glyphen gezeichnet werden.

Hinweis: Bitte beachten Sie, dass ` QRawFont ` als lokal für den Thread gilt, in dem es erstellt wurde. Dies bedeutet wiederum, dass ein neues ` QRawFont ` erstellt und dem `QGlyphRun` zugewiesen werden muss, wenn dieser in einen anderen Thread verschoben wird. Enthält der `QGlyphRun` einen Verweis auf ein ` QRawFont ` aus einem anderen Thread als dem aktuellen, ist es nicht möglich, die Glyphen mit einem ` QPainter` zu zeichnen, da das ` QRawFont ` in diesem Fall als ungültig und nicht zugänglich gilt.

Dokumentation zu Mitgliedstypen

enum QGlyphRun::GlyphRunFlag
flags QGlyphRun::GlyphRunFlags

Diese Enumeration beschreibt Flags, die die Darstellung oder das Verhalten von Glyphenfolgen in einem visuellen Layout beeinflussen. Das Layout, das die Glyphenfolgen generiert, kann diese Flags auf der Grundlage relevanter interner Daten setzen, um Informationen beizubehalten, die erforderlich sind, um den Text so darzustellen, wie es der Nutzer des Layouts beabsichtigt.

KonstanteWertBeschreibung
QGlyphRun::Overline0x01Gibt an, dass die Glyphen zusammen mit einer Oberlinie dargestellt werden sollen.
QGlyphRun::Underline0x02Gibt an, dass die Glyphen zusammen mit einer Unterstreichung dargestellt werden sollen.
QGlyphRun::StrikeOut0x04Gibt an, dass die Glyphen visuell durchgestrichen dargestellt werden sollen.
QGlyphRun::RightToLeft0x08Gibt an, dass die Glyphen von rechts nach links angeordnet sind. Dies kann sich auf die Positionierung anderer Bildschirmelemente auswirken, die relativ zum Glyphenlauf stehen, wie z. B. ein Inline-Textobjekt.
QGlyphRun::SplitLigature0x10Gibt an, dass der Glyphenlauf eine Ligatur-Glyphe aufteilt. Das bedeutet, dass eine Ligatur-Glyphe im Lauf enthalten ist, die von ihr dargestellten Zeichen jedoch nur einem Teil dieser Ligatur entsprechen. Die Funktion ` boundingRect()` des Glyphenlaufs kann in diesem Fall verwendet werden, um den Bereich abzurufen, der von den Glyphen abgedeckt wird, die den durch den Glyphenlauf dargestellten Zeichen entsprechen. Bei der Darstellung der Glyphen muss darauf geachtet werden, auf dieses Begrenzungsrechteck zu beschneiden, um sicherzustellen, dass nur der entsprechende Teil der Ligatur gezeichnet wird. Dies kann insbesondere dann der Fall sein, wenn ein Glyphenlauf aus einem „ QTextLayout “ für einen bestimmten Zeichenbereich abgerufen wird, z. B. beim Abrufen des ausgewählten Bereichs eines „ QTextLayout “.

Der Typ „GlyphRunFlags“ ist ein typedef für „QFlags<GlyphRunFlag>“. Er speichert eine ODER-Kombination von „GlyphRunFlag“-Werten.

Dokumentation der Mitgliedsfunktionen

QGlyphRun::QGlyphRun()

Erstellt ein leeres QGlyphRun-Objekt.

QGlyphRun::QGlyphRun(const QGlyphRun &other)

Erstellt 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 über „ setBoundingRect()“ ein Begrenzungsrechteck festgelegt wurde, wird dieses zurückgegeben. Andernfalls wird das Begrenzungsrechteck auf der Grundlage der Schriftmetriken der Glyphen in der Glyphenfolge 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() 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 ` QGlyphRun ` keine Glyphen enthält.

bool QGlyphRun::isRightToLeft() const

Gibt „ true “ zurück, wenn dieses „ QGlyphRun “ Glyphen enthält, die von rechts nach links gezeichnet werden.

Siehe auch setRightToLeft() und flags().

bool QGlyphRun::overline() const

Gibt „ true “ zurück, wenn diese „ QGlyphRun “ mit einer Überlinienverzierung dargestellt werden soll.

Siehe auch „ setOverline()“ und „ flags()“.

QList<QPointF> QGlyphRun::positions() const

Gibt für jedes Glyph in dieser Gruppe von Glyphenindizes die Position des Randes der Grundlinie 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)

Legt das Begrenzungsrechteck der Glyphen in diesem „ QGlyphRun “ auf „ boundingRect “ fest. Dieses Rechteck wird von „ boundingRect()“ zurückgegeben, sofern es nicht null ist; 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 der „ QGlyphRun “ einen Bereich darstellen soll, der kleiner ist als der Bereich der darin enthaltenen Glyphen. Dies könnte z. B. der Fall sein, wenn die Glyphenfolge durch den Aufruf von ` QTextLayout::glyphRuns()` abgerufen wird und der angegebene Bereich nur einen Teil einer Ligatur umfasst (bei der zwei oder mehr Zeichen zu einer einzigen Glyphe kombiniert sind). In diesem Fall sollte das Begrenzungsrechteck nur den entsprechenden Teil des Ligatur-Glyphs umfassen, basierend auf einer Berechnung der durchschnittlichen Breite der Zeichen in der Ligatur.

Um einen solchen Fall zu unterstützen (ein Beispiel sind Auswahlen, die in einer anderen Farbe als der Haupttextfarbe gezeichnet werden sollen), ist es notwendig, den Zeichenmechanismus auf das von ` boundingRect()` zurückgegebene Rechteck zu beschränken, um zu vermeiden, dass die gesamte Ligatur-Glyphe gezeichnet wird.

Siehe auch ` boundingRect()`.

void QGlyphRun::setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true)

Wenn „ enabled “ auf „true“ gesetzt 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)

Setzen Sie 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 dieses ` QGlyphRun ` mit einer Oberlinienverzierung dargestellt werden soll, wenn ` overline ` wahr ist. Andernfalls soll das ` QGlyphRun ` ohne Oberlinienverzierung dargestellt werden.

Siehe auch overline(), setFlag() und setFlags().

void QGlyphRun::setPositions(const QList<QPointF> &positions)

Setzt die Positionen der Grundlinienkanten für jedes Glyph in diesem Satz 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 der Arrays ` glyphIndexArray ` und ` glyphPositionArray` verwendet werden. Die Daten werden nicht kopiert. Der Aufrufer muss sicherstellen, dass die Arrays nicht gelöscht werden, solange dieses ` QGlyphRun ` und etwaige Kopien davon vorhanden sind.

Siehe auch „ setGlyphIndexes()“ und „ setPositions()“.

void QGlyphRun::setRawFont(const QRawFont &rawFont)

Legt die Schriftart fest, in der die Glyphenindizes nachgeschlagen werden sollen, und zwar anhand der angegebenen „ rawFont “.

Siehe auch „ rawFont()“ und „ setGlyphIndexes()“.

void QGlyphRun::setRightToLeft(bool rightToLeft)

Gibt an, dass diese „ QGlyphRun “ Glyphen enthält, die von rechts nach links angeordnet werden sollten, wenn „ rightToLeft “ wahr ist. Andernfalls wird davon ausgegangen, dass die Glyphen von links nach rechts angeordnet sind.

Siehe auch isRightToLeft(), setFlag() und setFlags().

[since 6.5] void QGlyphRun::setSourceString(const QString &sourceString)

Setzen Sie die Zeichenfolge, die der Glyphenfolge entspricht, auf „ sourceString “. Ist dies der Fall, sollten die von stringIndexes() zurückgegebenen Indizes Indizes in dieser Zeichenfolge sein.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch ` sourceString()` und ` stringIndexes()`.

void QGlyphRun::setStrikeOut(bool strikeOut)

Gibt an, dass dieses QGlyphRun mit einer Durchstreichung dargestellt werden soll, wenn strikeOut wahr ist. Andernfalls soll das QGlyphRun ohne Durchstreichung dargestellt werden.

Siehe auch strikeOut(), setFlag() und setFlags().

[since 6.5] void QGlyphRun::setStringIndexes(const QList<qsizetype> &stringIndexes)

Legt die Liste der Zeichenfolgenindizes fest, die den Glyphenindizes entsprechen, auf stringIndexes

Weitere Informationen zu den Konventionen dieser Liste finden Sie unter stringIndexes().

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch stringIndexes() und sourceString().

void QGlyphRun::setUnderline(bool underline)

Gibt an, dass dieses „ QGlyphRun “ mit einer Unterstreichung dargestellt werden soll, wenn „ underline “ wahr ist. Andernfalls soll das „ QGlyphRun “ ohne Unterstreichung dargestellt werden.

Siehe auch underline(), setFlag() und setFlags().

[since 6.5] QString QGlyphRun::sourceString() const

Gibt die Zeichenfolge zurück, die dem Glyphenlauf entspricht, sofern der Glyphenlauf aus einer Zeichenfolge erstellt wurde und die Zeichenfolge 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 Durchstreichung dargestellt werden soll.

Siehe auch „ setStrikeOut()“ und „ flags()“.

[since 6.5] QList<qsizetype> QGlyphRun::stringIndexes() const

Gibt die Zeichenfolgenindizes zurück, die den einzelnen Glyphenindizes entsprechen, sofern die Glyphenfolge aus einer Zeichenfolge aufgebaut wurde und Zeichenfolgenindizes vom Layout angefordert wurden. In diesem Fall entspricht die Länge des zurückgegebenen Vektors der Länge von ` glyphIndexes()`. In allen anderen Fällen ist der Vektor leer.

Da ein einzelnes Glyphenelement mehreren Zeichen in der Quellzeichenfolge entsprechen kann, kann es zu Lücken in der Liste der Zeichenfolgenindizes kommen. Wenn beispielsweise die Zeichenfolge „first“ von einer Schriftart verarbeitet wird, die eine Ligatur für das Zeichenpaar „fi“ enthält, erzeugt die fünf Zeichen lange Zeichenfolge eine Glyphenfolge, die nur aus vier Glyphen besteht. In diesem Fall könnten die Glyphenindizes dann (1, 2, 3, 4) lauten (vier beliebige Glyphenindizes), während die Zeichenfolgenindizes (0, 2, 3, 4) wären. Die Glyphen folgen der logischen Reihenfolge der Zeichenfolge, woraus sich ergibt, dass die ersten Glyphen in diesem Fall die Zeichen 0 und 1 umfassen.

Umgekehrt kann ein einzelnes Zeichen auch mehrere Glyphen erzeugen; in diesem Fall gibt es doppelte Einträge in der Liste der Zeichenfolgenindizes.

Die Zeichenfolgenindizes entsprechen der Zeichenfolge, die optional über ` sourceString()` abgerufen werden kann.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch setStringIndexes(), sourceString() und QTextLayout::glyphRuns().

[noexcept] void QGlyphRun::swap(QGlyphRun &other)

Ersetzt diese Instanz des Glyphenlaufs durch „ other “. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

bool QGlyphRun::underline() const

Gibt „ true “ zurück, wenn dieser „ QGlyphRun “ mit einer Unterstreichung dargestellt 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 sich die Liste der Glyphenindizes, die Liste der Positionen oder die Schriftart unterscheiden; andernfalls wird false zurückgegeben.

QGlyphRun &QGlyphRun::operator=(const QGlyphRun &other)

Weist diesem „ QGlyphRun “-Objekt „ other “ zu.

bool QGlyphRun::operator==(const QGlyphRun &other) const

Vergleicht das Objekt ` other ` mit diesem Objekt ` QGlyphRun `. Gibt ` true ` zurück, wenn die Liste der Glyphenindizes, die Liste der Positionen und die Schriftart alle identisch sind; andernfalls wird ` false` zurückgegeben.

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