diff options
Diffstat (limited to 'opensuse/core/qt3/revert-qt-3.3.8-khmer-fix.diff')
-rw-r--r-- | opensuse/core/qt3/revert-qt-3.3.8-khmer-fix.diff | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/opensuse/core/qt3/revert-qt-3.3.8-khmer-fix.diff b/opensuse/core/qt3/revert-qt-3.3.8-khmer-fix.diff new file mode 100644 index 000000000..385e6111a --- /dev/null +++ b/opensuse/core/qt3/revert-qt-3.3.8-khmer-fix.diff @@ -0,0 +1,36 @@ + +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->advances[i] = item->flags & QTextEngine::RightToLeft +- ? -qRound((positions[i].x_advance >> 6)*scale) ++ ? -qRound((positions[i].x_advance >> 6)*scale) + : qRound((positions[i].x_advance >> 6)*scale); + } else { + item->advances[i] += item->flags & QTextEngine::RightToLeft +- ? -qRound((positions[i].x_advance >> 6)*scale) ++ ? -qRound((positions[i].x_advance >> 6)*scale) + : qRound((positions[i].x_advance >> 6)*scale); + } +- int back = 0; +- item->offsets[i].x = qRound((positions[i].x_pos >> 6)*scale); +- item->offsets[i].y = qRound((positions[i].y_pos >> 6)*scale); +- while (positions[i-back].back) { +- back += positions[i - back].back; +- item->offsets[i].x += qRound((positions[i - back].x_pos >> 6)*scale); +- item->offsets[i].y += qRound((positions[i - back].y_pos >> 6)*scale); +- } +- item->offsets[i].y = -item->offsets[i].y; +- back = positions[i].back; ++ item->offsets[i].x = qRound((positions[i].x_pos >> 6)*scale); ++ item->offsets[i].y = -qRound((positions[i].y_pos >> 6)*scale); ++ int back = positions[i].back; + if (item->flags & QTextEngine::RightToLeft) { + while (back--) { + item->offsets[i].x -= item->advances[i-back]; |