QGlyphRun Class
La clase QGlyphRun proporciona acceso directo a los glifos internos de una fuente. Más...
| Cabecera: | #include <QGlyphRun> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- Lista de todos los miembros, incluyendo los heredados
- QGlyphRun es parte de Clases Implícitamente Compartidas.
Tipos Públicos
| enum | GlyphRunFlag { Overline, Underline, StrikeOut, RightToLeft, SplitLigature } |
| flags | GlyphRunFlags |
Funciones Públicas
| 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 |
Descripción Detallada
Cuando Qt muestra una cadena de texto codificada en Unicode, primero convertirá los puntos Unicode en una lista de índices de glifos y una lista de posiciones basada en una o más fuentes. La representación Unicode del texto y el objeto QFont servirán en este caso como una cómoda abstracción que oculta los detalles de lo que realmente ocurre al mostrar el texto en pantalla. Por ejemplo, en el momento en que el texto llega realmente a la pantalla, puede estar representado por un conjunto de fuentes además del especificado por el usuario, por ejemplo, en caso de que la fuente seleccionada originalmente no admita todos los sistemas de escritura contenidos en el texto.
En determinadas circunstancias, puede ser útil como desarrollador de aplicaciones tener un control de más bajo nivel sobre qué glifos de una fuente específica se dibujan en la pantalla. Este podría ser el caso, por ejemplo, en aplicaciones que utilizan un motor de fuentes externo y un modelador de texto junto con Qt. QGlyphRun proporciona una interfaz a los datos en bruto necesarios para obtener texto en la pantalla. Contiene una lista de índices de glifos, una posición para cada glifo y una fuente.
Es responsabilidad del usuario asegurarse de que la fuente seleccionada contiene realmente los índices de glifos proporcionados.
QTextLayout::glyphRuns() o QTextFragment::glyphRuns() pueden utilizarse para convertir texto codificado unicode en una lista de objetos QGlyphRun, y QPainter::drawGlyphRun() puede utilizarse para dibujar los glifos.
Nota: Ten en cuenta que QRawFont se considera local al hilo en el que se construye. Esto a su vez significa que un nuevo QRawFont tendrá que ser creado y establecido en el QGlyphRun si es movido a un thread diferente. Si el QGlyphRun contiene una referencia a un QRawFont de un hilo diferente al actual, no será posible dibujar los glifos utilizando un QPainter, ya que el QRawFont se considera inválido e inaccesible en este caso.
Documentación de tipos de miembros
enum QGlyphRun::GlyphRunFlag
flags QGlyphRun::GlyphRunFlags
Este enum describe las banderas que alteran la forma en que la serie de glifos puede presentarse o comportarse en un diseño visual. La maqueta que genera las ejecuciones de glifos puede establecer estas banderas basándose en datos internos relevantes, para retener la información necesaria para presentar el texto tal y como pretende el usuario de la maqueta.
| Constante | Valor | Descripción |
|---|---|---|
QGlyphRun::Overline | 0x01 | Indica que los glifos deben visualizarse junto con una sobrelínea. |
QGlyphRun::Underline | 0x02 | Indica que los glifos deben visualizarse junto con un subrayado. |
QGlyphRun::StrikeOut | 0x04 | Indica que los glifos deben visualizarse tachados. |
QGlyphRun::RightToLeft | 0x08 | Indica que los glifos se ordenan de derecha a izquierda. Esto puede afectar a la posición de otros elementos de la pantalla relativos al recorrido del glifo, como un objeto de texto en línea. |
QGlyphRun::SplitLigature | 0x10 | Indica que el recorrido del glifo divide un glifo ligado. Esto significa que un glifo de ligadura está incluido en la tirada, pero los caracteres representados por él corresponden sólo a una parte de esa ligadura. La función boundingRect() de la tirada de glifos puede utilizarse en este caso para recuperar el área cubierta por los glifos que corresponden a los caracteres representados por la tirada de glifos. Al visualizar los glifos, hay que tener cuidado de recortar a este rectángulo delimitador para asegurarse de que sólo se pinta la parte correspondiente de la ligadura. En particular, este puede ser el caso cuando se recupera una tirada de glifos de un QTextLayout para un rango de caracteres específico, por ejemplo, cuando se recupera el área seleccionada de un QTextLayout. |
El tipo GlyphRunFlags es un typedef para QFlags<GlyphRunFlag>. Almacena una combinación OR de valores GlyphRunFlag.
Documentación de las funciones miembro
QGlyphRun::QGlyphRun()
Construye un objeto QGlyphRun vacío.
QGlyphRun::QGlyphRun(const QGlyphRun &other)
Construye un objeto QGlyphRun que es una copia de other.
[noexcept] QGlyphRun::~QGlyphRun()
Destruye el QGlyphRun.
QRectF QGlyphRun::boundingRect() const
Devuelve el rectángulo más pequeño que contiene todos los glifos en este QGlyphRun. Si se ha establecido un rectángulo delimitador mediante setBoundingRect(), se devolverá. En caso contrario, el rectángulo de contorno se calculará basándose en las métricas de fuente de los glifos de la ejecución de glifos.
Véase también setBoundingRect().
void QGlyphRun::clear()
Borra todos los datos del objeto QGlyphRun.
QGlyphRun::GlyphRunFlags QGlyphRun::flags() const
Devuelve las banderas establecidas para este QGlyphRun.
Véase también setFlags() y setFlag().
QList<quint32> QGlyphRun::glyphIndexes() const
Devuelve los índices de glifos de este objeto QGlyphRun.
Véase también setGlyphIndexes() y setPositions().
bool QGlyphRun::isEmpty() const
Devuelve true si QGlyphRun no contiene ningún glifo.
bool QGlyphRun::isRightToLeft() const
Devuelve true si este QGlyphRun contiene glifos pintados de derecha a izquierda.
Véase también setRightToLeft() y flags().
bool QGlyphRun::overline() const
Devuelve true si este QGlyphRun debe pintarse con una decoración de sobrelínea.
Véase también setOverline() y flags().
QList<QPointF> QGlyphRun::positions() const
Devuelve la posición del borde de la línea de base para cada glifo en este conjunto de índices de glifos.
Véase también setPositions().
QRawFont QGlyphRun::rawFont() const
Devuelve la fuente seleccionada para este objeto QGlyphRun.
Véase también setRawFont().
void QGlyphRun::setBoundingRect(const QRectF &boundingRect)
Establece el rectángulo delimitador de los glifos en este QGlyphRun para que sea boundingRect. Este rectángulo será devuelto por boundingRect() a menos que sea nulo, en cuyo caso se devolverá el rectángulo de los glifos en la ejecución de glifos.
Nota: A menos que esté implementando el modelado de texto, no debería tener que utilizar esta función. Se utiliza específicamente cuando QGlyphRun debe representar un área menor que el área de los glifos que contiene. Esto podría ocurrir, por ejemplo, si el recorrido de los glifos se recupera llamando a QTextLayout::glyphRuns() y el rango especificado sólo incluye parte de una ligadura (donde dos o más caracteres se combinan en un único glifo). En este caso, el rectángulo delimitador sólo debería incluir la parte apropiada del glifo de la ligadura, basándose en un cálculo de la anchura media de los caracteres de la ligadura.
Para admitir este caso (un ejemplo son las selecciones que deben dibujarse con un color distinto del color del texto principal), es necesario recortar el mecanismo de pintado al rectángulo devuelto por boundingRect() para evitar dibujar todo el glifo de ligadura.
Véase también boundingRect().
void QGlyphRun::setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true)
Si enabled es verdadero, se activa flag; en caso contrario, se desactiva.
Véase también flags() y setFlags().
void QGlyphRun::setFlags(QGlyphRun::GlyphRunFlags flags)
Establece las banderas de este QGlyphRun a flags.
Véase también setFlag() y flags().
void QGlyphRun::setGlyphIndexes(const QList<quint32> &glyphIndexes)
Establece los índices de glifos para este objeto QGlyphRun en glyphIndexes. Los índices de glifos deben ser válidos para la fuente seleccionada.
Véase también glyphIndexes().
void QGlyphRun::setOverline(bool overline)
Indica que este QGlyphRun debe pintarse con una decoración de sobrelínea si overline es verdadero. En caso contrario, QGlyphRun se pintará sin decoración de sobrelínea.
Véase también overline(), setFlag() y setFlags().
void QGlyphRun::setPositions(const QList<QPointF> &positions)
Establece las posiciones del borde de la línea de base para cada glifo en este conjunto de índices de glifos en positions.
Véase también positions().
void QGlyphRun::setRawData(const quint32 *glyphIndexArray, const QPointF *glyphPositionArray, int size)
Establece los índices y posiciones de los glifos de este QGlyphRun para utilizar los primeros elementos de size en las matrices glyphIndexArray y glyphPositionArray. Los datos no se copian. El invocador debe garantizar que las matrices no se borran mientras exista este QGlyphRun y cualquier copia del mismo.
Véase también setGlyphIndexes() y setPositions().
void QGlyphRun::setRawFont(const QRawFont &rawFont)
Establece la fuente en la que buscar los índices de glifos en la dirección rawFont especificada.
Véase también rawFont() y setGlyphIndexes().
void QGlyphRun::setRightToLeft(bool rightToLeft)
Indica que este QGlyphRun contiene glifos que deben ordenarse de derecha a izquierda si rightToLeft es verdadero. En caso contrario, se asume que el orden de los glifos es de izquierda a derecha.
Véase también isRightToLeft(), setFlag() y setFlags().
[since 6.5] void QGlyphRun::setSourceString(const QString &sourceString)
Establece la cadena correspondiente al glifo ejecutado en sourceString. Si se establece, los índices devueltos por stringIndexes() deben ser índices en esta cadena.
Esta función se introdujo en Qt 6.5.
Véase también sourceString() y stringIndexes().
void QGlyphRun::setStrikeOut(bool strikeOut)
Indica que este QGlyphRun debe pintarse con una decoración de tachado si strikeOut es verdadero. En caso contrario, QGlyphRun se pintará sin decoración de tachado.
Véase también strikeOut(), setFlag() y setFlags().
[since 6.5] void QGlyphRun::setStringIndexes(const QList<qsizetype> &stringIndexes)
Establece la lista de índices de cadenas correspondientes a los índices de glifos a stringIndexes
Véase stringIndexes() para más detalles sobre las convenciones de esta lista.
Esta función se introdujo en Qt 6.5.
Véase también stringIndexes() y sourceString().
void QGlyphRun::setUnderline(bool underline)
Indica que este QGlyphRun debe pintarse con una decoración de subrayado si underline es verdadero. En caso contrario, QGlyphRun se pintará sin decoración de subrayado.
Véase también underline(), setFlag() y setFlags().
[since 6.5] QString QGlyphRun::sourceString() const
Devuelve la cadena correspondiente a la ejecución del glifo, si la ejecución del glifo se ha creado a partir de una cadena y la cadena se ha solicitado al diseño.
Esta función se introdujo en Qt 6.5.
Véase también setSourceString(), stringIndexes() y QTextLayout::glyphRuns().
bool QGlyphRun::strikeOut() const
Devuelve true si este QGlyphRun debe pintarse con una decoración de tachado.
Véase también setStrikeOut() y flags().
[since 6.5] QList<qsizetype> QGlyphRun::stringIndexes() const
Devuelve los índices de cadena correspondientes a cada índice de glifo, si la tirada de glifos se ha construido a partir de una cadena y se han solicitado índices de cadena a la disposición. En este caso, la longitud del vector devuelto corresponderá a la longitud de glyphIndexes(). En los demás casos, estará vacío.
Dado que un mismo glifo puede corresponder a varios caracteres de la cadena de origen, puede haber huecos en la lista de índices de cadenas. Por ejemplo, si la cadena "primero" es procesada por una fuente que contiene una ligadura para el par de caracteres "fi", entonces la cadena de cinco caracteres generará una serie de glifos que consistirá en sólo cuatro glifos. En este caso, los índices de los glifos pueden ser (1, 2, 3, 4) (cuatro índices de glifos arbitrarios), mientras que los índices de las cadenas serían (0, 2, 3, 4). Los glifos están en el orden lógico de la cadena, por lo que está implícito que el primer glifo abarca los caracteres 0 y 1 en este caso.
A la inversa, un mismo carácter también puede generar varios glifos, en cuyo caso habrá entradas duplicadas en la lista de índices de cadena.
Los índices de cadena corresponden a la cadena, disponible opcionalmente a través de sourceString().
Esta función se introdujo en Qt 6.5.
Véase también setStringIndexes(), sourceString() y QTextLayout::glyphRuns().
[noexcept] void QGlyphRun::swap(QGlyphRun &other)
Intercambia esta instancia de ejecución de glifo con other. Esta operación es muy rápida y nunca falla.
bool QGlyphRun::underline() const
Devuelve true si este QGlyphRun debe ser pintado con una decoración de subrayado.
Véase también setUnderline() y flags().
bool QGlyphRun::operator!=(const QGlyphRun &other) const
Compara other con este objeto QGlyphRun. Devuelve true si alguno de los índices de la lista de glifos, la lista de posiciones o la fuente son diferentes, en caso contrario devuelve false.
QGlyphRun &QGlyphRun::operator=(const QGlyphRun &other)
Asigna other a este objeto QGlyphRun.
bool QGlyphRun::operator==(const QGlyphRun &other) const
Compara other con este objeto QGlyphRun. Devuelve true si la lista de índices de glifos, la lista de posiciones y la fuente son iguales, en caso contrario devuelve 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.