You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.9 KiB
37 lines
1.9 KiB
|
|
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];
|