OSDN Git Service

revert changes to text underlining for now
authorIvailo Monev <xakepa10@gmail.com>
Thu, 27 Jan 2022 15:58:23 +0000 (17:58 +0200)
committerIvailo Monev <xakepa10@gmail.com>
Thu, 27 Jan 2022 15:58:23 +0000 (17:58 +0200)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/gui/painting/qpaintengine.cpp
src/gui/painting/qpainterpath.cpp
src/gui/text/qtextengine.cpp

index 14eaea9..cd21789 100644 (file)
@@ -648,9 +648,12 @@ void QPaintEngine::drawPath(const QPainterPath &)
 
 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,
index 8b59772..9dda7e0 100644 (file)
@@ -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);
         }
index 7ee947a..067d4da 100644 (file)
@@ -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;