Sur cette page

QGlyphRun Class

La classe QGlyphRun permet d'accéder directement aux glyphes internes d'une police. Plus d'informations...

En-tête : #include <QGlyphRun>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui

Types publics

enum GlyphRunFlag { Overline, Underline, StrikeOut, RightToLeft, SplitLigature }
flags GlyphRunFlags

Fonctions publiques

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

Description détaillée

Lorsque Qt affiche une chaîne de texte encodée en Unicode, il va d'abord convertir les points Unicode en une liste d'index de glyphes et une liste de positions basées sur une ou plusieurs polices. La représentation Unicode du texte et l'objet QFont servent dans ce cas d'abstraction pratique qui masque les détails de ce qui se passe réellement lors de l'affichage du texte à l'écran. Par exemple, au moment où le texte atteint effectivement l'écran, il peut être représenté par un ensemble de polices en plus de celui spécifié par l'utilisateur, par exemple dans le cas où la police initialement sélectionnée ne prend pas en charge tous les systèmes d'écriture contenus dans le texte.

Dans certaines circonstances, il peut être utile, en tant que développeur d'applications, de disposer d'un contrôle de bas niveau sur les glyphes d'une police spécifique qui sont affichés à l'écran. Cela peut être le cas, par exemple, dans les applications qui utilisent un moteur de polices externe et un formateur de texte avec Qt. QGlyphRun fournit une interface aux données brutes nécessaires pour afficher le texte à l'écran. Il contient une liste d'index de glyphes, une position pour chaque glyphe et une police de caractères.

Il incombe à l'utilisateur de s'assurer que la police sélectionnée contient effectivement les index de glyphes fournis.

QTextLayout::glyphRuns() ou QTextFragment::glyphRuns() peuvent être utilisés pour convertir un texte codé en unicode en une liste d'objets QGlyphRun, et QPainter::drawGlyphRun() peut être utilisé pour dessiner les glyphes.

Note : Veuillez noter que QRawFont est considéré comme local au thread dans lequel il est construit. Cela signifie qu'un nouveau QRawFont devra être créé et défini sur le QGlyphRun s'il est déplacé vers un autre thread. Si le QGlyphRun contient une référence à un QRawFont provenant d'un thread différent de celui en cours, il ne sera pas possible de dessiner les glyphes à l'aide d'un QPainter, car le QRawFont est considéré comme invalide et inaccessible dans ce cas.

Type de membre Documentation

enum QGlyphRun::GlyphRunFlag
flags QGlyphRun::GlyphRunFlags

Cette énumération décrit les drapeaux qui modifient la manière dont la série de glyphes peut être présentée ou se comporter dans une disposition visuelle. La mise en page qui génère les parcours de glyphes peut définir ces drapeaux en fonction des données internes pertinentes, afin de conserver les informations nécessaires pour présenter le texte comme le souhaite l'utilisateur de la mise en page.

ConstanteValeurDescription
QGlyphRun::Overline0x01Indique que les glyphes doivent être visualisés avec un surlignage.
QGlyphRun::Underline0x02Indique que les glyphes doivent être visualisés avec un soulignement.
QGlyphRun::StrikeOut0x04Indique que les glyphes doivent être visuellement barrés.
QGlyphRun::RightToLeft0x08Indique que les glyphes sont classés de droite à gauche. Cela peut affecter le positionnement d'autres éléments de l'écran qui sont relatifs au parcours des glyphes, tels qu'un objet textuel en ligne.
QGlyphRun::SplitLigature0x10Indique que la ligne de glyphes divise un glyphe de ligature. Cela signifie qu'un glyphe de ligature est inclus dans le parcours, mais que les caractères qu'il représente ne correspondent qu'à une partie de cette ligature. La fonction boundingRect() du parcours de glyphes peut dans ce cas être utilisée pour récupérer la zone couverte par les glyphes qui correspondent aux caractères représentés par le parcours de glyphes. Lors de la visualisation des glyphes, il convient de veiller à respecter ce rectangle de délimitation afin de s'assurer que seule la partie correspondante de la ligature est peinte. Cela peut notamment être le cas lors de la récupération d'un parcours de glyphes à partir d'un site QTextLayout pour une plage de caractères spécifique, par exemple lors de la récupération de la zone sélectionnée d'un site QTextLayout.

Le type GlyphRunFlags est un typedef pour QFlags<GlyphRunFlag>. Il stocke une combinaison OU de valeurs GlyphRunFlag.

Documentation des fonctions membres

QGlyphRun::QGlyphRun()

Construit un objet QGlyphRun vide.

QGlyphRun::QGlyphRun(const QGlyphRun &other)

Construit un objet QGlyphRun qui est une copie de other.

[noexcept] QGlyphRun::~QGlyphRun()

Détruit le site QGlyphRun.

QRectF QGlyphRun::boundingRect() const

Renvoie le plus petit rectangle contenant tous les glyphes de ce site QGlyphRun. Si un rectangle de délimitation a été défini à l'aide de setBoundingRect(), il sera renvoyé. Sinon, le rectangle de délimitation sera calculé sur la base des métriques de police des glyphes dans le parcours des glyphes.

Voir aussi setBoundingRect().

void QGlyphRun::clear()

Efface toutes les données de l'objet QGlyphRun.

QGlyphRun::GlyphRunFlags QGlyphRun::flags() const

Renvoie les drapeaux définis pour cette QGlyphRun.

Voir aussi setFlags() et setFlag().

QList<quint32> QGlyphRun::glyphIndexes() const

Renvoie les index des glyphes pour cet objet QGlyphRun.

Voir aussi setGlyphIndexes() et setPositions().

bool QGlyphRun::isEmpty() const

Renvoie true si le site QGlyphRun ne contient pas de glyphes.

bool QGlyphRun::isRightToLeft() const

Renvoie true si ce site QGlyphRun contient des glyphes qui sont peints de la droite vers la gauche.

Voir aussi setRightToLeft() et flags().

bool QGlyphRun::overline() const

Renvoie true si ce QGlyphRun doit être peint avec une décoration en surlignage.

Voir aussi setOverline() et flags().

QList<QPointF> QGlyphRun::positions() const

Renvoie la position du bord de la ligne de base pour chaque glyphe dans cet ensemble d'index de glyphes.

Voir aussi setPositions().

QRawFont QGlyphRun::rawFont() const

Renvoie la police sélectionnée pour cet objet QGlyphRun.

Voir aussi setRawFont().

void QGlyphRun::setBoundingRect(const QRectF &boundingRect)

Définit le rectangle de délimitation des glyphes de cette QGlyphRun comme étant boundingRect. Ce rectangle sera renvoyé par boundingRect() à moins qu'il ne soit nul, auquel cas le rectangle de délimitation des glyphes du parcours de glyphes sera renvoyé à la place.

Remarque : à moins que vous ne mettiez en œuvre la mise en forme du texte, vous ne devriez pas avoir à utiliser cette fonction. Elle est utilisée spécifiquement lorsque le site QGlyphRun doit représenter une zone plus petite que la zone des glyphes qu'il contient. Cela peut se produire, par exemple, si le parcours des glyphes est récupéré en appelant QTextLayout::glyphRuns() et que la plage spécifiée ne comprend qu'une partie d'une ligature (où deux caractères ou plus sont combinés en un seul glyphe). Dans ce cas, le rectangle de délimitation ne doit comprendre que la partie appropriée du glyphe de la ligature, sur la base d'un calcul de la largeur moyenne des caractères dans la ligature.

Afin de prendre en charge un tel cas (par exemple, les sélections qui doivent être dessinées avec une couleur différente de celle du texte principal), il est nécessaire d'adapter le mécanisme de peinture au rectangle renvoyé par boundingRect() afin d'éviter de dessiner l'intégralité du glyphe de la ligature.

Voir aussi boundingRect().

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

Si enabled est vrai, flag est activé ; sinon, il est désactivé.

Voir aussi flags() et setFlags().

void QGlyphRun::setFlags(QGlyphRun::GlyphRunFlags flags)

Définit les drapeaux de ce QGlyphRun à flags.

Voir aussi setFlag() et flags().

void QGlyphRun::setGlyphIndexes(const QList<quint32> &glyphIndexes)

Définit les index de glyphes de cet objet QGlyphRun à glyphIndexes. Les index de glyphes doivent être valides pour la police sélectionnée.

Voir aussi glyphIndexes().

void QGlyphRun::setOverline(bool overline)

Indique que cette page QGlyphRun doit être peinte avec une décoration surlignée si overline est vrai. Dans le cas contraire, la page QGlyphRun doit être peinte sans décoration de surlignage.

Voir aussi overline(), setFlag() et setFlags().

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

Définit les positions du bord de la ligne de base pour chaque glyphe dans cet ensemble d'index de glyphes à positions.

Voir aussi positions().

void QGlyphRun::setRawData(const quint32 *glyphIndexArray, const QPointF *glyphPositionArray, int size)

Définit les index et les positions des glyphes de ce site QGlyphRun afin d'utiliser les premiers éléments de size dans les tableaux glyphIndexArray et glyphPositionArray. Les données ne sont pas copiées. L'appelant doit garantir que les tableaux ne sont pas supprimés tant que ce QGlyphRun et ses copies existent.

Voir également setGlyphIndexes() et setPositions().

void QGlyphRun::setRawFont(const QRawFont &rawFont)

Définit la police dans laquelle les index des glyphes doivent être recherchés à l'adresse rawFont spécifiée.

Voir aussi rawFont() et setGlyphIndexes().

void QGlyphRun::setRightToLeft(bool rightToLeft)

Indique que ce site QGlyphRun contient des glyphes qui doivent être ordonnés de droite à gauche si rightToLeft est vrai. Sinon, l'ordre des glyphes est supposé être de gauche à droite.

Voir aussi isRightToLeft(), setFlag() et setFlags().

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

Définit la chaîne correspondant au glyphe exécuté à sourceString. Si elle est définie, les index renvoyés par stringIndexes() doivent être des index dans cette chaîne.

Cette fonction a été introduite dans Qt 6.5.

Voir aussi sourceString() et stringIndexes().

void QGlyphRun::setStrikeOut(bool strikeOut)

Indique que cette page QGlyphRun doit être peinte avec une décoration barrée si strikeOut est vrai. Dans le cas contraire, la page QGlyphRun doit être peinte sans décoration en relief.

Voir également strikeOut(), setFlag() et setFlags().

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

Définit la liste des index de chaînes de caractères correspondant aux index de glyphes à stringIndexes

Voir stringIndexes() pour plus de détails sur les conventions de cette liste.

Cette fonction a été introduite dans Qt 6.5.

Voir aussi stringIndexes() et sourceString().

void QGlyphRun::setUnderline(bool underline)

Indique que cette page QGlyphRun doit être peinte avec une décoration soulignée si underline est vrai. Dans le cas contraire, la page QGlyphRun doit être peinte sans décoration soulignée.

Voir aussi underline(), setFlag() et setFlags().

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

Renvoie la chaîne correspondant au parcours de glyphes, si le parcours de glyphes a été créé à partir d'une chaîne et si la chaîne a été demandée à la disposition.

Cette fonction a été introduite dans Qt 6.5.

Voir aussi setSourceString(), stringIndexes(), et QTextLayout::glyphRuns().

bool QGlyphRun::strikeOut() const

Renvoie true si cette page QGlyphRun doit être peinte avec une décoration barrée.

Voir aussi setStrikeOut() et flags().

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

Renvoie les index de chaîne correspondant à chaque index de glyphe, si le parcours des glyphes a été construit à partir d'une chaîne et que des index de chaîne ont été demandés à la disposition. Dans ce cas, la longueur du vecteur retourné correspondra à la longueur de glyphIndexes(). Dans les autres cas, il sera vide.

Étant donné qu'un seul glyphe peut correspondre à plusieurs caractères dans la chaîne source, il peut y avoir des lacunes dans la liste des index de chaîne. Par exemple, si la chaîne "first" est traitée par une police qui contient une ligature pour la paire de caractères "fi", la chaîne de cinq caractères générera une série de glyphes composée de seulement quatre glyphes. Dans ce cas, les index des glyphes peuvent être (1, 2, 3, 4) (quatre index de glyphes arbitraires), tandis que les index des chaînes de caractères seraient (0, 2, 3, 4). Les glyphes sont dans l'ordre logique de la chaîne, ce qui implique que le premier glyphe couvre les caractères 0 et 1 dans ce cas.

Inversement, un seul caractère peut également générer plusieurs glyphes, auquel cas il y aura des entrées en double dans la liste des index de chaîne.

Les index de chaîne correspondent à la chaîne, optionnellement disponible via sourceString().

Cette fonction a été introduite dans Qt 6.5.

Voir aussi setStringIndexes(), sourceString(), et QTextLayout::glyphRuns().

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

Remplace cette instance d'exécution de glyphe par other. Cette opération est très rapide et n'échoue jamais.

bool QGlyphRun::underline() const

Renvoie true si ce QGlyphRun doit être peint avec une décoration soulignée.

Voir aussi setUnderline() et flags().

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

Compare other à cet objet QGlyphRun. Renvoie true si la liste des index de glyphes, la liste des positions ou la police sont différentes, sinon renvoie false.

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

Attribue other à cet objet QGlyphRun.

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

Compare other à cet objet QGlyphRun. Renvoie true si la liste des index de glyphes, la liste des positions et la police sont toutes égales, sinon renvoie false.

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