vcl/source/gdi/sallayout.cxx |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

New commits:
commit c08f837133226e85c9c4585b6135177b7c86d985
Author: Tor Lillqvist <[email protected]>
Date:   Wed Nov 25 13:24:09 2015 +0200

    tdf#95783: Don't calculate width of text with glyph fallback as way too wide
    
    The old code in MultiSalLayout::GetTextBreak() only makes sense if the
    base level character width is zero where a fallback level has a
    non-zero character width, and vice versa. But this is not the case for
    Windows, at least not any more now when using UniscribeLayout and not
    SimpleWinLayout.
    
    This simple change fixes that: Only use the width from a fallback
    level if the width at the base level is zero. Hopefully it does not
    cause regressions for other documents or on other platforms. (But, I
    repeat, I find it hard to believe that the intent of the code could
    really have been to ever add two or more non-zero widths for the same
    character from different levels of fallback and use that.)
    
    Change-Id: Ic66c55db4b7463f9e04fcedec76f1c44f5e62e03
    (cherry picked from commit a0d112a53023758a28d180ffd12766b4d325bf52)

diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index e17184c..50bef05 100644
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -1865,9 +1865,12 @@ sal_Int32 MultiSalLayout::GetTextBreak( DeviceCoordinate 
nMaxWidth, DeviceCoordi
         fUnitMul /= rLayout.GetUnitsPerPixel();
         for( int i = 0; i < nCharCount; ++i )
         {
-            DeviceCoordinate w = pCharWidths[ i + nCharCount ];
-            w = (DeviceCoordinate)(w * fUnitMul + 0.5);
-            pCharWidths[ i ] += w;
+            if( pCharWidths[ i ] == 0 )
+            {
+                DeviceCoordinate w = pCharWidths[ i + nCharCount ];
+                w = (DeviceCoordinate)(w * fUnitMul + 0.5);
+                pCharWidths[ i ] = w;
+            }
         }
     }
 
_______________________________________________
Libreoffice-commits mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to