<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">qt-bugs@ issue : 
bugs.kde.org number : 
applied: no
author: Dirk Mueller &lt;mueller@kde.org&gt;

according to bug 345459, this fix for stacking letters from 3.3.8 
made it only a lot worse. revert.


--- src/kernel/qfontengine_x11.cpp	
+++ src/kernel/qfontengine_x11.cpp	
@@ -2672,23 +2655,16 @@ bool QOpenType::positionAndAdd(QShaperIt
             // ###### fix the case where we have y advances. How do we handle this in Uniscribe?????
             if (positions[i].new_advance) {
                 item-&gt;advances[i] = item-&gt;flags &amp; QTextEngine::RightToLeft
-                                    ? -qRound((positions[i].x_advance &gt;&gt; 6)*scale)
+                                    ? -qRound((positions[i].x_advance &gt;&gt; 6)*scale) 
                                     :  qRound((positions[i].x_advance &gt;&gt; 6)*scale);
             } else {
                 item-&gt;advances[i] += item-&gt;flags &amp; QTextEngine::RightToLeft
-                                     ? -qRound((positions[i].x_advance &gt;&gt; 6)*scale)
+                                     ? -qRound((positions[i].x_advance &gt;&gt; 6)*scale) 
                                      :  qRound((positions[i].x_advance &gt;&gt; 6)*scale);
             }
-            int back = 0;
-	  item-&gt;offsets[i].x = qRound((positions[i].x_pos &gt;&gt; 6)*scale);
-	  item-&gt;offsets[i].y = qRound((positions[i].y_pos &gt;&gt; 6)*scale);
-            while (positions[i-back].back) {
-                back += positions[i - back].back;
-                item-&gt;offsets[i].x += qRound((positions[i - back].x_pos &gt;&gt; 6)*scale);
-	      item-&gt;offsets[i].y += qRound((positions[i - back].y_pos &gt;&gt; 6)*scale);
-            }
-	  item-&gt;offsets[i].y = -item-&gt;offsets[i].y;
-            back = positions[i].back;
+	    item-&gt;offsets[i].x = qRound((positions[i].x_pos &gt;&gt; 6)*scale);
+	    item-&gt;offsets[i].y = -qRound((positions[i].y_pos &gt;&gt; 6)*scale);
+            int back = positions[i].back;
             if (item-&gt;flags &amp; QTextEngine::RightToLeft) {
                 while (back--) {
                     item-&gt;offsets[i].x -= item-&gt;advances[i-back];
</pre></body></html>