Hello, I have published another update at http://www.leverkruid.eu/GKPLinebreaking/index.html. With this update I consider my essay and test implementation complete.
Regards, Simon On Mon, Apr 03, 2006 at 09:38:13PM +0200, Simon Pepping wrote: > Hello, > > Some time ago Manuel Mall pointed out a number of problems with > linebreaking in FOP. Specifically, there are some hard to solve > problems with suppression of whitespace before a linebreak. > > I propose that the problems can be solved using a generalized set of > building blocks (a.k.a. Knuth elements): > > 1. Box, with elastic width. A box has two boolean properties: > > 1. suppress-at-linebreak, default value false. According to > the FO specification, in the default case in an FO text > it is true for the space character U+0020. The user may > deviate from the default and set it to false for the > space character, and to true for other characters. > > 2. is-BP, default value false. This property indicates > whether a box corresponds to a border and/or a padding > width. It is true for boxes which are generated by > padding widths and borders. > > 2. Penalty, with a penalty value and two elastic widths. When the > penalty element is the chosen linebreak, it contributes the > first elastic width before the linebreak and the second elastic > width after the linebreak. > > Penalties are legal breakpoints. Boxes are not. > > On my website I have published a detailed account of my proposal in > the essay 'Generalized Knuth-Plass Linebreaking Algorithm'. In order > to test my ideas in practice, I have written a simple implementation > in Java of this approach. -- Simon Pepping home page: http://www.leverkruid.eu