From: dpvc v. a. <we...@ma...> - 2005-08-20 23:58:33
|
Log Message: ----------- Updated jsMath to v2.1 (which includes the new control panel and the new image font fallback method). You will need to unpack the jsMath-fonts.tar.gz file in the htdocs/jsMath directory to form the htdocs/jsMath/fonts directory. The commands cd htdocs/jsMath tar vfzx jsMath-fonts.tar.gz should do it. Finally, you need to corrections to pg/macros/PG.pl and global.conf.dist to complete the installation. Modified Files: -------------- webwork-modperl/htdocs/jsMath: jsMath-fallback-mac-mozilla.js jsMath-fallback-mac-msie.js jsMath-fallback-mac.js jsMath-fallback-pc.js jsMath-fallback-unix.js jsMath-mozilla.js jsMath-msie-mac.js jsMath.js Added Files: ----------- webwork-modperl/htdocs/jsMath: jsMath-controls.html jsMath-fallback-symbols.js jsMath-fonts.tar.gz jsMath-ww.js webwork-modperl/htdocs/jsMath/plugins: mimeTeX.js noImageFonts.js tex2math.js Revision Data ------------- Index: jsMath-msie-mac.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-msie-mac.js,v retrieving revision 1.1 retrieving revision 1.2 diff -Lhtdocs/jsMath/jsMath-msie-mac.js -Lhtdocs/jsMath/jsMath-msie-mac.js -u -r1.1 -r1.2 --- htdocs/jsMath/jsMath-msie-mac.js +++ htdocs/jsMath/jsMath-msie-mac.js @@ -31,7 +31,7 @@ * possible. */ -jsMath.UpdateTeXfonts({ +jsMath.Update.TeXfonts({ cmr10: { '3': {c: '<FONT FACE="Symbol">L</FONT>', tclass: 'normal'}, Index: jsMath-fallback-mac-msie.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-fallback-mac-msie.js,v retrieving revision 1.2 retrieving revision 1.3 diff -Lhtdocs/jsMath/jsMath-fallback-mac-msie.js -Lhtdocs/jsMath/jsMath-fallback-mac-msie.js -u -r1.2 -r1.3 --- htdocs/jsMath/jsMath-fallback-mac-msie.js +++ htdocs/jsMath/jsMath-fallback-mac-msie.js @@ -31,7 +31,7 @@ * */ -jsMath.UpdateTeXfonts({ +jsMath.Update.TeXfonts({ cmr10: { '0': {c: 'G', tclass: 'greek'}, '1': {c: 'D', tclass: 'greek'}, @@ -171,31 +171,31 @@ }); -jsMath.UpdateStyles({ - '.arrow1': 'font-family: Osaka; position: relative; top: .125em; margin: -1px', - '.arrow2': 'font-family: Osaka; position: relative; top: .1em; margin:-1px', - '.bigop1': 'font-family: Symbol; font-size: 110%; position:relative; top: .8em; margin:-.05em', - '.bigop1b': 'font-family: Symbol; font-size: 140%; position: relative; top: .8em; margin:-.1em', - '.bigop1c': 'font-family: Osaka; font-size: 125%; position:relative; top: .85em; margin:-.3em', - '.bigop1cx':'font-family: Apple Chancery; font-size: 125%; position:relative; top: .7em; margin:-.1em', - '.bigop2': 'font-family: Symbol; font-size: 175%; position:relative; top: .8em; margin:-.07em', - '.bigop2a': 'font-family: Baskerville; font-size: 175%; position: relative; top: .65em', - '.bigop2b': 'font-family: Symbol; font-size: 175%; position: relative; top: .8em; margin:-.07em', - '.bigop2c': 'font-family: Osaka; font-size: 230%; position:relative; top: .85em; margin:-.35em', - '.bigop2cx':'font-family: Apple Chancery; font-size: 250%; position:relative; top: .6em; margin-left:-.1em; margin-right:-.2em', - '.delim1b': 'font-family: Times; font-size: 150%; position:relative; top:.8em', - '.delim2b': 'font-family: Times; font-size: 210%; position:relative; top:.75em;', - '.delim3b': 'font-family: Times; font-size: 300%; position:relative; top:.7em;', - '.delim4b': 'font-family: Times; font-size: 400%; position:relative; top:.65em;', - '.symbol3': 'font-family: Symbol', - '.wide1': 'font-size: 50%; position: relative; top:-1.1em', - '.wide2': 'font-size: 80%; position: relative; top:-.7em', - '.wide3': 'font-size: 125%; position: relative; top:-.5em', - '.wide1a': 'font-size: 75%; position: relative; top:-.5em', - '.wide2a': 'font-size: 133%; position: relative; top: -.15em', - '.wide3a': 'font-size: 200%; position: relative; top: -.05em', - '.greek': 'font-family: Symbol' +jsMath.Update.Styles({ + '.arrow1': "font-family: Osaka; position: relative; top: .125em; margin: -1px", + '.arrow2': "font-family: Osaka; position: relative; top: .1em; margin:-1px", + '.bigop1': "font-family: Symbol; font-size: 110%; position:relative; top: .8em; margin:-.05em", + '.bigop1b': "font-family: Symbol; font-size: 140%; position: relative; top: .8em; margin:-.1em", + '.bigop1c': "font-family: Osaka; font-size: 125%; position:relative; top: .85em; margin:-.3em", + '.bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em", + '.bigop2': "font-family: Symbol; font-size: 175%; position:relative; top: .8em; margin:-.07em", + '.bigop2a': "font-family: Baskerville; font-size: 175%; position: relative; top: .65em", + '.bigop2b': "font-family: Symbol; font-size: 175%; position: relative; top: .8em; margin:-.07em", + '.bigop2c': "font-family: Osaka; font-size: 230%; position:relative; top: .85em; margin:-.35em", + '.bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .6em; margin-left:-.1em; margin-right:-.2em", + '.delim1b': "font-family: Times; font-size: 150%; position:relative; top:.8em", + '.delim2b': "font-family: Times; font-size: 210%; position:relative; top:.75em;", + '.delim3b': "font-family: Times; font-size: 300%; position:relative; top:.7em;", + '.delim4b': "font-family: Times; font-size: 400%; position:relative; top:.65em;", + '.symbol3': "font-family: Symbol", + '.wide1': "font-size: 50%; position: relative; top:-1.1em", + '.wide2': "font-size: 80%; position: relative; top:-.7em", + '.wide3': "font-size: 125%; position: relative; top:-.5em", + '.wide1a': "font-size: 75%; position: relative; top:-.5em", + '.wide2a': "font-size: 133%; position: relative; top: -.15em", + '.wide3a': "font-size: 200%; position: relative; top: -.05em", + '.greek': "font-family: Symbol" }); -jsMath.InitStyles(); +jsMath.Setup.Styles(); Index: jsMath-fallback-mac-mozilla.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-fallback-mac-mozilla.js,v retrieving revision 1.2 retrieving revision 1.3 diff -Lhtdocs/jsMath/jsMath-fallback-mac-mozilla.js -Lhtdocs/jsMath/jsMath-fallback-mac-mozilla.js -u -r1.2 -r1.3 --- htdocs/jsMath/jsMath-fallback-mac-mozilla.js +++ htdocs/jsMath/jsMath-fallback-mac-mozilla.js @@ -31,7 +31,7 @@ * */ -jsMath.UpdateTeXfonts({ +jsMath.Update.TeXfonts({ cmmi10: { // '41': // leftharpoondown // '43': // rightharpoondown @@ -80,22 +80,22 @@ }); -jsMath.UpdateStyles({ - '.symbol': 'font-family: Osaka', - '.arrow1': 'font-family: Osaka; position: relative; top: .125em; margin: -1px', - '.arrow2': 'font-family: AppleGothic; font-size: 100%; position:relative; top: .11em; margin:-1px', - '.bigop1': 'font-family: AppleGothic; font-size: 110%; position:relative; top: .9em; margin:-.05em', - '.bigop1b': 'font-family: Osaka; font-size: 140%; position: relative; top: .8em; margin:-.1em', - '.bigop1c': 'font-family: AppleGothic; font-size: 125%; position:relative; top: .85em; margin:-.3em', - '.bigop1cx':'font-family: Apple Chancery; font-size: 125%; position:relative; top: .7em; margin:-.1em', - '.bigop2': 'font-family: AppleGothic; font-size: 175%; position:relative; top: .85em; margin:-.1em', - '.bigop2b': 'font-family: Osaka; font-size: 200%; position: relative; top: .75em; margin:-.15em', - '.bigop2c': 'font-family: AppleGothic; font-size: 300%; position:relative; top: .75em; margin:-.35em', - '.bigop2cx':'font-family: Apple Chancery; font-size: 250%; position:relative; top: .7em; margin-left:-.1em; margin-right:-.2em', - '.delim1b': 'font-family: Times; font-size: 150%; position:relative; top:.8em; margin:.01em', - '.delim2b': 'font-family: Times; font-size: 210%; position:relative; top:.8em; margin:.01em', - '.delim3b': 'font-family: Times; font-size: 300%; position:relative; top:.75em; margin:.01em', - '.delim4b': 'font-family: Times; font-size: 400%; position:relative; top:.725em; margin:.01em', +jsMath.Update.Styles({ + '.symbol': "font-family: Osaka", + '.arrow1': "font-family: Osaka; position: relative; top: .125em; margin: -1px", + '.arrow2': "font-family: AppleGothic; font-size: 100%; position:relative; top: .11em; margin:-1px", + '.bigop1': "font-family: AppleGothic; font-size: 110%; position:relative; top: .9em; margin:-.05em", + '.bigop1b': "font-family: Osaka; font-size: 140%; position: relative; top: .8em; margin:-.1em", + '.bigop1c': "font-family: AppleGothic; font-size: 125%; position:relative; top: .85em; margin:-.3em", + '.bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em", + '.bigop2': "font-family: AppleGothic; font-size: 175%; position:relative; top: .85em; margin:-.1em", + '.bigop2b': "font-family: Osaka; font-size: 200%; position: relative; top: .75em; margin:-.15em", + '.bigop2c': "font-family: AppleGothic; font-size: 300%; position:relative; top: .75em; margin:-.35em", + '.bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .7em; margin-left:-.1em; margin-right:-.2em", + '.delim1b': "font-family: Times; font-size: 150%; position:relative; top:.8em; margin:.01em", + '.delim2b': "font-family: Times; font-size: 210%; position:relative; top:.8em; margin:.01em", + '.delim3b': "font-family: Times; font-size: 300%; position:relative; top:.75em; margin:.01em", + '.delim4b': "font-family: Times; font-size: 400%; position:relative; top:.725em; margin:.01em", }); @@ -111,5 +111,5 @@ * Reinstall the styles */ -jsMath.InitStyles(); +jsMath.Setup.Styles(); --- /dev/null +++ htdocs/jsMath/jsMath-controls.html @@ -0,0 +1,300 @@ +<HTML> +<HEAD> +<!-- + | jsMath-controls.html + | + | Part of the jsMath package for mathematics on the web. + | + | This file handles the details of the jsMath control panels + | + | --------------------------------------------------------------------- + | + | jsMath is free software; you can redistribute it and/or modify + | it under the terms of the GNU General Public License as published by + | the Free Software Foundation; either version 2 of the License, or + | (at your option) any later version. + | + | jsMath is distributed in the hope that it will be useful, + | but WITHOUT ANY WARRANTY; without even the implied warranty of + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + | GNU General Public License for more details. + | + | You should have received a copy of the GNU General Public License + | along with jsMath; if not, write to the Free Software + | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +--> +</HEAD> +<BODY> + +<SCRIPT> +while (!window.jsMath) { + try { + window.jsMath = window.parent.jsMath; + if (!window.jsMath) {error()} + } catch (err) { + var showWarning = 1; + if (document.domain.match(/\..*\./) && + (navigator.appName != 'Microsoft Internet Explorer' || + navigator.platform != 'MacPPC' || !navigator.userProfile || !document.all)) { + // + // MSIE on Mac can't change document.domain, and 'try' won't + // catch the error (Grrr!) so don't even try for it + // + try { + document.domain = document.domain.replace(/^[^.]*\./,''); + showWarning = 0; + } catch(err) {} + } + if (showWarning) { + window.jsMath = {Add: function (x,y) {}}; + alert( + "jsMath can't open the control panel, since jsMath was not " + + "obtained from a server that is in the same domain as the " + + "page that loaded it." + ); + } + } +} + +jsMath.Add(jsMath.Controls,{ + + loaded: 1, + + Close: function () { + this.panel.style.display = "none"; + jsMath.Element("jsMath").style.display = (this.cookie.button ? "block" : "none"); + if (this.document.location.protocol == 'file:') return; + for (var id in {scale:1, scaleImg:1, font:1, print:1, autofont:1, alpha:1}) { + if (this.cookie[id] != this.oldCookie[id]) { + this.loaded = 0; + this.document.location.reload(); + return; + } + } + }, + + Main: function () { + this.oldCookie = {}; jsMath.Add(this.oldCookie,this.cookie); + this.panel.innerHTML = ""; // for MSIE on the Mac + this.panel.innerHTML = document.getElementById("jsMath.panel").innerHTML; + + jsMath.Element("fontType").innerHTML = + ({tex:"TeX", + image:"Image", + symbol:"Image symbol", + unicode:"Unicode"})[this.cookie.font]; + + jsMath.Element("mailto").href = + "mailto:dp...@un...?subject=Bug Report for jsMath " + + jsMath.version + " (using " + jsMath.browser + + " in " + this.cookie.font + " mode)"; + + if (this.cookie.print || + (this.cookie.font != 'image' && this.cookie.font != 'symbol')) + {jsMath.Element("resolution").disabled = true} + + /* + * Seems to be a bug in Safari that messes up the button names + * when the page is reloaded after an option change + */ + if (jsMath.browser == 'Safari') { + jsMath.Element("resolution").value = "Hi-Res Fonts for Printing"; + jsMath.Element("opts").value = "Options"; + jsMath.Element("done").value = "Done"; + } + + this.panel.style.display = "block"; + this.openMain = 0; + }, + + Options: function () { + this.panel.innerHTML = ""; // for MSIE on the Mac + this.panel.innerHTML = document.getElementById("jsMath.options").innerHTML; + jsMath.Element("scale").value = this.cookie.scale; + jsMath.Element("keep").value = this.cookie.keep; + for (var id in {autofont:1, scaleImg:1, alpha:1, warn:1, button:1}) { + if (this.cookie[id]) {jsMath.Element(id).checked = true} + } + var font = this.document.getElementsByName("jsMath.font"); + for (var i = 0; i < font.length; i++) { + if ((font[i].value == 'tex' && jsMath.nofonts) || + ((font[i].value == 'symbol' || font[i].value == 'image') && + jsMath.noImgFonts)) { + jsMath.Element(font[i].value+"Text").style.color = "#888888"; + font[i].disabled = true; + } + else if (this.cookie.font == font[i].value) {font[i].checked = true} + } + if (jsMath.noImgFonts) { + jsMath.Element("alphaText").style.color = "#888888"; + jsMath.Element("alpha").disabled = true; + jsMath.Element("scaleImg").disabled = true; + } else if (jsMath.Browser.imgScale != 1) { + jsMath.Element("alphaText").style.color = "#888888"; + jsMath.Element("alpha").disabled = true; + } + + /* + * Seems to be a bug in Safari that messes up the button names + * when the page is reloaded after an option change + */ + if (jsMath.isSafari) { + jsMath.Element("back").value = "Back"; + jsMath.Element("done").value = "Done"; + } + + this.panel.style.display = "block"; + }, + + SaveOptions: function (close) { + this.cookie.scale = jsMath.Element("scale").value; + var font = this.document.getElementsByName("jsMath.font"); + for (var i = 0; i < font.length; i++) + {if (font[i].checked) {this.cookie.font = font[i].value}} + for (var id in {autofont:1, scaleImg:1, alpha:1, warn:1, button:1}) { + this.cookie[id] = jsMath.Element(id).checked ? 1: 0; + } + this.cookie.keep = jsMath.Element("keep").value; + this.SetCookie(1); + if (close) {this.Close()} else {this.Main()} + }, + + PrintResolution: function () { + this.cookie.print = 1; + this.SetCookie(1); + this.Close(); + }, + + NoAuto: function () {jsMath.Element("autofont").checked = false} + +}); + +</SCRIPT> + +<!------------------------------------------------------------> + +<DIV ID="jsMath.panel"> +<DIV STYLE="text-align:center"> +<B STYLE="font-size:large">jsMath +<SCRIPT>document.write('v'+jsMath.version)</SCRIPT></B><BR> +<SMALL>(<SPAN ID="jsMath.fontType">type</SPAN> fonts)</SMALL> +<p> +<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" STYLE="margin:0pt 1em"> +<TR><TD ALIGN="CENTER"><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0"> +<TR><TD ALIGN="CENTER" COLSPAN="2"> +<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0"> +<TR><TD> +<UL STYLE="text-align:left; margin:0pt 0pt; padding-left:1em; padding-bottom:1em"> +<LI><A TARGET="_blank" HREF="http://www.math.union.edu:/locate/jsMath/users/quickstart.html">Quick Start</A></LI> +<LI><A TARGET="_blank" HREF="http://www.math.union.edu:/locate/jsMath">Home Page</A></LI> +<LI><A TARGET="_blank" HREF="http://www.math.union.edu:/locate/jsMath/download/fonts.html">Download Fonts</A></LI> +<LI><A TARGET="_blank" HREF="http://www.math.union.edu:/locate/jsMath/users/">Documentation</A></LI> +<LI><A TARGET="_blank" HREF="http://www.math.union.edu:/locate/jsMath/bugs.html">Known Bugs</A></LI> +<LI><A ID="jsMath.mailto" HREF="mailto:dp...@un...?subject=jsMath Bug Report">Bug Reports</A></LI> +</UL> +</TD></TR> +</TABLE> +</TD></TR> +<TR><TD ALIGN="CENTER" COLSPAN="2"> +<INPUT TYPE="BUTTON" ID="jsMath.resolution" VALUE="Hi-Res Fonts for Printing" + STYLE="width:17em" onClick="jsMath.Controls.PrintResolution()"> +</TD></TR> +<TR><TD HEIGHT="5"></TD></TR> +<TR><TD ALIGN="LEFT"> +<INPUT TYPE="BUTTON" VALUE="Options" ID="jsMath.opts" STYLE="width:8em" onClick="jsMath.Controls.Options()"> + +</TD><TD ALIGN="RIGHT"> +<INPUT TYPE="BUTTON" VALUE="Done" ID="jsMath.done" STYLE="width:8em" onClick="jsMath.Controls.Close()"> +</TD></TR> +</TABLE></TD></TR> +<TR><TD HEIGHT="10"></TD></TR> +<TR><TD ALIGN="CENTER" COLSPAN="2" STYLE="width:20em; font-size:x-small"> +<I>Click on the jsMath floating button or <NOBR>ALT-click</NOBR> on a +mathematical expression to get this dialog at any time.</I> +</TD></TR> +</TABLE><p> +</DIV> +</DIV> + +<!------------------------------------------------------------> + +<DIV ID="jsMath.options"> +<DIV STYLE="text-align:center"> +<B STYLE="font-size:large">jsMath Options</B> <SMALL>[<A TARGET="_blank" HREF="http://www.math.union.edu/locate/jsMath/users/help.html">help</A>]</SMALL> +<p> +<FORM ACTION="javascript:" STYLE"margin:0"> +<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" STYLE="text-align:left"> + +<TR><TD>Scale all mathematics to <INPUT TYPE="TEXT" ID="jsMath.scale" VALUE="100" SIZE="3">%</TD></TR> + +<TR><TD HEIGHT="5"></TD></TR> + +<TR><TD><INPUT TYPE="RADIO" NAME="jsMath.font" VALUE="tex" onClick="jsMath.Controls.NoAuto()"> +<SPAN ID="jsMath.texText">Use native TeX fonts</SPAN> +<SMALL>(<A TARGET="_blank" HREF="http://www.math.union.edu/locate/jsMath/download/fonts.html">download</A>)</SMALL> +</TD></TR> +<TR><TD><INPUT TYPE="RADIO" NAME="jsMath.font" VALUE="image" onClick="jsMath.Controls.NoAuto()"> +<SPAN ID="jsMath.imageText">Use image fonts +(<INPUT TYPE="CHECKBOX" ID="jsMath.scaleImg" VALUE="1"> scalable)</SPAN></TD></TR> +<TR><TD><INPUT TYPE="RADIO" NAME="jsMath.font" VALUE="symbol" onClick="jsMath.Controls.NoAuto()"> +<SPAN ID="jsMath.symbolText">Use images for symbols only</SPAN></TD></TR> +<TR><TD HEIGHT="2"></TD></TR> +<TR><TD><INPUT TYPE="RADIO" NAME="jsMath.font" VALUE="unicode" onClick="jsMath.Controls.NoAuto()"> +Use native Unicode fonts</TD></TR> + +<TR><TD HEIGHT="8"></TD></TR> + +<TR><TD><INPUT TYPE="CHECKBOX" ID="jsMath.autofont" VALUE="1"> Autoselect best font</TD></TR> +<TR><TD><INPUT TYPE="CHECKBOX" ID="jsMath.alpha" VALUE="1"> <SPAN ID="jsMath.alphaText">Use image alpha channels</SPAN></TD></TR> +<TR><TD><INPUT TYPE="CHECKBOX" ID="jsMath.warn" VALUE="1"> Show font warnings</TD></TR> +<TR><TD><INPUT TYPE="CHECKBOX" ID="jsMath.button" VALUE="1"> Show jsMath button</TD></TR> + +<TR><TD HEIGHT="8"></TD></TR> + +<TR><TD>Save settings for + +<SELECT ID="jsMath.keep"> +<OPTION VALUE="0D">this session only +<OPTION VALUE="1D">1 day +<OPTION VALUE="2D">2 days +<OPTION VALUE="3D">3 days +<OPTION VALUE="1W">1 week +<OPTION VALUE="2W">2 weeks +<OPTION VALUE="1M">1 month +<OPTION VALUE="2M">2 months +<OPTION VALUE="3M">3 months +<OPTION VALUE="6M">6 months +<OPTION VALUE="1Y">1 year +<OPTION VALUE="5Y">5 years +</SELECT> + +</TD></TR> + +<TR><TD HEIGHT="13"></TD></TR> + +<TR><TD ALIGN="CENTER"> +<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="100%"> +<TR> +<TD ALIGN="Left"> +<INPUT TYPE="BUTTON" VALUE="Back" ID="jsMath.back" STYLE="width:8em" onClick="jsMath.Controls.SaveOptions(0)"> + +</TD> +<TD ALIGN="RIGHT"> +<INPUT TYPE="BUTTON" VALUE="Done" ID="jsMath.done" STYLE="width:8em" onClick="jsMath.Controls.SaveOptions(1)"> +</TD> +</TR> +</TABLE> +</TD></TR> + +</TABLE> +</FORM> +</DIV> +</DIV> + +<!------------------------------------------------------------> + +<SCRIPT> +if (jsMath.Controls.openMain) {jsMath.Controls.Main()} +</SCRIPT> +</BODY> +</HTML> Index: jsMath-fallback-unix.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath-fallback-unix.js,v retrieving revision 1.1 retrieving revision 1.2 diff -Lhtdocs/jsMath/jsMath-fallback-unix.js -Lhtdocs/jsMath/jsMath-fallback-unix.js -u -r1.1 -r1.2 --- htdocs/jsMath/jsMath-fallback-unix.js +++ htdocs/jsMath/jsMath-fallback-unix.js @@ -594,140 +594,140 @@ cmti10: [ // 00 - 0F - {c: '<I>Γ</I>', tclass: 'greek', ic: 0.133}, + {c: '<I>Γ</I>', ic: 0.133, tclass: 'greek'}, {c: '<I>Δ</I>', tclass: 'greek'}, - {c: '<I>Θ</I>', tclass: 'greek', ic: 0.094}, + {c: '<I>Θ</I>', ic: 0.094, tclass: 'greek'}, {c: '<I>Λ</I>', tclass: 'greek'}, - {c: '<I>Ξ</I>', tclass: 'greek', ic: 0.153}, - {c: '<I>Π</I>', tclass: 'greek', ic: 0.164}, - {c: '<I>Σ</I>', tclass: 'greek', ic: 0.12}, - {c: '<I>Υ</I>', tclass: 'greek', ic: 0.111}, - {c: '<I>Φ</I>', tclass: 'greek', ic: 0.0599}, - {c: '<I>Ψ</I>', tclass: 'greek', ic: 0.111}, - {c: '<I>Ω</I>', tclass: 'greek', ic: 0.103}, - {c: '<I>ff</I>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}}, - {c: '<I>fi</I>', tclass: 'normal', ic: 0.103}, - {c: '<I>fl</I>', tclass: 'normal', ic: 0.103}, - {c: '<I>ffi</I>', tclass: 'normal', ic: 0.103}, - {c: '<I>ffl</I>', tclass: 'normal', ic: 0.103}, + {c: '<I>Ξ</I>', ic: 0.153, tclass: 'greek'}, + {c: '<I>Π</I>', ic: 0.164, tclass: 'greek'}, + {c: '<I>Σ</I>', ic: 0.12, tclass: 'greek'}, + {c: '<I>Υ</I>', ic: 0.111, tclass: 'greek'}, + {c: '<I>Φ</I>', ic: 0.0599, tclass: 'greek'}, + {c: '<I>Ψ</I>', ic: 0.111, tclass: 'greek'}, + {c: '<I>Ω</I>', ic: 0.103, tclass: 'greek'}, + {c: '<I>ff</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'normal'}, + {c: '<I>fi</I>', ic: 0.103, tclass: 'normal'}, + {c: '<I>fl</I>', ic: 0.103, tclass: 'normal'}, + {c: '<I>ffi</I>', ic: 0.103, tclass: 'normal'}, + {c: '<I>ffl</I>', ic: 0.103, tclass: 'normal'}, // 10 - 1F - {c: '<I>ı</I>', a:0, tclass: 'normal', ic: 0.0767}, - {c: '<I>j</I>', d:.2, tclass: 'normal', ic: 0.0374}, + {c: '<I>ı</I>', a:0, ic: 0.0767, tclass: 'normal'}, + {c: '<I>j</I>', d:.2, ic: 0.0374, tclass: 'normal'}, {c: '<I>`</I>', tclass: 'accent'}, - {c: '<I>´</I>', tclass: 'accent', ic: 0.0969}, - {c: '<I>ˇ</I>', tclass: 'accent', ic: 0.083}, - {c: '<I>˘</I>', tclass: 'accent', ic: 0.108}, - {c: '<I>ˉ</I>', tclass: 'accent', ic: 0.103}, + {c: '<I>´</I>', ic: 0.0969, tclass: 'accent'}, + {c: '<I>ˇ</I>', ic: 0.083, tclass: 'accent'}, + {c: '<I>˘</I>', ic: 0.108, tclass: 'accent'}, + {c: '<I>ˉ</I>', ic: 0.103, tclass: 'accent'}, {c: '<I>˚</I>', tclass: 'accent'}, - {c: '<I>?</I>', tclass: 'normal', d: 0.17, w: 0.46}, - {c: '<I>ß</I>', tclass: 'normal', ic: 0.105}, - {c: '<I>æ</I>', a:0, tclass: 'normal', ic: 0.0751}, - {c: '<I>œ</I>', a:0, tclass: 'normal', ic: 0.0751}, - {c: '<I>ø</I>', tclass: 'normal', ic: 0.0919}, - {c: '<I>Æ</I>', tclass: 'normal', ic: 0.12}, - {c: '<I>Œ</I>', tclass: 'normal', ic: 0.12}, - {c: '<I>Ø</I>', tclass: 'normal', ic: 0.094}, + {c: '<I>?</I>', d: 0.17, w: 0.46, tclass: 'normal'}, + {c: '<I>ß</I>', ic: 0.105, tclass: 'normal'}, + {c: '<I>æ</I>', a:0, ic: 0.0751, tclass: 'normal'}, + {c: '<I>œ</I>', a:0, ic: 0.0751, tclass: 'normal'}, + {c: '<I>ø</I>', ic: 0.0919, tclass: 'normal'}, + {c: '<I>Æ</I>', ic: 0.12, tclass: 'normal'}, + {c: '<I>Œ</I>', ic: 0.12, tclass: 'normal'}, + {c: '<I>Ø</I>', ic: 0.094, tclass: 'normal'}, // 20 - 2F - {c: '<I>?</I>', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal', krn: {'108': -0.256, '76': -0.321}}, - {c: '<I>!</I>', lig: {'96': 60}, tclass: 'normal', ic: 0.124, lig: {'96': 60}}, - {c: '<I>”</I>', tclass: 'normal', ic: 0.0696}, - {c: '<I>#</I>', tclass: 'normal', ic: 0.0662}, + {c: '<I>?</I>', krn: {'108': -0.256, '76': -0.321}, tclass: 'normal'}, + {c: '<I>!</I>', ic: 0.124, lig: {'96': 60}, tclass: 'normal'}, + {c: '<I>”</I>', ic: 0.0696, tclass: 'normal'}, + {c: '<I>#</I>', ic: 0.0662, tclass: 'normal'}, {c: '<I>$</I>', tclass: 'normal'}, - {c: '<I>%</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>&</I>', tclass: 'normal', ic: 0.0969}, - {c: '<I>’</I>', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}}, - {c: '<I>(</I>', d:.2, tclass: 'normal', ic: 0.162}, - {c: '<I>)</I>', d:.2, tclass: 'normal', ic: 0.0369}, - {c: '<I>*</I>', tclass: 'normal', ic: 0.149}, - {c: '<I>+</I>', a:.1, tclass: 'normal', ic: 0.0369}, + {c: '<I>%</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>&</I>', ic: 0.0969, tclass: 'normal'}, + {c: '<I>’</I>', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'normal'}, + {c: '<I>(</I>', d:.2, ic: 0.162, tclass: 'normal'}, + {c: '<I>)</I>', d:.2, ic: 0.0369, tclass: 'normal'}, + {c: '<I>*</I>', ic: 0.149, tclass: 'normal'}, + {c: '<I>+</I>', a:.1, ic: 0.0369, tclass: 'normal'}, {c: '<I>,</I>', a:-.3, d:.2, w: 0.278, tclass: 'normal'}, - {c: '<I>-</I>', a:0, lig: {'45': 123}, tclass: 'normal', ic: 0.0283, lig: {'45': 123}}, + {c: '<I>-</I>', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'normal'}, {c: '<I>.</I>', a:-.25, tclass: 'normal'}, - {c: '<I>/</I>', tclass: 'normal', ic: 0.162}, + {c: '<I>/</I>', ic: 0.162, tclass: 'normal'}, // 30 - 3F - {c: '<I>0</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>1</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>2</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>3</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>4</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>5</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>6</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>7</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>8</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>9</I>', tclass: 'normal', ic: 0.136}, - {c: '<I>:</I>', tclass: 'normal', ic: 0.0582}, - {c: '<I>;</I>', tclass: 'normal', ic: 0.0582}, - {c: '<I>¡</I>', tclass: 'normal', ic: 0.0756}, - {c: '<I>=</I>', a:0, d:-.1, tclass: 'normal', ic: 0.0662}, + {c: '<I>0</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>1</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>2</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>3</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>4</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>5</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>6</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>7</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>8</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>9</I>', ic: 0.136, tclass: 'normal'}, + {c: '<I>:</I>', ic: 0.0582, tclass: 'normal'}, + {c: '<I>;</I>', ic: 0.0582, tclass: 'normal'}, + {c: '<I>¡</I>', ic: 0.0756, tclass: 'normal'}, + {c: '<I>=</I>', a:0, d:-.1, ic: 0.0662, tclass: 'normal'}, {c: '<I>¿</I>', tclass: 'normal'}, - {c: '<I>?</I>', lig: {'96': 62}, tclass: 'normal', ic: 0.122, lig: {'96': 62}}, + {c: '<I>?</I>', ic: 0.122, lig: {'96': 62}, tclass: 'normal'}, // 40 - 4F - {c: '<I>@</I>', tclass: 'normal', ic: 0.096}, - {c: '<I>A</I>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}, - {c: '<I>B</I>', tclass: 'normal', ic: 0.103}, - {c: '<I>C</I>', tclass: 'normal', ic: 0.145}, - {c: '<I>D</I>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}}, - {c: '<I>E</I>', tclass: 'normal', ic: 0.12}, - {c: '<I>F</I>', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}, - {c: '<I>G</I>', tclass: 'normal', ic: 0.0872}, - {c: '<I>H</I>', tclass: 'normal', ic: 0.164}, - {c: '<I>I</I>', krn: {'73': 0.0278}, tclass: 'normal', ic: 0.158}, - {c: '<I>J</I>', tclass: 'normal', ic: 0.14}, - {c: '<I>K</I>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}, - {c: '<I>L</I>', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}, - {c: '<I>M</I>', tclass: 'normal', ic: 0.164}, - {c: '<I>N</I>', tclass: 'normal', ic: 0.164}, - {c: '<I>O</I>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}}, + {c: '<I>@</I>', ic: 0.096, tclass: 'normal'}, + {c: '<I>A</I>', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'}, + {c: '<I>B</I>', ic: 0.103, tclass: 'normal'}, + {c: '<I>C</I>', ic: 0.145, tclass: 'normal'}, + {c: '<I>D</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'}, + {c: '<I>E</I>', ic: 0.12, tclass: 'normal'}, + {c: '<I>F</I>', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'}, + {c: '<I>G</I>', ic: 0.0872, tclass: 'normal'}, + {c: '<I>H</I>', ic: 0.164, tclass: 'normal'}, + {c: '<I>I</I>', ic: 0.158, tclass: 'normal'}, + {c: '<I>J</I>', ic: 0.14, tclass: 'normal'}, + {c: '<I>K</I>', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'}, + {c: '<I>L</I>', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'}, + {c: '<I>M</I>', ic: 0.164, tclass: 'normal'}, + {c: '<I>N</I>', ic: 0.164, tclass: 'normal'}, + {c: '<I>O</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'}, // 50 - 5F - {c: '<I>P</I>', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal', ic: 0.103, krn: {'65': -0.0767}}, - {c: '<I>Q</I>', d: 1, tclass: 'normal', ic: 0.094}, - {c: '<I>R</I>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}, - {c: '<I>S</I>', tclass: 'normal', ic: 0.12}, - {c: '<I>T</I>', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}}, - {c: '<I>U</I>', tclass: 'normal', ic: 0.164}, - {c: '<I>V</I>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}, - {c: '<I>W</I>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal', ic: 0.184, krn: {'65': -0.0767}}, - {c: '<I>X</I>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}, - {c: '<I>Y</I>', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}}, - {c: '<I>Z</I>', tclass: 'normal', ic: 0.145}, - {c: '<I>[</I>', d:.1, tclass: 'normal', ic: 0.188}, - {c: '<I>“</I>', tclass: 'normal', ic: 0.169}, - {c: '<I>]</I>', d:.1, tclass: 'normal', ic: 0.105}, - {c: '<I>ˆ</I>', tclass: 'accent', ic: 0.0665}, - {c: '<I>˙</I>', tclass: 'accent', ic: 0.118}, + {c: '<I>P</I>', ic: 0.103, krn: {'65': -0.0767}, tclass: 'normal'}, + {c: '<I>Q</I>', d: 1, ic: 0.094, tclass: 'normal'}, + {c: '<I>R</I>', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'}, + {c: '<I>S</I>', ic: 0.12, tclass: 'normal'}, + {c: '<I>T</I>', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'}, + {c: '<I>U</I>', ic: 0.164, tclass: 'normal'}, + {c: '<I>V</I>', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'}, + {c: '<I>W</I>', ic: 0.184, krn: {'65': -0.0767}, tclass: 'normal'}, + {c: '<I>X</I>', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'}, + {c: '<I>Y</I>', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'}, + {c: '<I>Z</I>', ic: 0.145, tclass: 'normal'}, + {c: '<I>[</I>', d:.1, ic: 0.188, tclass: 'normal'}, + {c: '<I>“</I>', ic: 0.169, tclass: 'normal'}, + {c: '<I>]</I>', d:.1, ic: 0.105, tclass: 'normal'}, + {c: '<I>ˆ</I>', ic: 0.0665, tclass: 'accent'}, + {c: '<I>˙</I>', ic: 0.118, tclass: 'accent'}, // 60 - 6F - {c: '<I>‘</I>', lig: {'96': 92}, tclass: 'normal', ic: 0.124, lig: {'96': 92}}, - {c: '<I>a</I>', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal', ic: 0.0767}, - {c: '<I>b</I>', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}, - {c: '<I>c</I>', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal', ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}, - {c: '<I>d</I>', tclass: 'normal', ic: 0.103, krn: {'108': 0.0511}}, - {c: '<I>e</I>', a:0, tclass: 'normal', ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}, - {c: '<I>f</I>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}}, - {c: '<I>g</I>', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal', ic: 0.0885}, - {c: '<I>h</I>', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal', ic: 0.0767}, - {c: '<I>i</I>', tclass: 'normal', ic: 0.102}, - {c: '<I>j</I>', d:1, tclass: 'normal', ic: 0.145}, - {c: '<I>k</I>', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal', ic: 0.108}, - {c: '<I>l</I>', tclass: 'normal', ic: 0.103, krn: {'108': 0.0511}}, - {c: '<I>m</I>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal', ic: 0.0767}, - {c: '<I>n</I>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal', ic: 0.0767, krn: {'39': -0.102}}, - {c: '<I>o</I>', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}, + {c: '<I>‘</I>', ic: 0.124, lig: {'96': 92}, tclass: 'normal'}, + {c: '<I>a</I>', a:0, ic: 0.0767, tclass: 'normal'}, + {c: '<I>b</I>', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'}, + {c: '<I>c</I>', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'}, + {c: '<I>d</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'}, + {c: '<I>e</I>', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'}, + {c: '<I>f</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'}, + {c: '<I>g</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'}, + {c: '<I>h</I>', ic: 0.0767, tclass: 'normal'}, + {c: '<I>i</I>', ic: 0.102, tclass: 'normal'}, + {c: '<I>j</I>', d:1, ic: 0.145, tclass: 'normal'}, + {c: '<I>k</I>', ic: 0.108, tclass: 'normal'}, + {c: '<I>l</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'}, + {c: '<I>m</I>', a:0, ic: 0.0767, tclass: 'normal'}, + {c: '<I>n</I>', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'normal'}, + {c: '<I>o</I>', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'}, // 70 - 7F - {c: '<I>p</I>', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}, - {c: '<I>q</I>', a:0, d:1, tclass: 'normal', ic: 0.0885}, - {c: '<I>r</I>', a:0, tclass: 'normal', ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}, - {c: '<I>s</I>', a:0, tclass: 'normal', ic: 0.0821}, - {c: '<I>t</I>', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal', ic: 0.0949}, - {c: '<I>u</I>', a:0, krn: {'119': -0.0278}, tclass: 'normal', ic: 0.0767}, - {c: '<I>v</I>', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal', ic: 0.108}, - {c: '<I>w</I>', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal', ic: 0.108, krn: {'108': 0.0511}}, - {c: '<I>x</I>', a:0, tclass: 'normal', ic: 0.12}, - {c: '<I>y</I>', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal', ic: 0.0885}, - {c: '<I>z</I>', a:0, tclass: 'normal', ic: 0.123}, - {c: '<I>–</I>', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal', ic: 0.0921, lig: {'45': 124}}, - {c: '<I>—</I>', a:.1, ic: 0.0278, tclass: 'normal', ic: 0.0921}, - {c: '<I>˝</I>', tclass: 'accent', ic: 0.122}, - {c: '<I>˜</I>', tclass: 'accent', ic: 0.116}, + {c: '<I>p</I>', a:0, d:1, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'}, + {c: '<I>q</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'}, + {c: '<I>r</I>', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'}, + {c: '<I>s</I>', a:0, ic: 0.0821, tclass: 'normal'}, + {c: '<I>t</I>', ic: 0.0949, tclass: 'normal'}, + {c: '<I>u</I>', a:0, ic: 0.0767, tclass: 'normal'}, + {c: '<I>v</I>', a:0, ic: 0.108, tclass: 'normal'}, + {c: '<I>w</I>', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'normal'}, + {c: '<I>x</I>', a:0, ic: 0.12, tclass: 'normal'}, + {c: '<I>y</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'}, + {c: '<I>z</I>', a:0, ic: 0.123, tclass: 'normal'}, + {c: '<I>–</I>', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'normal'}, + {c: '<I>—</I>', a:.1, ic: 0.0921, tclass: 'normal'}, + {c: '<I>˝</I>', ic: 0.122, tclass: 'accent'}, + {c: '<I>˜</I>', ic: 0.116, tclass: 'accent'}, {c: '<I>¨</I>', tclass: 'accent'} ], @@ -879,9 +879,13 @@ */ jsMath.Add(jsMath.Box,{ - TeX: function (c,font,style,size) { - c = jsMath.TeX[font][c]; - if (c.h != null) {c.a = c.h-1.1*jsMath.TeX.x_height; if (c.d == 1) {c.d += .0001}} + + TeX_orig = jsMath.Box.TeX, + + TeX: function (C,font,style,size) { + c = jsMath.TeX[font][C]; + if (c.img != null) {return this.TeX_orig(C,font,style,size)} + if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height} var box = this.Text(c.c,c.tclass,style,size,c.a,c.d); var scale = jsMath.Typeset.TeX(style,size).scale; if (c.bh != null) { @@ -891,9 +895,9 @@ var h = box.bd+box.bh; var ph = Math.round(h*jsMath.em); if (h > jsMath.hd) { - box.bd = c.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c) - + '<IMG SRC="'+jsMath.blank+'" STYLE="' - + 'width: 1; height: '+ph+'px">').h - h; + box.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c) + + '<IMG SRC="'+jsMath.blank+'" STYLE="' + + 'width: 1; height: '+ph+'px">').h - h; box.bh = h - box.bd; } c.bh = box.bh/scale; @@ -909,7 +913,7 @@ } }); -jsMath.UpdateStyles({ +jsMath.Update.Styles({ '.math': 'font-style: normal', '.cmr10': 'font-family: serif', '.cal': 'font-family: cursive', @@ -957,8 +961,8 @@ * Reinstall Styles and fonts */ -jsMath.InitStyles(); -jsMath.InitTeXfonts(); +jsMath.Setup.Styles(); +jsMath.Setup.TeXfonts(); /* * No access to TeX "not" character, so fake this @@ -970,4 +974,4 @@ jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative; jsMath.absoluteHeightVaries = 1; -jsMath.defaultH = 0.8; \ No newline at end of file +jsMath.defaultH = 0.8; Index: jsMath.js =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/htdocs/jsMath/jsMath.js,v retrieving revision 1.14 retrieving revision 1.15 diff -Lhtdocs/jsMath/jsMath.js -Lhtdocs/jsMath/jsMath.js -u -r1.14 -r1.15 --- htdocs/jsMath/jsMath.js +++ htdocs/jsMath/jsMath.js @@ -2,8 +2,6 @@ * * jsMath: Mathematics on the Web * - * Version: 1.7e-ww - * * This jsMath package makes it possible to display mathematics in HTML pages * that are viewable by a wide range of browsers on both the Mac and the IBM PC, * including browsers that don't process MathML. See @@ -33,51 +31,8 @@ /* * Prevent running everything again if this file is loaded twice */ -if (window.jsMath) { - - /* - * We've been loaded a second time, so we want to do asynchronous - * processing instead. - * - * First, mark that we have made the patches, and that we aren't - * processing math at the moment. - * Save a copy of the original ProcessComplete function, - * and replace ProcessComplete with on that does the old - * function, then looks for more math to process. If there - * is some, continue processing, otherwise say we are done. - * - * Now make ProcessBeforeShowing check to see if we - * are already processing (in which case, we'll keep doing so - * until there is no more math), otherwise, - * start processing the math. - */ - if (!jsMath.WW_patched) { - jsMath.WW_patched = 1; - jsMath.isProcessing = 0; - - jsMath.OldProcessComplete = jsMath.ProcessComplete; - - jsMath.ProcessComplete = function () { - jsMath.OldProcessComplete(); - jsMath.element = jsMath.GetMathElements(); - if (jsMath.element.length > 0) { - window.status = 'Processing Math...'; - setTimeout('jsMath.ProcessElements(0)',jsMath.delay); - } else { - jsMath.isProcessing = 0; - } - } - - jsMath.ProcessBeforeShowing = function () { - if (!jsMath.isProcessing) { - jsMath.isProcessing = 1; - jsMath.Process(); - } - } - - } - -} else { +if (!jsMath || !jsMath.loaded) { +var jsMath_old = jsMath; // save user customizations // // debugging routine @@ -110,80 +65,20 @@ /***************************************************************************/ var jsMath = { - + + version: "2.1", // change this if you edit the file + // // Name of image files // blank: "blank.gif", black: "black.gif", - // - // The TeX font parameters - // - TeX: { - thinmuskip: 3/18, - medmuskip: 4/18, - thickmuskip: 5/18, - - x_height: .430554, - quad: 1, - num1: .676508, - num2: .393732, - num3: .44373, - denom1: .685951, - denom2: .344841, - sup1: .412892, - sup2: .362892, - sup3: .288888, - sub1: .15, - sub2: .247217, - sup_drop: .386108, - sub_drop: .05, - delim1: 2.39, - delim2: 1.0, - axis_height: .25, - default_rule_thickness: .04, - big_op_spacing1: .111111, - big_op_spacing2: .166666, - big_op_spacing3: .2, - big_op_spacing4: .6, - big_op_spacing5: .1, - - integer: 6553.6, // conversion of em's to TeX internal integer - scriptspace: .05, - nulldelimiterspace: .12, - delimiterfactor: 901, - delimitershortfall: .5, - scale: 1 // scaling factor for font dimensions - }, - + defaultH: 0, // default height for characters with none specified + // Font sizes for \tiny, \small, etc. (must match styles below) sizes: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249], - allowAbsolute: 1, // tells if browser can nest absolutely positioned - // SPANs inside relative SPANs - absoluteOffsetY: 0, // vertical adjustment when absolute position is used - allowAbsoluteDelim: 0, // OK to use absolute placement for building delims? - renameOK: 1, // tells if brower will find a tag whose name - // has been set via setAttributes - separateNetgativeSkips: 0, // MSIE doesn't do negative left margins - separateSkips: 0, // Netscape doesn't combine skips well - noEmptySpans: 0, // empty spans are/aren't allowed - msieSpaceFix: '', // for MSIE spacing bug fix - - delay: 1, // delay for asynchronous math processing - - defaultH: 0, // default height for characters with no height specified - - // - // Debugging flags - // - show: { - BBox: false, - Baseline: false, - Top: false - }, - // // The styles needed for the TeX fonts // @@ -199,35 +94,45 @@ '.size8': 'font-size: 207%', // huge '.size9': 'font-size: 249%', // Huge - '.cmr10': 'font-family: cmr10', + '.cmr10': 'font-family: cmr10, serif', '.cmbx10': 'font-family: cmbx10, cmr10', '.cmti10': 'font-family: cmti10, cmr10', '.cmmi10': 'font-family: cmmi10', '.cmsy10': 'font-family: cmsy10', '.cmex10': 'font-family: cmex10', - '.arial': 'font-family: Arial unicode MS', // for MSIE - '.normal': 'font-family: serif; font-style: normal; font-size: 133%', - '.math': 'font-family: serif; font-style: normal; color: grey33; font-size: 75%', - '.typeset': 'font-family: serif; font-style: normal; font-size: 133%', - 'span.typeset': 'font-family: serif; font-style: normal', - 'div.typeset': 'font-family: serif; font-style: normal; text-align: center; margin-top: 1em; margin-bottom: 1em', + '.normal': 'font-family: serif; font-style: normal; font-weight: normal', + '.math': 'font-family: serif; font-style: normal; font-weight: normal', + '.typeset': 'font-family: serif; font-style: normal; font-weight: normal', + 'span.typeset': '', + 'div.typeset': 'text-align: center; margin: 1em 0px;', '.mathlink': 'text-decoration: none', - '.mathHD': 'border-width: 0; width: 1px; margin-right: -1px', + '.mathHD': 'border-width:0px; width: 1px; margin-right: -1px', '.error': 'font-size: 10pt; font-style: italic; ' - + 'background-color: #FFFFCC; padding: 1; ' - + 'border-width: 1; border-style: solid; border-color: #CC0000' - }, + + 'background-color: #FFFFCC; padding: 1px; ' + + 'border: 1px solid #CC0000', + '.jsM_panel': 'position:fixed; bottom:1.5em; right:1.5em; padding: 10px 20px; ' + + 'background-color:#DDDDDD; border: outset 2px; ' + + 'z-index:102; width:auto;', + '.jsM_button': 'position:fixed; bottom:1px; right:2px; background-color:white; ' + + 'border: solid 1px #959595; margin:0px; padding: 0px 3px 1px 3px; ' + + 'z-index:101; color:black; text-decoration:none; font-size:x-small; width:auto;', + '.jsM_noFont': 'text-align: center; padding: 10px 20px; border: 3px solid #DD0000; ' + + ' background-color: #FFF8F8; color: #AA0000; font-size:small; width:auto;', + '.jsM_fontLink': 'padding: 0px 5px 2px 5px; text-decoration:none; color:black;' + + ' border: 2px outset; background-color:#E8E8E8; font-size:80%; width:auto;' + }, + /***************************************************************************/ /* * Get the width and height (in pixels) of an HTML string */ BBoxFor: function (s) { - this.hidden.innerHTML = s; + this.hidden.innerHTML = '<SPAN CLASS="jsM_scale">'+s+'</SPAN>'; var bbox = {w: this.hidden.offsetWidth, h: this.hidden.offsetHeight}; this.hidden.innerHTML = ''; // avoid MSIE bug on the Mac return bbox; @@ -242,116 +147,50 @@ }, /* - * Determine if the "top" of a <SPAN> is always at the same height - * or varies with the height of the rest of the line (MSIE). - */ - TestSpanHeight: function () { - this.hidden.innerHTML = '<SPAN><IMG SRC="'+jsMath.blank+'" STYLE="height: 2em"></SPAN>'; - var span = this.hidden.getElementsByTagName('SPAN')[0]; - var img = this.hidden.getElementsByTagName('IMG')[0]; - this.spanHeightVaries = (span.offsetHeight == img.offsetHeight); - this.hidden.innerHTML = ''; - }, - - /* - * Determine if the NAME attribute of a tag can be changed - * using the setAttribute function, and then be properly - * returned by getElementByName. - */ - TestRenameOK: function () { - this.hidden.innerHTML = '<SPAN ID="jsMath.test"></SPAN>'; - var test = document.getElementById('jsMath.test'); - test.setAttribute('NAME','jsMath_test'); - this.renameOK = (document.getElementsByName('jsMath_test').length > 0); - this.hidden.innerHTML = ''; - }, - - /* - * Look to see if a font is found. HACK! - * Check the character in the '|' position, and see if it is - * wider than the usual '|'. + * For browsers that don't handle sizes of italics properly (MSIE) */ - TestFont: function (name,n,factor) { - if (n == null) {n = 124}; if (factor == null) {factor = 2} - var wh1 = this.BBoxFor('<SPAN STYLE="font-family: '+name+', serif">'+this.TeX[name][n].c+'</SPAN>'); - var wh2 = this.BBoxFor('<SPAN STYLE="font-family: serif">'+this.TeX[name][n].c+'</SPAN>'); - return (wh1.w > factor*wh2.w && wh1.h != 0); - }, - - TestFont2: function (name,n,factor) { - if (n == null) {n = 124}; if (factor == null) {factor = 2} - var wh1 = this.BBoxFor('<SPAN STYLE="font-family: '+name+', serif">'+this.TeX[name][n].c+'</SPAN>'); - var wh2 = this.BBoxFor('<SPAN STYLE="font-family: serif">'+this.TeX[name][n].c+'</SPAN>'); - return (wh2.w > factor*wh1.w && wh1.h != 0); - }, - - /* - * Check for the availability of TeX fonts. We do this by looking at - * the width and height of a character in the cmex10 font. The cmex10 - * font has depth considerably greater than most characters' widths (the - * whole font has the depth of the character with greatest depth). This - * is not the case for most fonts, so if we can access cmex10, the - * height of a character should be much bigger than the width. - * Otherwise, if we don't have cmex10, we'll get a character in another - * font with normal height and width. In this case, we insert a message - * pointing the user to the jsMath site, and load one of the fallback - * definitions. - * - */ - CheckFonts: function () { - jsMath.nofonts = 0; - var wh = this.BBoxFor('<SPAN STYLE="font-family: cmex10">'+this.TeX.cmex10[1].c+'</SPAN>'); - if (wh.w*3 < wh.h && wh.h != 0) return; - if (this.TestFont('cmr10')) return; - if (window.NoFontMessage) {window.NoFontMessage()} else {this.NoFontMessage()} - if (navigator.platform == 'Win32') { - document.writeln('<SCRIPT SRC="'+this.root+'jsMath-fallback-pc.js"></SCRIPT>'); - } else if (navigator.platform == 'MacPPC') { - document.writeln('<SCRIPT SRC="'+this.root+'jsMath-fallback-mac.js"></SCRIPT>'); - } else { - // default to unix? Is there a better way to tell if unix? - document.writeln('<SCRIPT SRC="'+this.root+'jsMath-fallback-unix.js"></SCRIPT>'); + EmBoxForItalics: function (s) { + var bbox = this.BBoxFor(s); + if (s.match(/<I>|CLASS="icm/i)) { + bbox.w = this.BBoxFor(s+jsMath.Browser.italicString).w + - jsMath.Browser.italicCorrection; } - jsMath.nofonts = 1; + return {w: bbox.w/this.em, h: bbox.h/this.em}; }, /* - * The message for when no TeX fonts. You can eliminate this message - * by including - * - * <SCRIPT>function NoFontMessage() {}</SCRIPT> - * - * in your HTML file, if you want. But this means the user may not know - * that he or she can get a better version of your page. - */ - NoFontMessage: function () { - document.writeln - ('<CENTER><DIV STYLE="padding: 10; border-style: solid; border-width:3;' - +' border-color: #DD0000; background-color: #FFF8F8; width: 75%; text-align: left">' - +'<SMALL><FONT COLOR="#AA0000"><B>Warning:</B>\n' - +'It looks like you don\'t have the TeX math fonts installed.\n' - +'The mathematics on this page may not look right without them.\n' - +'The <A HREF="http://www.math.union.edu/locate/jsMath/" TARGET="_blank">' - +'jsMath Home Page</A> has information on how to download the\n' - +'needed fonts. In the meantime, we will do the best we can\n' - +'with the fonts you have, but it may not be pretty and some equations\n' - +'may not be rendered correctly.\n' - +'</FONT></SMALL></DIV></CENTER><p><HR><p>'); - }, - - /* * Initialize jsMath. This determines the em size, and a variety * of other parameters used throughout jsMath. */ - Init: function() { - this.em = this.BBoxFor('<DIV STYLE="width: 20em; height: 1em"></DIV>').w/20; + Init: function (em) { + if (jsMath.Setup.inited != 1) { + if (jsMath.Setup.inited) { + alert("It looks like jsMath failed to set up properly."); + } else { + alert("You must call jsMath.Setup.Body() explicitly when jsMath is" + + "loaded as part of the <HEAD> section"); + } + jsMath.Setup.Init(); // may fail to load fallback files properly + } + if (em) {this.em = em} + else {this.em = this.BBoxFor('<DIV STYLE="width: 10em; height: 1em"></DIV>').w/10} + if (jsMath.Browser.italicString) + jsMath.Browser.italicCorrection = jsMath.BBoxFor(jsMath.Browser.italicString).w; + if (jsMath.Browser.hiddenSpace != '') { + jsMath.Browser.spaceWidth = + this.EmBoxFor(jsMath.Browser.hiddenSpace + + jsMath.Browser.hiddenSpace + + jsMath.Browser.hiddenSpace + + jsMath.Browser.hiddenSpace + + jsMath.Browser.hiddenSpace).w/5; + } var h = this.BBoxFor('x').h; // Line height and depth to baseline - var d = this.BBoxFor('x<IMG SRC="'+jsMath.black+'" HEIGHT="'+h+'" WIDTH="1">').h - h; +... [truncated message content] |