summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Hosny <khaledhosny@eglug.org>2013-12-08 22:30:28 +0200
committerCaolán McNamara <caolanm@redhat.com>2013-12-09 16:50:13 +0000
commit8351eb25302a28c70ef5b2aaa1189db949dcf443 (patch)
tree987d49fce1a419effad2fb99f2d81395f1fff57f
parentf7b42987c4247244b23f0405fc5af58a92afd945 (diff)
fdo#72488: Broken text when showing visible space
Turning on showing nonprinting characters replaces the space with bullet character, but still draws the text with the original kern array, this works fine until there are ligatures involving the space character as the number of glyphs after replacing the space with the bullet will be different and the kern array will be completely off. This is a hack that gives up on replacing the space with a bullet when its width is zero, not sure if it would interfere with other legitimate uses. Change-Id: If5a929dd6acffe018dc26f15ba31c9f91294d256 Reviewed-on: https://gerrit.libreoffice.org/7004 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sw/source/core/txtnode/fntcache.cxx8
1 files changed, 7 insertions, 1 deletions
diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx
index 0f882dc7705d..0ccbbc66fe6a 100644
--- a/sw/source/core/txtnode/fntcache.cxx
+++ b/sw/source/core/txtnode/fntcache.cxx
@@ -1569,7 +1569,13 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
for( sal_Int32 i = 0; i < aStr.getLength(); ++i )
if( CH_BLANK == aStr[ i ] )
- aStr = aStr.replaceAt(i, 1, OUString(CH_BULLET));
+ {
+ /* fdo#72488 Hack: try to see if the space is zero width
+ * and don't bother with inserting a bullet in this case.
+ */
+ if (pKernArray[i + nCopyStart] != pKernArray[ i + nCopyStart + 1])
+ aStr = aStr.replaceAt(i, 1, OUString(CH_BULLET));
+ }
}
sal_Int32 nCnt = rInf.GetText().getLength();