diff options
author | peter.spjuth@gmail.com <pspjuth> | 2017-01-25 22:08:59 (GMT) |
---|---|---|
committer | peter.spjuth@gmail.com <pspjuth> | 2017-01-25 22:08:59 (GMT) |
commit | 9fc8dc20a97fd9c4d799dc9fac9ad57e9f0f71d9 (patch) | |
tree | a406cd822ff589ac563a528c8dcb1da18bf60dde | |
parent | 3d435bef35dad863e7c1f47a0c5385ec75980272 (diff) | |
parent | a43ba87d14872bde5b450d17e502ad0d82f38baa (diff) | |
download | tk-9fc8dc20a97fd9c4d799dc9fac9ad57e9f0f71d9.zip tk-9fc8dc20a97fd9c4d799dc9fac9ad57e9f0f71d9.tar.gz tk-9fc8dc20a97fd9c4d799dc9fac9ad57e9f0f71d9.tar.bz2 |
Fix [140ea8ab38]: Long text lines are not drawn on Windows.
-rw-r--r-- | win/tkWinFont.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/win/tkWinFont.c b/win/tkWinFont.c index ea8a7a2..f342f7c 100644 --- a/win/tkWinFont.c +++ b/win/tkWinFont.c @@ -1455,7 +1455,15 @@ MultiFontTextOut( for (p = source; p < end; ) { next = p + TkUtfToUniChar(p, &ch); thisSubFontPtr = FindSubFontForChar(fontPtr, ch, &lastSubFontPtr); - if (thisSubFontPtr != lastSubFontPtr) { + + /* + * The drawing API has a limit of 32767 pixels in one go. + * To avoid spending time on a rare case we do not measure each char, + * instead we limit to drawing chunks of 200 bytes since that works + * well in practice. + */ + + if ((thisSubFontPtr != lastSubFontPtr) || (p-source > 200)) { if (p > source) { familyPtr = lastSubFontPtr->familyPtr; Tcl_UtfToExternalDString(familyPtr->encoding, source, |