instiki/public/MathJax/jax/output/HTML-CSS/jax.js

17 lines
59 KiB
JavaScript
Raw Normal View History

/*
2011-01-28 02:12:00 +01:00
* /MathJax/jax/output/HTML-CSS/jax.js
*
* Copyright (c) 2010 Design Science, Inc.
*
* Part of the MathJax library.
* See http://www.mathjax.org for details.
*
* Licensed under the Apache License, Version 2.0;
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*/
2011-06-01 21:35:18 +02:00
(function(c,d,e){var a;var b=MathJax.Object.Subclass({timeout:5*1000,FontInfo:{STIX:{family:"STIXSizeOneSym",testString:"() {} []"},TeX:{family:"MathJax_Size1",testString:"() {} []"}},comparisonFont:["sans-serif","monospace","script","Times","Courier","Arial","Helvetica"],testSize:["40px","50px","60px","30px","20px"],Init:function(){this.div=MathJax.HTML.addElement(document.body,"div",{style:{position:"absolute",visibility:"hidden",top:0,left:0,width:"auto",padding:0,border:0,margin:0,textAlign:"left",textIndent:0,textTransform:"none",lineHeight:"normal",letterSpacing:"normal",wordSpacing:"normal",fontSize:this.testSize[0],fontWeight:"normal",fontStyle:"normal"}},[""]);this.text=this.div.firstChild},findFont:function(j,g){if(g&&this.testCollection(g)){return g}for(var h=0,f=j.length;h<f;h++){if(j[h]===g){continue}if(this.testCollection(j[h])){return j[h]}}return null},testCollection:function(f){return this.testFont(this.FontInfo[f])},testFont:function(h){if(h.isWebFont&&e.FontFaceBug){this.div.style.fontWeight=this.div.style.fontStyle="normal"}else{this.div.style.fontWeight=(h.weight||"normal");this.div.style.fontStyle=(h.style||"normal")}var g=this.getComparisonWidths(h.testString,h.noStyleChar);if(g){this.div.style.fontFamily="'"+h.family+"',"+this.comparisonFont[0];if(this.div.offsetWidth==g[0]){this.div.style.fontFamily="'"+h.family+"',"+this.comparisonFont[g[2]];if(this.div.offsetWidth==g[1]){return false}}if(this.div.offsetWidth!=g[3]){if(h.noStyleChar||!e.FONTDATA||!e.FONTDATA.hasStyleChar){return true}for(var j=0,f=this.testSize.length;j<f;j++){if(this.testStyleChar(h,this.testSize[j])){return true}}}}return false},styleChar:String.fromCharCode(61437),versionChar:String.fromCharCode(61438),compChar:String.fromCharCode(61439),testStyleChar:function(h,j){var m=3+(h.weight?2:0)+(h.style?4:0);var g="",i=0;var l=this.div.style.fontSize;this.div.style.fontSize=j;if(e.msieItalicWidthBug&&h.style==="italic"){this.text.nodeValue=g=this.compChar;i=this.div.offsetWidth}if(e.safariTextNodeBug){this.div.innerHTML=this.compChar+g}else{this.text.nodeValue=this.compChar+g}var f=this.div.offsetWidth-i;if(e.safariTextNodeBug){this.div.innerHTML=this.styleChar+g}else{this.text.nodeValue=this.styleChar+g}var k=Math.floor((this.div.offsetWidth-i)/f+0.5);if(k===m){if(e.safariTextNodeBug){this.div.innerHTML=this.versionChar+g}else{this.text.nodeValue=this.versionChar+g}h.version=Math.floor((this.div.offsetWidth-i)/f+1.5)/2}this.div.style.fontSize=l;return(k===m)},getComparisonWidths:function(j,h){if(e.FONTDATA&&e.FONTDATA.hasStyleChar&&!h){j+=this.styleChar+" "+this.compChar}if(e.safariTextNodeBug){this.div.innerHTML=j}else{this.text.nodeValue=j}this.div.style.fontFamily=this.comparisonFont[0];var g=this.div.offsetWidth,l=-1;if(e.safariWebFontSerif){this.div.style.fontFamily=e.safariWebFontSerif[0];l=this.div.offsetWidth}for(var k=1,f=this.comparisonFont.length;k<f;k++){this.div.style.fontFamily=this.comparisonFont[k];if(this.div.offsetWidth!=g){return[g,this.div.offsetWidth,k,l]}}return null},loadWebFont:function(g){d.Startup.signal.Post("HTML-CSS Jax - Web-Font "+e.fontInUse+"/"+g.directory);var i=MathJax.Message.File("Web-Font "+e.fontInUse+"/"+g.directory);var f=MathJax.Callback({});var h=MathJax.Callback(["loadComplete",this,g,i,f]);c.timer.start(c,[this.checkWebFont,g,h],1,this.timeout);return f},loadComplete:function(h,j,g,f){MathJax.Message.Clear(j);if(f===c.STATUS.OK){g();return}this.loadError(h);if(d.Browser.isFirefox&&e.allowWebFonts){var i=document.location.protocol+"//"+document.location.hostname;if(document.location.port!=""){i+=":"+document.location.port}i+="/";if(c.fileURL(e.webfontDir).substr(0,i.length)!==i){this.firefoxFontError(h)}}e.loadWebFontError(h,g)},loadError:function(f){MathJax.Message.Set("Can't load web font "+e.fontInUse+"/"+f.directory,null,2000)},firefoxFontError:function(f){MathJax.Message.Set("Firefox can't load web fonts from a remote host",null,3000)},checkWebFont:function(f,g,h){if(f.time(h)){return}if(e.Font.testFont(g)){h(f.STATUS.OK)}else{setTimeout(f,f.delay)}},fontFace:function(h){var i=e.all