Re: behaviour change from 2.5 to 3.0 (or 3.3)
Robin Becker <[email protected]>
| Newsgroups | gmane.comp.python.reportlab.user |
|---|---|
| Message-ID | <[email protected]> |
On 06/07/2016 16:39, Yitzchak Scott-Thoennes wrote: > I'm upgrading a server from ubuntu 12.04 (with reportlab 2.5) to 14.04 > (with reportlab 3.0) and seeing a difference I can't explain. I'd > appreciate it if someone else could explain it. > I'd even more appreciate suggestions for improvement. > > The following code results in "X test" horizontally aligned in 2.5 but > puts the X a line below test in 3.0 or 3.3: > OK I think I solved this. In earlier versions of the code we were less exact about handling long words and the measurements were not exactly right. In old style the blPara.lines attribute constructed by breaklines looks like [(-1.67, ['X'])] in the modern world it looks like [(5.0, [u'']), (-1.67, [u'X'])] your total line length (including the indent 5) is longer than the specified column width. The new paragraph does the indent finds it cannot fit and then throws a linefeed to allow the X to be placed OK. The width of the X is actually 6.67 so it can never actually fit into the allowed width of the lines in the Cell case (which is 10-5==5). However, the old paragraphs never even tried to push/split words to the next line. One could argue that we shouldn't actually throw the linefeed in this case. I think the logic in the split words case may be slightly broken in the case when no split is possible. If I fix that logic so we don't get the empty split then the behaviour reverts to the old style in this special case. You get credit for the bug report thanks :) There will be a fixed package 3.3.14 available later today at https://www.reportlab.com/pypi you just need to sign up for a uid & password which you can get here http://www.reportlab.com/accounts/register/ .......... -- Robin Becker