Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
To draw a text line, the previous behaviour didn't rely only on the text actually set on the layout, but also relied on the fact that the line was cut again when drawn. This change removes the line cutting when drawing, and thus only relies on the line splitting done during the layout. This fixes a bug causing some words not being displayed at the end of a text line drawn with hinting, and the actual drawing size with hinting was bigger than the size calculated during the layout. The text included in the drawn layout object was sometimes not cut at the right position, it was longer but cut when actually drawn. This commit also fixes this, by always setting the right text in the layout object. Fixing this bug enables us to remove a hack introduced to fight against an "accumulation of floating point errors". I now think that "it wasn't our war"™. I think that the real reasons of this hack were probably: - a problem with trailing spaces in the shrink-to-fit functions fixed in commit 3a620db, and - this line-cutting bug while drawing, fixed now. I've tried hard to reproduce the shink-to-fit problem without this hack, with no success. I don't see anymore how it can theorically happen with the current code of the "preferred" module. The only bug fixed by this hack that I've been able to reproduce is the hinting problem explained in the first paragraph, and this bug is now really fixed. Moreover, this hack used to cause another problem: as the maximum size allowed to an inline block was actually bigger than the real size available in the line, an inline block whose size was between the real and the allowed sizes was put on a new line by the split_inline_box function. This commit fixes #288, the bug reported about this problem.
- Loading branch information