[Prev][Next][Index][Thread]

SGML style display list specification



Hello all.

Here is a very rough proposal for the underlying "display layer" for
the HTML Math proposal.  I needed some specification for the prototype
renderer we are working on here, and Splitting this out as a separate
piece seems to make sense on a number of levels, so we did.  This is
basically the result of a long weekend with Neil, so I wouldn't dream
of calling it finished.  I expect lots of useful criticism...

Robert

----------------------------------------------------------------------


HTML Math Display Language Specification -- Draft

1. Introduction

We propose describing the display language as an SGML application.
The language consists of 17 entity tags, taking around 40 attributes.
Some attributes, like font size, are global.  Others, like fraction
line width apply to a specific schema.  Still others are attached to
an operator, such as whether it stretches.  

These schema, together with extended character font support, provide
enough information to typeset roughly on a par with TeX.  My
implementation of it won't be as good as that, mostly because of time
and fonts, but I hope it will be respectable.  

Since they all attempt to do the same thing, it is no surprise this
proposal looks a fair amount like ISO 12083, and Dave's expired HTML
Math 3.0 spec.  It is somewhat more structured than 12083, I believe,
and it includes more attributes than the old 3.0 spec.

2. Rationale

First, we propose SGML because it integrates into the web better.
Bruce's notation is elegant and terse, but it doesn't deal with
attributes as intuitively, and the way we have conceived the task,
attributes are important.  Moreover, since the user's will need to be
able to override all these things, there will have to be sgml
equivalents *anyway*.  Finally, we intend that most users will use
HTML Math Source, a much more natural and terse language, and the
*parser* will generate the dispaly language.

3. Entities

	Tag		Description
	-----------	------------------------------------

	Attribute and Mode control
	
	<math>		mode delimiter
	<mattribute>	set attributes

	Basic Types

	<maccent>	math accent 
	<mi>		identifier 
	<mn>		number
	<mo>		operator

	Math Layout Schema

	<mfrac>		fraction
	<moverunder>	over and underscripts
	<mprescripts>	prescripts
	<mroot>		radical
	<mscripts>	sub and superscripts

	Math Array Schema

	<marray>	analogous to <table>
	<mr>		analogous to <tr> (table row)
	<md>		analogous to <td> (table data cell)
	
	Container Schema

	<mrow>		Generic text row container
	<mbox>		Used to mask internal structure
	
	Http and Java Interaction
	
	<maction>

4. Attributes

		Attribute and Mode control

Tag		Attribute	Values			Default
--------------	------------	---------------------------------------

<MATH>		mode = 		inline | display	inline

		fontsize =	(number)		(ambient)
		fontweight	plain | bold 		automatic
		fontslant	plain | italic		automatic
		fontfamily	(string)		TimesRoman
		fontcolor	#rrggbb			#000000
		bkground	#rrggbb			(browser's)

<MATTRIBUTE>	all

ATTRIBUTE is used to override any attribute within it's scope.  This
is in contrast to setting an attribute within a schema tag, in which
case the attribute is changed in that schema only, and does not
descend to its children.


			Basic Types

Tag		Attribute	Values			Default
--------------	------------	---------------------------------------

<MACCENT>	stretchy	ture | false		automatic

<MI>		fontsize =	(number)		(ambient)
		fontweight	plain | bold 		automatic
		fontslant	plain | italic		automatic
		fontfamily	(string)		TimesRoman
		fontcolor	#rrggbb			#000000
		bkground	#rrggbb			(browser's)
		
<MN>		none that I can think of

<MO>		lspace		(number)		set by dictionary
		rspace		(number)		set by dictionary
		strechy		true | false		set by dictionary
		maxsize		(number)		set by dictionary
		minsize		(number)		set by dictionary
		largeop		true | false		dictionary & mode
		movescripts	true | false		dictionary & mode


			Math Layout Schema

Tag		Attribute	Values			Default
--------------	------------	---------------------------------------

<MFRAC>		linewidth	(number)		.2 (x-height)

<MOVERUNDER>	position	inline | display	automatic

<MPRESCRIPTS>	sizemultiple	(number)		.71
		minsize		(number)		5 pt
		minseparation	(number)		.3 (x-height)
		baseshift	(number)		1 (x-height)

<MROOT>		xpos		(number)		0 (m-width)
		ypos		(number)		0 (m-width)

<MSCRIPTS>	sizemultiple	(number)		.71
		minsize		(number)		5 pt
		minseparation	(number)		.3 (x-height)
		baseshift	(number)		1 (x-height)

			Math Array Schema

Tag		Attribute	Values			Default
--------------	------------	---------------------------------------

<MARRAY>	layout		left [n] | center [n] | right [n] |
				solid [n] | dashed [n]

				Default is layout = "center center ..."

		align		top | bottom | center | axis [n]
				
				Default is align = "center"

		padding		(number)		1 (m-width)
		equalrows	true | false		true
		equalcols	true | false		true
		

<MR>		layout		top | center | axis | base | bottom 

				Default is base
		linebelow	none | solid | dashed	none

<MD>		rowspan		(number)		1
		colspan		(number)		1
		rowalign	top | center | axis | base | bottom 
		colalign	left | center | right
	
		
			Container Schema

Tag		Attribute	Values			Default
--------------	------------	---------------------------------------

<MBOX>		same as the <MATH> tag
<MROW>		same as the <MATH> tag



 		     Http and Java Interaction

Tag		Attribute	Values			Default
--------------	------------	---------------------------------------

<MACTION>	href		URL		my personal homepage ;-)
		statusline	(string)	none
		others ??





Follow-Ups: