From 288907d29b25b0a390c20b3daddddc440953d050 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Sun, 20 Mar 2011 07:51:59 -0400 Subject: [PATCH] Worked around crippled VML implementaion in IE8 and IE9 --- jax/output/HTML-CSS/autoload/menclose.js | 2 +- .../jax/output/HTML-CSS/autoload/menclose.js | 38 +++++++++++++------ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/jax/output/HTML-CSS/autoload/menclose.js b/jax/output/HTML-CSS/autoload/menclose.js index 87c058c65..735e485f4 100644 --- a/jax/output/HTML-CSS/autoload/menclose.js +++ b/jax/output/HTML-CSS/autoload/menclose.js @@ -12,5 +12,5 @@ * http://www.apache.org/licenses/LICENSE-2.0 */ -MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var d="1.1";var a=MathJax.ElementJax.mml,b=MathJax.OutputJax["HTML-CSS"];var c="http://www.w3.org/2000/svg";var f="urn:schemas-microsoft-com:vml";var e="mjxvml";a.menclose.Augment({toHTML:function(K){var h=this.getValues("notation","thickness","padding","mathcolor","color");if(h.color&&!this.mathcolor){h.mathcolor=h.color}if(h.thickness==null){h.thickness=".075em"}if(h.padding==null){h.padding=".2em"}var F=b.length2em(h.padding);var y=b.length2em(h.thickness);var u=b.Em(y)+" solid";K=this.HTMLcreateSpan(K);var r=b.createStack(K);var o=b.createBox(r);this.HTMLmeasureChild(0,o);var w=o.bbox.h+F+y,A=o.bbox.d+F+y,j=o.bbox.w+2*(F+y);var z=b.createFrame(r,w+A,0,j,y,"none");z.id="MathJax-frame-"+this.spanID;b.addBox(r,z);r.insertBefore(z,o);var k=h.notation.split(/ /);var l=0,E=0,n=0,s=0,x=0,v=0;var C,g;if(!h.mathcolor){h.mathcolor="black"}else{K.style.color=h.mathcolor}for(var J=0,I=k.length;J=8){document.namespaces.add(e,f,"#default#VML")}else{document.namespaces.add(e,f);document.createStyleSheet().addRule(e+"\\: *","{behavior: url(#default#VML)}")}}}});MathJax.Hub.Startup.signal.Post("HTML-CSS menclose Ready");MathJax.Ajax.loadComplete(b.autoloadDir+"/menclose.js")}); diff --git a/unpacked/jax/output/HTML-CSS/autoload/menclose.js b/unpacked/jax/output/HTML-CSS/autoload/menclose.js index 11ac8854a..7fb3dc9f8 100644 --- a/unpacked/jax/output/HTML-CSS/autoload/menclose.js +++ b/unpacked/jax/output/HTML-CSS/autoload/menclose.js @@ -22,7 +22,7 @@ */ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { - var VERSION = "1.1"; + var VERSION = "1.1.1"; var MML = MathJax.ElementJax.mml, HTMLCSS = MathJax.OutputJax["HTML-CSS"]; @@ -61,10 +61,15 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { case MML.NOTATION.ROUNDEDBOX: if (HTMLCSS.useVML) { if (!vml) {vml = this.HTMLvml(stack,H,D,W,t,values.mathcolor)} - this.HTMLvmlElement(vml,"roundrect",{ + // roundrect.arcsize can't be set in IE8 standards mode, so use a path + var r = Math.floor(1000*Math.min(W,H+D)-2*t); + var w = Math.floor(4000*(W-2*t)), h = Math.floor(4000*(H+D-2*t)); + this.HTMLvmlElement(vml,"shape",{ style: {width:this.HTMLpx(W-2*t),height:this.HTMLpx(H+D-2*t), - left:this.HTMLpx(t)+.5,top:this.HTMLpx(t)+.5}, - arcsize: ".25" + left:this.HTMLpx(t,.5),top:this.HTMLpx(t,.5)}, + path: "m "+r+",0 qx 0,"+r+" l 0,"+(h-r)+" qy "+r+","+h+" "+ + "l "+(w-r)+","+h+" qx "+w+","+(h-r)+" l "+w+","+r+" qy "+(w-r)+",0 x e", + coordsize: w+","+h }); } else { if (!svg) {svg = this.HTMLsvg(stack,H,D,W,t,values.mathcolor)} @@ -80,7 +85,7 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { if (!vml) {vml = this.HTMLvml(stack,H,D,W,t,values.mathcolor)} this.HTMLvmlElement(vml,"oval",{ style: {width:this.HTMLpx(W-2*t),height:this.HTMLpx(H+D-2*t), - left:this.HTMLpx(t)+.5,top:this.HTMLpx(t)+.5} + left:this.HTMLpx(t,.5),top:this.HTMLpx(t,.5)} }); } else { if (!svg) {svg = this.HTMLsvg(stack,H,D,W,t,values.mathcolor)} @@ -151,9 +156,11 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { case MML.NOTATION.RADICAL: if (HTMLCSS.useVML) { if (!vml) {vml = this.HTMLvml(stack,H,D,W,t,values.mathcolor)} - this.HTMLvmlElement(vml,"polyline",{ - points: this.HTMLpx(t/2)+","+this.HTMLpx(.6*(H+D))+" "+this.HTMLpx(p)+","+this.HTMLpx(H+D-t)+ - " "+this.HTMLpx(2*p)+","+this.HTMLpx(t/2)+" "+this.HTMLpx(W)+","+this.HTMLpx(t/2) + this.HTMLvmlElement(vml,"shape",{ + style: {width:this.HTMLpx(W), height:this.HTMLpx(H+D)}, + path: "m "+this.HTMLpt(t/2,.6*(H+D))+" l "+this.HTMLpt(p,H+D-t)+" "+ + this.HTMLpt(2*p,t/2)+" "+this.HTMLpt(W,t/2)+" e", + coordsize: this.HTMLpt(W,H+D) }); dx = p; } else { @@ -199,6 +206,7 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { }, HTMLpx: function (n) {return (n*HTMLCSS.em)}, + HTMLpt: function (x,y) {return Math.floor(1000*x)+','+Math.floor(1000*y)}, HTMLhandleColor: function (span) { var frame = document.getElementById("MathJax-frame-"+this.spanID); @@ -233,7 +241,9 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { return vml; }, HTMLvmlElement: function (vml,type,def) { - var obj = HTMLCSS.addElement(vml,vmlns+":"+type,def); + var obj = HTMLCSS.addElement(vml,vmlns+":"+type); + obj.style.position = "absolute"; obj.style.left = obj.style.top = 0; + MathJax.Hub.Insert(obj,def); // IE8 needs to do this after obj is added to the page if (!def.fillcolor) {obj.fillcolor = "none"} if (!def.strokecolor) {obj.strokecolor = this.constructor.VMLcolor} if (!def.strokeweight) {obj.strokeweight =this.constructor.VMLthickness} @@ -242,11 +252,15 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { MathJax.Hub.Browser.Select({ MSIE: function (browser) { + MML.menclose.Augment({HTMLpx: function (n,d) {return (n*HTMLCSS.em+(d||0))+"px"}}); HTMLCSS.useVML = true; if (!document.namespaces[vmlns]) { - document.namespaces.add(vmlns,VMLNS); - var sheet = document.createStyleSheet(); - sheet.addRule(vmlns+"\\:*","{behavior: url(#default#VML); position:absolute; top:0; left:0}"); + if (document.documentMode && document.documentMode >= 8) { + document.namespaces.add(vmlns,VMLNS,"#default#VML"); + } else { + document.namespaces.add(vmlns,VMLNS); + document.createStyleSheet().addRule(vmlns+"\\: *","{behavior: url(#default#VML)}"); + } } } });