QList<QGlyphRun> QTextFragment::glyphRuns() const { if (!p || !n) return QList<QGlyphRun>(); int pos = position(); int len = length(); if (len == 0) return QList<QGlyphRun>(); int blockNode = p->blockMap().findNode(pos); const QTextBlockData *blockData = p->blockMap().fragment(blockNode); QTextLayout *layout = blockData->layout; QList<QGlyphRun> ret; for (int i=0; i<layout->lineCount(); ++i) { QTextLine textLine = layout->lineAt(i); ret += textLine.glyphs(pos, len); } return ret; }