Vincent, I have finally studied your prototype. It looks very good. Your method is basically the same as you put forward during your GSoC work: a single sequence of feasible nodes, mixing both line and pagebreak nodes.
I found the programming style quite compact, and had trouble getting into understanding the code. The naming also did not help: A LineLayout class which has a member lineLayout which is a Layout object. A member layouts which has a member layouts. I did some renaming to make this clearer to myself: OneLevelLayout, TwoLevelLayout, and layoutsholder which holds a list, called layouts, of Layouts. The lineLayout member of LineLayout is somewhat redundant: members previous and alternatives do not play a role; lineLayout.progress.partNumber counts the lines in a paragraph, and is only used to skip the first layout of a paragraph in the layout dump. This redundant information can be misleading when one tries to understand the algorithm. The prototype now needs an input module which allows more testing. The module should allow one to input boxes of various height. This will help discover errors in the resulting layout. When I have time I will try to use a module similar to the one I used in my own prototype for Knuth elements (see my website). It would be nice if you would try to enable ms windows users to work with your prototype: /tmp does not exist on ms windows. Re your wiki page: dot files can be rendered on ms windows. Regards, Simon -- Simon Pepping home page: http://www.leverkruid.eu