vcl/source/gdi/sallayout.cxx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
New commits: commit a0d112a53023758a28d180ffd12766b4d325bf52 Author: Tor Lillqvist <t...@collabora.com> 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 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 libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits