QGlyphRun Class
The QGlyphRun class provides direct access to the internal glyphs in a font. More...
| Header: | #include <QGlyphRun> |
| qmake: | QT += gui |
| Since: | Qt 4.8 |
This class was introduced in Qt 4.8.
Public Types
| enum | GlyphRunFlag { Overline, Underline, StrikeOut, RightToLeft, SplitLigature } |
Detailed Description
When Qt displays a string of text encoded in Unicode, it will first convert the Unicode points into a list of glyph indexes and a list of positions based on one or more fonts. The Unicode representation of the text and the QFont object will in this case serve as a convenient abstraction that hides the details of what actually takes place when displaying the text on-screen. For instance, by the time the text actually reaches the screen, it may be represented by a set of fonts in addition to the one specified by the user, e.g. in case the originally selected font did not support all the writing systems contained in the text.
Under certain circumstances, it can be useful as an application developer to have more low-level control over which glyphs in a specific font are drawn to the screen. This could for instance be the case in applications that use an external font engine and text shaper together with Qt. QGlyphRun provides an interface to the raw data needed to get text on the screen. It contains a list of glyph indexes, a position for each glyph and a font.
It is the user's responsibility to ensure that the selected font actually contains the provided glyph indexes.
QTextLayout::glyphRuns() or QTextFragment::glyphRuns() can be used to convert unicode encoded text into a list of QGlyphRun objects, and QPainter::drawGlyphRun() can be used to draw the glyphs.
Note: Please note that QRawFont is considered local to the thread in which it is constructed. This in turn means that a new QRawFont will have to be created and set on the QGlyphRun if it is moved to a different thread. If the QGlyphRun contains a reference to a QRawFont from a different thread than the current, it will not be possible to draw the glyphs using a QPainter, as the QRawFont is considered invalid and inaccessible in this case.
Member Type Documentation
enum QGlyphRun::GlyphRunFlag
This enum describes flags that alter the way the run of glyphs might be presented or behave in a visual layout. The layout which generates the glyph runs can set these flags based on relevant internal data, to retain information needed to present the text as intended by the user of the layout.
| Constant | Value | Description |
|---|---|---|
QGlyphRun::Overline | 0x01 | Indicates that the glyphs should be visualized together with an overline. |
QGlyphRun::Underline | 0x02 | Indicates that the glyphs should be visualized together with an underline. |
QGlyphRun::StrikeOut | 0x04 | Indicates that the glyphs should be struck out visually. |
QGlyphRun::RightToLeft | 0x08 | Indicates that the glyphs are ordered right to left. This can affect the positioning of other screen elements that are relative to the glyph run, such as an inline text object. |
QGlyphRun::SplitLigature | 0x10 | Indicates that the glyph run splits a ligature glyph. This means that a ligature glyph is included in the run, but the characters represented by it corresponds only to part of that ligature. The glyph run's boundingRect() function can in this case be used to retrieve the area covered by glyphs that correspond to the characters represented by the glyph run. When visualizing the glyphs, care needs to be taken to clip to this bounding rect to ensure that only the corresponding part of the ligature is painted. In particular, this can be the case when retrieving a glyph run from a QTextLayout for a specific character range, e.g. when retrieving the selected area of a QTextLayout. |
This enum was introduced or modified in Qt 5.0.