In yesterday's blog I suggested the idea of super-styles. These are properties of elements which sit above the kinds of typesetting mechanisms our current generation of typesetting and office applications provide. They specify the rhetorical characteristics of an element that the rendering should expose.
In a parallel universe, we could imagine a typesetting system that used these super-styles directly to select a whole range of different typesetting mechanisms on the current element and also its contained and surrounding elements.
In this kind of system, the elements in a document get superstyle properties, and these properties are used to select both page layouts and the particular styles or typesetting property values to use, perhaps by a nearest fit system.
So what might these super-style properties be? The names are unimportant, but here is my unscientific working list, repeating yesterday's. I think many typesetting features can be boiled down to these: the idea of super-styles is to be able to ask and answer questions "What is being said by this style or kind of presentation?": for typesetting, this what is the graphical language operating in this format?
- Announcement which is the need for some element to be graphically separate from its surroundings. This has two flavours: starting and ending.
- Cohesiveness is the need for an element to be on the same page, column or line. I'd distinguish three flavours of this, initial cohesiveness (first page, column, line, etc), final cohesiveness, and general cohesiveness.
- Relevance is the need for an element to be exactly in sequence. I'd distinguish to flavours, forward and backward, which allow floating scoped to progressively more siblings and ancestors.
- Formality is the tendency of an element to fit into certain formal structures: an entirely formal element will have a number and a title and perhaps some metadata.
- Superiority is where the element is somehow above the rest of the parent element and its contents: it may be a heading or a summary. Negative superiority (inferiority) is where the element is somehow below the parent element and its contents: it may be a note, footnote, aside, subsection depending on context and styling
- Specialness is how much an element should be uniquely formatted in ways that distinguish it from other elements. For example, a high degree of uniqueness may trigger a different page layout. The italicization of a latin term is an example of specialness.
- Interestingness is how much an element is signposted as something of interest to the user or external references. Some inline text of high interest might be bolder than its surrounding text. Something of high interest would be expected to have unique identifiers to allow direct location, for example.
Run-in header example For example, consider the example of a run-in header. We have in our instance an element X (or some arbitrary paragraph or sequence of text) which we give the super-style properties of
Announcement.start: medium Announcement.end: negative Cohesiveness.initial: medium Cohesiveness.general: medium Cohesiveness.final: high Relevance.backwards: default Relevance.forwards: high Formality: default Superiority: positive Specialness; default Interestingness: positive
Then our super-styler figures out which typesetting parameters (or defined styles) best fits these settings in context. It might, for example say "Oh, negative announcement end of an element marked superior: sounds like a run-in emphasized text would fit the bill." While we might expect default particular effects for different values of super-style properties, they allow more general changes.
For example, we might say that we expect that every time an element which has slightly positive specialness and slightly negative superiority apears inside another element with the same properties, then extra indentation may be required,
Or we may say that when an element has medium initial announcement and low formality and it does not contain any elements of high formality or high announcement and it has similar siblings then it may be formatted as a bullet list item. Of course there would be more issues for to track, but I hope you get the idea.
Obviously this is very rough. Where do tables fit in? Where do cross-references fit in? Could an application be made which presented users with these super-styling choices and handled the actual typesetting settings using built-in layout and style/theme that were not exposed? Would this work with or against SGML-style structured markup?