From 3635c66da11d3aea409224fc52a48985aed64afe Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 27 Jan 2022 17:58:23 +0200 Subject: [PATCH] revert changes to text underlining for now Signed-off-by: Ivailo Monev --- src/gui/painting/qpaintengine.cpp | 5 ++++- src/gui/painting/qpainterpath.cpp | 3 +-- src/gui/text/qtextengine.cpp | 7 +------ 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/gui/painting/qpaintengine.cpp b/src/gui/painting/qpaintengine.cpp index 14eaea926..cd2178916 100644 --- a/src/gui/painting/qpaintengine.cpp +++ b/src/gui/painting/qpaintengine.cpp @@ -648,9 +648,12 @@ void QPaintEngine::drawPath(const QPainterPath &) void QPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem) { + const QTextItemInt &ti = static_cast(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, diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp index 8b5977246..9dda7e02a 100644 --- a/src/gui/painting/qpainterpath.cpp +++ b/src/gui/painting/qpainterpath.cpp @@ -1163,11 +1163,10 @@ void QPainterPath::addText(const QPointF &point, const QFont &f, const QString & 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); } diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 7ee947ad2..067d4da7c 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -316,12 +316,7 @@ void QTextEngine::itemize() const 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; -- 2.11.0