display list attributes revisted


Does anyone have any thoughts on how layout schema attributes should
be represented in the display list?  

Typically, as Bruce pointed out to me, an operator such as a
parenthesis will have attributes like "stretchy=true" set from an
operator dictionary by the parser.  However, the user can override the
default attribute settings with mark up, so there should be a mechanism
for setting attributes in the display list.  

The parser *could* just reach into the renderer's guts and set
attributes in the display list data structure.  However,
philosophically, I would prefer that the renderer be a black box that
gets instructions from the parser exclusively through the display
list.  This is certainly desirable if we release the display list as
an open specification, as we were discussing on Monday.

Here are a couple of proposals.  Note they certainly relate to our
earlier discussion of how a font change mechanism might work.

Proposal 1:  Add an optional attribute list to each schema.

Examples:    (mo "(" attr="stretchy:false")
		(mi "x")
		(mo "+")
		(mi "y")
Pros:  	      This is probably the most intuitive place for attributes
Cons:	      It is lots messier to parse.
Proposal 2:  Introduce an attribute construct

Examples:    (attribute "stretchy: false"
		(mo "(")

	     (attribute "linebreak: false"
		  (mi "x")
		  (mo "+")
		  (mi "y")
Pros:  	     Easy to parse, and very flexible
Cons:	     More verbose, and it is not properly a schema like the others

Let me know if you have any ideas.