After hours of immense frustration I think I have managed fix the 
layout bugs Martin observed. The persistent block redraw was the 
easy one -- it was caused by the fact that fp_Run::setX was 
designed to always clear screen on changes of iX, the line layout 
requires two passes in the first of which iX is set to a temporary 
value, and the second it is adjusted depending on the type of 
alignment. This meant that at least 1, but mostly two unnecessary 
redraws were carried out. I have changed setX, so that it is 
possible to set X without clearing screen.

The missalignment caused by deletion of the paragraph break 
should be fixed too -- it was not a bug in my code though :-).

The justified alignment not kicking in was the worst to work out. It 
only effected the non-bidi build and even though it required only a 
trivial fix, there was steam coming from my ears by the time I found 
it -- it was in fp_Line::layout(), but it really was not obvious.

I have also fixed some bidi bugs related to the glyph shaping, and 
the one causing segmentation faults reported by Joaquin.

Tomas

Files modified: fp_TextRun.cpp/h, fp_Line.cpp, fp_Run.cpp/h, 
fl_BlockLayout.cpp/h, fb_LineBreaker.cpp

Reply via email to