Commercially printed publications, such as newspapers and magazines, significantly use grid-based page layouts and designs. In the 1920s and 1940s, designers Mondrian and Le Corbusier created ordered grid-based design systems for printing various types of document content. These grid-based design systems were further improved in Switzerland after World War II and, in the 1950s and 1960s, rapidly spread throughout the world as the standard for commercial publications. Today, grid-based design systems remain universally implemented in a variety of publication systems.
Several successful software systems exist that support grid-based page designs. Products such as MICROSOFT PUBLISHER offered by Microsoft Corporation of Redmond, Wash., QUARKXPRESS® offered by Quark, Inc. of Denver, Colo., and ADOBE PAGEMAKER® offered by Adobe Systems Incorporated of San Jose, Calif. have become the industry standards for commercial publishing and desktop publishing. Although these software systems are adequate for their intended purpose, the actual mapping of page elements, such as text, images, and sidebars, to grid positions within a document layout remains a manual process. Typically, grid-based document layout is customized for one specific page size, such as an 8½-by-11 inch sheet of paper. There is, however, no obvious way for these customized layouts to adapt to a range of page sizes and other viewing conditions in a graceful manner (i.e., also referred to herein as “document-reflow”).
Because grid-based document layout remains a manual process, grid-based design systems generally do not support “document-reflow.” Systems that do support the reflowing of document content, such as MICROSOFT WORD and hypertext mark-up language (HTML), typically consider the document content as a single one-dimensional flow that snakes from one page to the next and, therefore, lose the original grid-based document layout.
The difficulty of generalizing grid-based designs explains the generally inferior nature of on-screen layouts compared to similar printed layouts. As screen resolutions of display devices begin to match the resolution quality of a printed page, there arises a need to easily and automatically adapt grid-based document designs to arbitrarily-sized electronic displays. This problem is arguably one of the greatest remaining impediments to creating on-line reading experiences that rival those of ink on paper. On-screen reading experience may eventually surpass the experience of reading paper, because computers provide a multitude of opportunities for customization and style, as well as capabilities such as animation and interactivity.
Adaptive grid-based document layout requires flexible pagination for the mapping of document content to a set of discrete pages. The discrete pages may be subject to various constraints such as the sequential ordering of words in a stream of text, the finite capacity of the pages, and the dependencies between the content within a document (e.g., textual references to figures or tables). Finding a desirable pagination is often difficult when one or more additional types of content, such as figures or tables, are involved.
To acquire optimal pagination, a measure of success must be defined for each of the appropriate sets of discrete pages. Pagination has the “optimal subproblem” property and, therefore, is solvable by dynamic programming. Any optimal solution of n pages would inherently contain an optimal solution of n−1 pages. Typically, a dynamic programming paginator starts with an empty solution set and incrementally adds and solves a subproblem (e.g., a subset of discrete pages) to find an appropriate set of discrete pages. Additionally, the dynamic programming paginator keeps a table of each subproblem's score (e.g., a measure of success based on a predetermined metric) and a pointer back to the preceding subproblem in the optimal solution. A new subproblem is evaluated by scanning the table for the preceding subproblem with the best score that may properly precede the new subproblem. Accordingly, the dynamic programming paginator evaluates each of the possible predecessors of each new subproblem. Unfortunately, there may be a significant number of predecessors of each new subproblem to evaluate, with a vast majority not even qualifying as valid predecessors of the new subproblem. Therefore, the dynamic programming paginator inefficiently conducts evaluations of unusable predecessor subproblems and, thus, slows down the speed of pagination.