MathML entities don't degrade gracefully

I think the inclusion of the MathML entities in HTML5 regardless of a  
MathML context violates the Degrade Gracefully design principle of the  
HTML WG. The entities don't add anything to the expressiveness of the  
language: anything that you can express with the entities you can also  
express with numeric character references or by using UTF-8 directly.  
However,  when an author uses entities that have not been  
traditionally supported by HTML, the rendering of the document in  
legacy user agents will be worse than in the situation where numeric  
character references or direct UTF-8 is used.

Could we get away with not supporting the MathML entity set in text/ 
html, considering that MathML subtrees are expected to be generated by  
converter software anyway?

As for application/xhtml+xml, the situation is even worse. DTDs don't  
work on the Web[1] and are mostly useless legacy. So far, HTML 5 has  
encouraged DTDlessness for XHTML5--and rightly so. Using the MathML  
entities in XML requires a doctype, because otherwise the document  
would be ill-formed. Browsers won't fetch a DTD based on the doctype,  
so we need to consider existing magic public IDs and potential future  
public IDs. Either way, the situation will be bad from the point of  
view of the Degrade Gracefully design principle:

When an old magic public ID is used, Firefox renders the right  
character, Safari shows an XML parse error and Opera renders a  
placeholder that looks like an entity reference.[2]

When a future public ID is used, Firefox shows an XML parse error,  
Safari shows an XML parse error and Opera renders a placeholder that  
looks like an entity reference.[3]

The result in Opera is bad in application/xhtml+xml although no worse  
than in text/html. In Safari, MathML entities in application/xhtml+xml  
are dramatically user experience-breaking in both public ID cases. In  
Firefox, using an old magic public ID would work, but trying to  
introduce *any* new public ID *ever* would lead to a dramatically bad  
experience in old versions.

Wouldn't it be better to just say "No" to the MathML entities on the  
Web and ask MathML generators to produce Unicode directly? (The few  
people who write MathML by hand are probably proficient enough to  
parse with DTD and re-serialize without DTD at their end before  
sending the re-serialized document over the public network.)

[1] http://hsivonen.iki.fi/no-dtd/
[2] http://hsivonen.iki.fi/test/moz/math-entity-known-dtd.xhtml
[3] http://hsivonen.iki.fi/test/moz/math-entity-unknown-dtd.xhtml
-- 
Henri Sivonen
hsivonen@iki.fi
http://hsivonen.iki.fi/

Received on Thursday, 24 April 2008 13:29:35 UTC