Handle centerline for stretchy characters, and add centerline data to font files.
This commit is contained in:
parent
98b748d088
commit
c43a5250f0
|
@ -24,6 +24,7 @@ var font = 'MathJax_AMS';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 270, ascent: 1003, descent: 463,
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x41: [701,1,722,17,703], // LATIN CAPITAL LETTER A
|
0x41: [701,1,722,17,703], // LATIN CAPITAL LETTER A
|
||||||
0x42: [683,1,667,11,620], // LATIN CAPITAL LETTER B
|
0x42: [683,1,667,11,620], // LATIN CAPITAL LETTER B
|
||||||
|
|
|
@ -24,6 +24,7 @@ var font = 'MathJax_Caligraphic-Bold';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 315, ascent: 840, descent: 211,
|
||||||
weight: 'bold',
|
weight: 'bold',
|
||||||
skew: {
|
skew: {
|
||||||
0x41: 0.224,
|
0x41: 0.224,
|
||||||
|
|
|
@ -24,6 +24,7 @@ var font = 'MathJax_Fraktur-Bold';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 259, ascent: 740, descent: 223,
|
||||||
weight: 'bold',
|
weight: 'bold',
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x21: [689,12,349,107,241], // EXCLAMATION MARK
|
0x21: [689,12,349,107,241], // EXCLAMATION MARK
|
||||||
|
|
|
@ -24,6 +24,7 @@ var font = 'MathJax_Fraktur';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 258, ascent: 740, descent: 224,
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x21: [689,12,296,91,204], // EXCLAMATION MARK
|
0x21: [689,12,296,91,204], // EXCLAMATION MARK
|
||||||
0x22: [695,-432,215,8,196], // QUOTATION MARK
|
0x22: [695,-432,215,8,196], // QUOTATION MARK
|
||||||
|
|
|
@ -24,6 +24,7 @@ var font = 'MathJax_Math-BoldItalic';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 255, ascent: 725, descent: 216,
|
||||||
weight: 'bold',
|
weight: 'bold',
|
||||||
style: 'italic',
|
style: 'italic',
|
||||||
skew: {
|
skew: {
|
||||||
|
|
|
@ -24,6 +24,7 @@ var font = 'MathJax_SansSerif-Bold';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 250, ascent: 750, descent: 250,
|
||||||
weight: 'bold',
|
weight: 'bold',
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x21: [694,0,367,110,256], // EXCLAMATION MARK
|
0x21: [694,0,367,110,256], // EXCLAMATION MARK
|
||||||
|
|
|
@ -24,6 +24,7 @@ var font = 'MathJax_SansSerif-Italic';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 250, ascent: 750, descent: 250,
|
||||||
style: 'italic',
|
style: 'italic',
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x21: [694,0,319,110,355], // EXCLAMATION MARK
|
0x21: [694,0,319,110,355], // EXCLAMATION MARK
|
||||||
|
|
|
@ -24,6 +24,8 @@ var font = 'MathJax_SansSerif';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 250, ascent: 750, descent: 250,
|
||||||
|
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x21: [694,0,319,110,208], // EXCLAMATION MARK
|
0x21: [694,0,319,110,208], // EXCLAMATION MARK
|
||||||
0x22: [694,-471,500,32,325], // QUOTATION MARK
|
0x22: [694,-471,500,32,325], // QUOTATION MARK
|
||||||
|
|
|
@ -24,6 +24,7 @@ var font = 'MathJax_Script';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 211, ascent: 735, descent: 314,
|
||||||
skew: {
|
skew: {
|
||||||
0x41: 0.389,
|
0x41: 0.389,
|
||||||
0x42: 0.194,
|
0x42: 0.194,
|
||||||
|
|
|
@ -24,6 +24,8 @@ var font = 'MathJax_Typewriter';
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS[font] = {
|
CHTML.FONTDATA.FONTS[font] = {
|
||||||
className: CHTML.FONTDATA.familyName(font),
|
className: CHTML.FONTDATA.familyName(font),
|
||||||
|
centerline: 233, ascent: 694, descent: 229,
|
||||||
|
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x21: [622,0,525,206,320], // EXCLAMATION MARK
|
0x21: [622,0,525,206,320], // EXCLAMATION MARK
|
||||||
0x22: [623,-333,525,122,402], // QUOTATION MARK
|
0x22: [623,-333,525,122,402], // QUOTATION MARK
|
||||||
|
|
|
@ -607,6 +607,7 @@
|
||||||
CHTML.FONTDATA = CHTML.FONTDEF["TeX"];
|
CHTML.FONTDATA = CHTML.FONTDEF["TeX"];
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS['MathJax_Caligraphic'] = {
|
CHTML.FONTDATA.FONTS['MathJax_Caligraphic'] = {
|
||||||
|
centerline: 287, ascent: 789, descent: 216,
|
||||||
skew: {
|
skew: {
|
||||||
0x41: 0.194,
|
0x41: 0.194,
|
||||||
0x42: 0.139,
|
0x42: 0.139,
|
||||||
|
@ -676,6 +677,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS['MathJax_Main-Bold'] = {
|
CHTML.FONTDATA.FONTS['MathJax_Main-Bold'] = {
|
||||||
|
centerline: 342, ascent: 951, descent: 267,
|
||||||
weight: 'bold',
|
weight: 'bold',
|
||||||
file: "TeX/Main-Bold.js",
|
file: "TeX/Main-Bold.js",
|
||||||
Extra: [
|
Extra: [
|
||||||
|
@ -817,6 +819,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS['MathJax_Main-Italic'] = {
|
CHTML.FONTDATA.FONTS['MathJax_Main-Italic'] = {
|
||||||
|
centerline: 250, ascent: 750, descent: 250,
|
||||||
style: 'italic',
|
style: 'italic',
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x21: [716,0,307,107,380], // EXCLAMATION MARK
|
0x21: [716,0,307,107,380], // EXCLAMATION MARK
|
||||||
|
@ -941,6 +944,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS['MathJax_Main'] = {
|
CHTML.FONTDATA.FONTS['MathJax_Main'] = {
|
||||||
|
centerline: 314, ascent: 900, descent: 272,
|
||||||
skew: {
|
skew: {
|
||||||
0x131: 0.0278,
|
0x131: 0.0278,
|
||||||
0x237: 0.0833,
|
0x237: 0.0833,
|
||||||
|
@ -1238,6 +1242,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS['MathJax_Math-Italic'] = {
|
CHTML.FONTDATA.FONTS['MathJax_Math-Italic'] = {
|
||||||
|
centerline: 250, ascent: 717, descent: 218,
|
||||||
style: 'italic',
|
style: 'italic',
|
||||||
skew: {
|
skew: {
|
||||||
0x41: 0.139,
|
0x41: 0.139,
|
||||||
|
@ -1416,6 +1421,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS['MathJax_Size1'] = {
|
CHTML.FONTDATA.FONTS['MathJax_Size1'] = {
|
||||||
|
centerline: 250, ascent: 850, descent: 350,
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x28: [850,349,458,152,422], // LEFT PARENTHESIS
|
0x28: [850,349,458,152,422], // LEFT PARENTHESIS
|
||||||
0x29: [850,349,458,35,305], // RIGHT PARENTHESIS
|
0x29: [850,349,458,35,305], // RIGHT PARENTHESIS
|
||||||
|
@ -1464,6 +1470,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS['MathJax_Size2'] = {
|
CHTML.FONTDATA.FONTS['MathJax_Size2'] = {
|
||||||
|
centerline: 249, ascent: 1360, descent: 862,
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x28: [1150,649,597,180,561], // LEFT PARENTHESIS
|
0x28: [1150,649,597,180,561], // LEFT PARENTHESIS
|
||||||
0x29: [1150,649,597,35,416], // RIGHT PARENTHESIS
|
0x29: [1150,649,597,35,416], // RIGHT PARENTHESIS
|
||||||
|
@ -1504,6 +1511,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS['MathJax_Size3'] = {
|
CHTML.FONTDATA.FONTS['MathJax_Size3'] = {
|
||||||
|
centerline: 250, ascent: 1450, descent: 950,
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x28: [1450,949,736,209,701], // LEFT PARENTHESIS
|
0x28: [1450,949,736,209,701], // LEFT PARENTHESIS
|
||||||
0x29: [1450,949,736,34,526], // RIGHT PARENTHESIS
|
0x29: [1450,949,736,34,526], // RIGHT PARENTHESIS
|
||||||
|
@ -1528,6 +1536,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
CHTML.FONTDATA.FONTS['MathJax_Size4'] = {
|
CHTML.FONTDATA.FONTS['MathJax_Size4'] = {
|
||||||
|
centerline: 250, ascent: 1750, descent: 1250,
|
||||||
0x20: [0,0,250,0,0], // SPACE
|
0x20: [0,0,250,0,0], // SPACE
|
||||||
0x28: [1750,1249,792,237,758], // LEFT PARENTHESIS
|
0x28: [1750,1249,792,237,758], // LEFT PARENTHESIS
|
||||||
0x29: [1750,1249,792,33,554], // RIGHT PARENTHESIS
|
0x29: [1750,1249,792,33,554], // RIGHT PARENTHESIS
|
||||||
|
|
|
@ -33,8 +33,7 @@
|
||||||
|
|
||||||
var EVENT, TOUCH, HOVER; // filled in later
|
var EVENT, TOUCH, HOVER; // filled in later
|
||||||
|
|
||||||
var CENTERLINE = .25,
|
var STRUTHEIGHT = 1,
|
||||||
STRUTHEIGHT = 1,
|
|
||||||
HFUZZ = .025, DFUZZ = .025; // adjustments to bounding box of character boxes
|
HFUZZ = .025, DFUZZ = .025; // adjustments to bounding box of character boxes
|
||||||
|
|
||||||
var STYLES = {
|
var STYLES = {
|
||||||
|
@ -871,7 +870,7 @@
|
||||||
char: function (item,node,bbox,state,m) {
|
char: function (item,node,bbox,state,m) {
|
||||||
var font = item.font;
|
var font = item.font;
|
||||||
if (state.className && font.className !== state.className) this.flushText(node,state);
|
if (state.className && font.className !== state.className) this.flushText(node,state);
|
||||||
if (!state.a) state.a = (font.centerline || CENTERLINE);
|
if (!state.a) state.a = font.centerline/1000;
|
||||||
if (state.a > (bbox.a||0)) bbox.a = state.a;
|
if (state.a > (bbox.a||0)) bbox.a = state.a;
|
||||||
var C = font[item.n];
|
var C = font[item.n];
|
||||||
state.text += C.c; state.className = font.className;
|
state.text += C.c; state.className = font.className;
|
||||||
|
@ -996,7 +995,7 @@
|
||||||
var s = 1.1*(H - h)/k + .3; // space to cover by extender
|
var s = 1.1*(H - h)/k + .3; // space to cover by extender
|
||||||
s /= (ebox.h+ebox.d); // scale factor;
|
s /= (ebox.h+ebox.d); // scale factor;
|
||||||
this.Transform(ext,
|
this.Transform(ext,
|
||||||
"translateY("+CHTML.Em(-ebox.d+.25-s*CENTERLINE)+") scaleY("+s.toFixed(3).replace(/0+$/,"")+")",
|
"translateY("+CHTML.Em(-ebox.d+.25-s*ebox.a)+") scaleY("+s.toFixed(3).replace(/0+$/,"")+")",
|
||||||
"left "+CHTML.Em(ebox.d)
|
"left "+CHTML.Em(ebox.d)
|
||||||
);
|
);
|
||||||
ext.style.paddingTop=ext.style.paddingBottom = 0;
|
ext.style.paddingTop=ext.style.paddingBottom = 0;
|
||||||
|
@ -1073,7 +1072,7 @@
|
||||||
this.adjustHeights([left,ext,mid,ext2,right],hbox);
|
this.adjustHeights([left,ext,mid,ext2,right],hbox);
|
||||||
if (ebox.D) ebox.d = ebox.D;
|
if (ebox.D) ebox.d = ebox.D;
|
||||||
hbox.t = hbox.h; hbox.b = hbox.d;
|
hbox.t = hbox.h; hbox.b = hbox.d;
|
||||||
var mt = ebox.h - hbox.h - CENTERLINE, mb = ebox.d - hbox.d + CENTERLINE;
|
var mt = ebox.h - hbox.h - ebox.a, mb = ebox.d - hbox.d + ebox.a;
|
||||||
if (mt) node.style.marginTop = CHTML.Em(mt);
|
if (mt) node.style.marginTop = CHTML.Em(mt);
|
||||||
if (mb) node.style.marginBottom = CHTML.Em(mb);
|
if (mb) node.style.marginBottom = CHTML.Em(mb);
|
||||||
hbox.h = ebox.h; hbox.d = ebox.d;
|
hbox.h = ebox.h; hbox.d = ebox.d;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user