void QPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
{
+ const QTextItemInt &ti = static_cast<const QTextItemInt &>(textItem);
+
QPainterPath path;
path.setFillRule(Qt::WindingFill);
- path.addText(p, textItem.font(), textItem.text());
+ if (ti.glyphs.numGlyphs)
+ ti.fontEngine->addOutlineToPath(p.x(), p.y(), ti.glyphs, &path);
if (!path.isEmpty()) {
painter()->save();
painter()->setRenderHint(QPainter::Antialiasing,
const QFontMetricsF fontmetrics(f);
const qreal linewidth = fontmetrics.lineWidth();
const qreal textwidth = (fontmetrics.width('x') * text.size());
-#if 0
+ // TODO: implement underline style in QFont
if (f.underline()) {
addRect(point.x(), point.y() + fontmetrics.underlinePos(), textwidth, linewidth);
}
-#endif
if (f.overline()) {
addRect(point.x(), point.y() - fontmetrics.overlinePos(), textwidth, linewidth);
}
analysis->flags = QScriptAnalysis::Tab;
break;
default:
- uint ucs4 = *uc;
- if (QChar::isHighSurrogate(*uc) && (uc + 1) < e && QChar::isLowSurrogate(*(uc + 1))) {
- ucs4 = QChar::surrogateToUcs4(*uc, *(uc + 1));
- ++uc;
- }
- QUnicodeTables::Script script = QUnicodeTables::script(ucs4);
+ QUnicodeTables::Script script = QUnicodeTables::script(*uc);
analysis->script = script == QUnicodeTables::Inherited ? lastScript : script;
analysis->flags = QScriptAnalysis::None;
break;