Take into account additional requested spacing on break characters.
authorJason Edmeades <us@the-edmeades.demon.co.uk>
Wed, 23 Feb 2005 12:42:17 +0000 (12:42 +0000)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 23 Feb 2005 12:42:17 +0000 (12:42 +0000)
dlls/x11drv/xrender.c

index f23a13330542b2d95ac165b329e4bf1f0bc3bf22..d27751d28e6e82e41ab8606f05292519a5a8d315 100644 (file)
@@ -1126,7 +1126,8 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
 
     TRACE("real x,y %d,%d\n", x, y);
 
-    if((char_extra = GetTextCharacterExtra(hdc)) != 0) {
+    char_extra = GetTextCharacterExtra(hdc);
+    if(char_extra || breakExtra) {
         UINT i;
        SIZE tmpsz;
         deltas = HeapAlloc(GetProcessHeap(), 0, count * sizeof(INT));
@@ -1137,6 +1138,10 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
                GetTextExtentPointI(hdc, glyphs + i, 1, &tmpsz);
                deltas[i] = tmpsz.cx;
            }
+            
+            if (breakExtra && wstr[i] == tm.tmBreakChar) {
+                deltas[i] = deltas[i] + breakExtra;
+            }
        }
     } else if(lpDx)
         deltas = (INT*)lpDx;