QGlyphRun Class
La classe QGlyphRun permet d'accéder directement aux glyphes internes d'une police. En savoir plus...
| En-tête : | #include <QGlyphRun> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
- Liste de tous les membres, y compris les membres hérités
- QGlyphRun fait partie des classes partagées implicitement.
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 convertit d’abord 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 apparaît effectivement à l’écran, il peut être représenté par un ensemble de polices en plus de celle spécifiée par l’utilisateur, par exemple si 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 plus bas niveau sur les glyphes d’une police spécifique qui sont affichés à l’écran. Cela peut par exemple être le cas dans des applications qui utilisent un moteur de polices externe et un outil de mise en forme de texte en association avec Qt. QGlyphRun fournit une interface permettant d’accéder aux données brutes nécessaires à l’affichage du texte à l’écran. Elle contient une liste d’index de glyphes, une position pour chaque glyphe et une police.
Il incombe à l'utilisateur de s'assurer que la police sélectionnée contient bien les index de glyphes fournis.
QTextLayout::glyphRuns() ou ` QTextFragment::glyphRuns()` peuvent être utilisés pour convertir du texte encodé en Unicode en une liste d’objets `QGlyphRun`, et ` QPainter::drawGlyphRun()` peut être utilisé pour afficher les glyphes.
Remarque : veuillez noter que ` QRawFont ` est considéré comme local au thread dans lequel il est construit. Cela signifie donc qu’un nouvel objet ` QRawFont ` devra être créé et associé au `QGlyphRun` si celui-ci est déplacé vers un autre thread. Si le QGlyphRun contient une référence à un QRawFont provenant d’un thread différent du thread actuel, il ne sera pas possible de dessiner les glyphes à l’aide d’un QPainter, car l’ QRawFont est alors considéré comme invalide et inaccessible.
Documentation sur les types de membres
enum QGlyphRun::GlyphRunFlag
flags QGlyphRun::GlyphRunFlags
Cette énumération décrit des indicateurs qui modifient la manière dont une séquence de glyphes peut être présentée ou se comporte dans une mise en page visuelle. La mise en page qui génère ces séquences de glyphes peut définir ces indicateurs en fonction de données internes pertinentes, afin de conserver les informations nécessaires à la présentation du texte telle que prévue par l'utilisateur de la mise en page.
| Constante | Valeur | Description |
|---|---|---|
QGlyphRun::Overline | 0x01 | Indique que les glyphes doivent être affichés avec une surligne. |
QGlyphRun::Underline | 0x02 | Indique que les glyphes doivent être affichés avec un soulignement. |
QGlyphRun::StrikeOut | 0x04 | Indique que les glyphes doivent être visuellement barrés. |
QGlyphRun::RightToLeft | 0x08 | Indique que les glyphes sont ordonnés de droite à gauche. Cela peut affecter le positionnement d’autres éléments à l’écran qui sont relatifs à la séquence de glyphes, tels qu’un objet texte en ligne. |
QGlyphRun::SplitLigature | 0x10 | Indique que la séquence de glyphes divise un glyphe de ligature. Cela signifie qu’un glyphe de ligature est inclus dans la séquence, mais que les caractères qu’il représente ne correspondent qu’à une partie de cette ligature. La fonction ` boundingRect()` de la séquence de glyphes peut, dans ce cas, être utilisée pour récupérer la zone couverte par les glyphes correspondant aux caractères représentés par la séquence. Lors de la visualisation des glyphes, il convient de veiller à ne découper que ce rectangle de délimitation afin de s’assurer que seule la partie correspondante de la ligature soit affichée. Cela peut notamment être le cas lors de la récupération d’une séquence de glyphes à partir d’un ` 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 ` QTextLayout`. |
Le type GlyphRunFlags est un typedef pour QFlags<GlyphRunFlag>. Il stocke une combinaison (ou) de valeurs GlyphRunFlag.
Documentation des fonctions membres
QGlyphRun::QGlyphRun()
Crée un objet QGlyphRun vide.
QGlyphRun::QGlyphRun(const QGlyphRun &other)
Crée un objet `QGlyphRun` qui est une copie de ` other`.
[noexcept] QGlyphRun::~QGlyphRun()
Supprime l'QGlyphRun.
QRectF QGlyphRun::boundingRect() const
Renvoie le plus petit rectangle contenant tous les glyphes de cette séquence de glyphes ( QGlyphRun). Si un rectangle de délimitation a été défini à l'aide de la fonction setBoundingRect(), c'est celui-ci qui sera renvoyé. Sinon, le rectangle de délimitation sera calculé à partir des métriques des glyphes de la séquence.
Voir également setBoundingRect().
void QGlyphRun::clear()
Efface toutes les données de l'objet « QGlyphRun ».
QGlyphRun::GlyphRunFlags QGlyphRun::flags() const
Renvoie les indicateurs activés pour cet QGlyphRun.
Voir également setFlags() et setFlag().
QList<quint32> QGlyphRun::glyphIndexes() const
Renvoie les index des glyphes associés à cet objet ` QGlyphRun `.
Voir également setGlyphIndexes() et setPositions().
bool QGlyphRun::isEmpty() const
Renvoie « true » si l'QGlyphRun e ne contient aucun glyphe.
bool QGlyphRun::isRightToLeft() const
Renvoie « true » si cet QGlyphRun contient des glyphes dessinés de droite à gauche.
Voir également setRightToLeft() et flags().
bool QGlyphRun::overline() const
Renvoie ` true ` si cet ` QGlyphRun ` doit être affiché avec une ligne supérieure.
Voir également setOverline() et flags().
QList<QPointF> QGlyphRun::positions() const
Renvoie la position du bord de la ligne de base pour chaque glyphe de cet ensemble d'index de glyphes.
Voir également 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 englobant des glyphes de cette « QGlyphRun » sur boundingRect. Ce rectangle sera renvoyé par la fonction boundingRect() à moins qu’il ne soit nul, auquel cas c’est le rectangle englobant des glyphes de la « glyph run » qui sera renvoyé à la place.
Remarque : à moins que vous n’implémentiez la mise en forme du texte, vous ne devriez pas avoir à utiliser cette fonction. Elle est spécifiquement utilisée lorsque l’ QGlyphRun doit représenter une zone plus petite que celle des glyphes qu’elle contient. Cela peut se produire, par exemple, si la séquence de glyphes est récupérée 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 inclure que la partie appropriée du glyphe de ligature, sur la base d’un calcul de la largeur moyenne des caractères composant la ligature.
Afin de prendre en charge un tel cas (par exemple, des sélections qui doivent être dessinées dans une couleur différente de celle du texte principal), il est nécessaire de limiter le mécanisme de dessin au rectangle renvoyé par la fonction ` boundingRect()` afin d’éviter de dessiner l’intégralité du glyphe de ligature.
Voir également boundingRect().
void QGlyphRun::setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true)
Si la valeur de enabled est « true », alors flag est activé ; dans le cas contraire, il est désactivé.
Voir aussi flags() et setFlags().
void QGlyphRun::setFlags(QGlyphRun::GlyphRunFlags flags)
Définit les indicateurs de cette QGlyphRun sur flags.
Voir également setFlag() et flags().
void QGlyphRun::setGlyphIndexes(const QList<quint32> &glyphIndexes)
Définissez les indices de glyphes de cet objet « QGlyphRun » sur glyphIndexes. Les indices de glyphes doivent être valides pour la police sélectionnée.
Voir aussi glyphIndexes().
void QGlyphRun::setOverline(bool overline)
Indique que cet élément QGlyphRun doit être affiché avec une ligne supérieure si la condition overline est vraie. Dans le cas contraire, l'élément QGlyphRun doit être affiché sans ligne supérieure.
Voir également overline(), setFlag() et setFlags().
void QGlyphRun::setPositions(const QList<QPointF> &positions)
Définit les positions du bord de la ligne de base de chaque glyphe de cet ensemble d'index de glyphes sur positions.
Voir également positions().
void QGlyphRun::setRawData(const quint32 *glyphIndexArray, const QPointF *glyphPositionArray, int size)
Définit les index et les positions des glyphes de cet objet ` QGlyphRun ` afin d’utiliser les premiers éléments ` size ` des tableaux ` glyphIndexArray ` et ` glyphPositionArray`. Les données ne sont pas copiées. L’appelant doit garantir que les tableaux ne seront pas supprimés tant que cet objet ` QGlyphRun ` et toutes ses copies existeront.
Voir également setGlyphIndexes() et setPositions().
void QGlyphRun::setRawFont(const QRawFont &rawFont)
Définit la police à utiliser pour rechercher les index de glyphes sur l'rawFont spécifié.
Voir également rawFont() et setGlyphIndexes().
void QGlyphRun::setRightToLeft(bool rightToLeft)
Indique que cette QGlyphRun contient des glyphes qui doivent être classés de droite à gauche si la valeur de rightToLeft est « true ». Dans le cas contraire, l’ordre des glyphes est supposé être de gauche à droite.
Voir également isRightToLeft(), setFlag() et setFlags().
[since 6.5] void QGlyphRun::setSourceString(const QString &sourceString)
Définissez la chaîne correspondant à la séquence de glyphes sur sourceString. Si cette option est activée, les index renvoyés par stringIndexes() doivent correspondre à des index de cette chaîne.
Cette fonction a été introduite dans Qt 6.5.
Voir également sourceString() et stringIndexes().
void QGlyphRun::setStrikeOut(bool strikeOut)
Indique que cet élément QGlyphRun doit être affiché avec un effet de biffure si strikeOut est vrai. Dans le cas contraire, l'élément QGlyphRun doit être affiché sans effet de biffure.
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 correspondant aux index de glyphes sur stringIndexes
Voir stringIndexes() pour plus de détails sur les conventions relatives à cette liste.
Cette fonction a été introduite dans Qt 6.5.
Voir également stringIndexes() et sourceString().
void QGlyphRun::setUnderline(bool underline)
Indique que cet élément QGlyphRun doit être affiché avec un soulignement si la valeur de underline est « true ». Dans le cas contraire, l'élément QGlyphRun doit être affiché sans soulignement.
Voir également ` underline()`, ` setFlag()` et ` setFlags()`.
[since 6.5] QString QGlyphRun::sourceString() const
Renvoie la chaîne correspondant à la séquence de glyphes, si celle-ci a été créée à partir d'une chaîne et que cette chaîne a été demandée par la mise en page.
Cette fonction a été introduite dans Qt 6.5.
Voir également setSourceString(), stringIndexes() et QTextLayout::glyphRuns().
bool QGlyphRun::strikeOut() const
Renvoie « true » si cet QGlyphRun doit être affiché avec un effet de barré.
Voir également setStrikeOut() et flags().
[since 6.5] QList<qsizetype> QGlyphRun::stringIndexes() const
Renvoie les indices de chaîne correspondant à chaque indice de glyphe, si la séquence de glyphes a été construite à partir d’une chaîne et que les indices de chaîne ont été demandés à la mise en page. Dans ce cas, la longueur du vecteur renvoyé correspondra à la longueur de ` glyphIndexes()`. Dans les autres cas, il sera vide.
Étant donné qu’un seul glyphe peut correspondre à plusieurs caractères de la chaîne source, il peut y avoir des lacunes dans la liste des indices de chaîne. Par exemple, si la chaîne « first » est traitée par une police contenant une ligature pour la paire de caractères « fi », alors cette chaîne de cinq caractères générera une séquence de glyphes composée de seulement quatre glyphes. Dans ce cas, les indices de glyphes peuvent alors être (1, 2, 3, 4) (quatre indices de glyphes arbitraires), tandis que les indices de chaîne seraient (0, 2, 3, 4). Les glyphes suivent l’ordre logique de la chaîne ; il en découle donc que, dans ce cas, le premier glyphe couvre les caractères 0 et 1.
À l’inverse, 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 indices de chaîne.
Les indices de chaîne correspondent à la chaîne, accessible de manière facultative via ` sourceString()`.
Cette fonction a été introduite dans Qt 6.5.
Voir également setStringIndexes(), sourceString() et QTextLayout::glyphRuns().
[noexcept] void QGlyphRun::swap(QGlyphRun &other)
Permet d'échanger cette instance de série de glyphes contre celle de other. Cette opération est très rapide et ne rencontre jamais d'échec.
bool QGlyphRun::underline() const
Renvoie « true » si cet élément « QGlyphRun » doit être affiché avec un soulignement.
Voir également setUnderline() et flags().
bool QGlyphRun::operator!=(const QGlyphRun &other) const
Compare l'objet ` other ` à cet objet ` QGlyphRun `. Renvoie ` true ` si l'un des éléments de la liste des index de glyphes, de la liste des positions ou de la police est différent ; sinon, renvoie ` false`.
QGlyphRun &QGlyphRun::operator=(const QGlyphRun &other)
Attribue l'other à cet objet QGlyphRun.
bool QGlyphRun::operator==(const QGlyphRun &other) const
Compare other à cet objet QGlyphRun. Renvoie true si la liste des indices de glyphes, la liste des positions et la police sont toutes identiques ; 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.