blob: b9c3dd55e47a3417cb7722e86bb43b4b238fc54d (plain
Loosening content for printing
The role of functions placed in loosen.c is rearranging the printed content in
such a way that it will fit in the page width. The methods were chosen
according to the look of different pages after applying them, not on the base of
The page content is loosened in three passes. The next pass is applied only
if the previous didn't give a satisfying result. The later a pass is applied
the bigger interference in the page arrengement it means.
In the first pass the changes are applied to those elements which don't have
a chance to get entirely into the visibile scope of width - words which are
too long for the available page width, objects positioned beyond the page
borders and objects to big to fit a page.
The second pass handles too big tables. The tables can be divided into two kinds
- those responsible for page layout and those used only for holding data. For
both of them some routines are used. Text in the cells is shrunken and broken,
if this doesn't help the table cells are changed into inline containers as the
table is problably a layout one.
The third pass removes all margins and paddings. This saves a lot of space but
makes also the page much less readable, for this reason it is the last step of