first commit
This commit is contained in:
624
mathjax-fira-font/def/mathjax-fira.ts
Normal file
624
mathjax-fira-font/def/mathjax-fira.ts
Normal file
@@ -0,0 +1,624 @@
|
||||
import {CHARSET, CHARS} from '@mathjax/font-tools/js/CharMap.js';
|
||||
import {Font, FontData, GlyphNames} from '@mathjax/font-tools/js/Font.js';
|
||||
import {Variants} from '@mathjax/font-tools/js/Variant.js';
|
||||
import {Delimiters} from '@mathjax/font-tools/js/Delimiters.js';
|
||||
import {CommonFont, FontDef} from '@mathjax/font-tools/js/CommonFont.js';
|
||||
import {RANGES, Ranges} from '@mathjax/font-tools/js/Ranges.js';
|
||||
import {SVGFont} from '@mathjax/font-tools/js/SVGFont.js';
|
||||
import {CHTMLFont} from '@mathjax/font-tools/js/CHTMLFont.js';
|
||||
import {Components} from '@mathjax/font-tools/js/Components.js';
|
||||
|
||||
/***********************************************************************************/
|
||||
|
||||
try {
|
||||
|
||||
//
|
||||
// Name-to-Unicode mapping needed for text fonts
|
||||
//
|
||||
const charNames: GlyphNames = [
|
||||
['f_f', 0xFB00], ['f_f_i', 0xFB03], ['f_f_l', 0xFB04]
|
||||
];
|
||||
|
||||
const charOptions: FontData = {
|
||||
charNames,
|
||||
ignore: /^\.notdef$|\.(?:sc|locl|case|tf|tosf|dnom|numr)|_short$|^f_[il]$/,
|
||||
autoPUA: 0xE100
|
||||
};
|
||||
|
||||
Font.load({
|
||||
'FIRA-M': ['fonts/FiraMath-Regular.otf', {}],
|
||||
'FIRA-R': ['fonts/FiraSans-Regular.otf', charOptions],
|
||||
'FIRA-B': ['fonts/FiraSans-Bold.otf', charOptions],
|
||||
'FIRA-I': ['fonts/FiraSans-Italic.otf', charOptions],
|
||||
'FIRA-BI': ['fonts/FiraSans-BoldItalic.otf', charOptions],
|
||||
'FIRA-T': ['fonts/FiraMono-Regular.otf', charOptions],
|
||||
'CAL-R': ['../subsets/CM-Calligraphic-Regular.otf', {}],
|
||||
'CAL-B': ['../subsets/CM-Calligraphic-Bold.otf', {}],
|
||||
'SCR-R': ['../subsets/Asana-Script-Regular.otf', {}],
|
||||
'SCR-B': ['../subsets/Asana-Script-Bold.otf', {}],
|
||||
'FRK-R': ['../subsets/Euler-Fraktur-Regular.otf', {}],
|
||||
'FRK-B': ['../subsets/Euler-Fraktur-Bold.otf', {}],
|
||||
'MM-D': ['../subsets/Modern-Delimiters-Regular.otf', {}],
|
||||
});
|
||||
|
||||
Font.get('FIRA-M')
|
||||
.addGlyph(Font.buildV('FIRA-M', [0x23AD, 0x23A7], 0x23B0, 'lmoustache', -500))
|
||||
.addGlyph(Font.buildV('FIRA-M', [0x23A9, 0x23AB], 0x23B1, 'rmoustache', -500))
|
||||
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x2190], 0x2190, 'uni2190.left', -120, 0, -120))
|
||||
.addGlyph(Font.buildV('FIRA-R', [0x23FD], 0x2191, 'uni2191.ext', -10, 185, 185))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x2192], 0x2192, 'uni2192.right', -120, 0, -120))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x219E], 0x219E, 'uni219E.left', -120, 0, -120))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x21A0], 0x21A0, 'uni21A0.right', -120, 0, -120))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x21BC], 0x21BC, 'uni21BC.left', -110, 0, -120))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x21BD], 0x21BD, 'uni21BD.left', -110, 0, -120))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x21C0], 0x21C0, 'uni21C0.right', -120, 0, -110))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x21C1], 0x21C1, 'uni21C1.right', -120, 0, -110))
|
||||
.addGlyph(Font.buildV('FIRA-R', [0x23FD], 0x21A4, 'uni21A4.left', -10, -100, -100))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x21D0], 0x21D0, 'uni21D0.left', -120, 0, -120))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x003D], 0x21D0, 'uni21D0.ext', -62, 0, -62))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x21D2], 0x21D2, 'uni21D2.right', -120, 0, -120))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x21DA], 0x21DA, 'uni21DA.left', -120, 0, -120))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x2261], 0x2261, 'uni2261.ext', -62, 0, -62))
|
||||
.addGlyph(Font.buildH('FIRA-M', [0x21DB], 0x21DB, 'uni21DB.right', -120, 0, -120))
|
||||
|
||||
.addGlyph(Font.buildV('FIRA-M', [0x21BE], 0x294C, 'uni294C.top', 0, 172, 2))
|
||||
.addGlyph(Font.buildV('FIRA-M', [0x21BF], 0x294D, 'uni294D.top', 0, 2, 172))
|
||||
.addGlyph(Font.buildV('FIRA-M', [0x21C3], 0x294C, 'uni294C.bot', 0, 2, 172))
|
||||
.addGlyph(Font.buildV('FIRA-M', [0x21C2], 0x294D, 'uni294D.bot', 0, 172, 2))
|
||||
;
|
||||
|
||||
/***********************************************************************************/
|
||||
|
||||
const FiraVariants = Variants.define({
|
||||
normal: [
|
||||
['FIRA-M', [
|
||||
CHARS.InRange(0x20, 0x2FFF, 'FIRA-M').minus(CHARS.Range(0x200C, 0x200F), CHARS.At(0x210A)),
|
||||
CHARS.Range(0xFB00, 0xFB04),
|
||||
CHARS.InRange(0x1D400, 0x1D7FF, 'FIRA-M'),
|
||||
CHARS.At(0x1F784),
|
||||
CHARS.Map({0x2C9: 0xAF}),
|
||||
CHARS.MapFrom(0x41, CHARSET.MathSansSerifUC),
|
||||
CHARS.MapFrom(0x61, CHARSET.MathSansSerifLC),
|
||||
CHARS.MapFrom(0x1D400, CHARSET.MathBoldSansSerifUC),
|
||||
CHARS.MapFrom(0x1D41A, CHARSET.MathBoldSansSerifLC),
|
||||
CHARS.MapFrom(0x1D434, CHARSET.MathSansSerifItalicUC),
|
||||
CHARS.MapFrom(0x1D44E, CHARS.Range(0x1D622, 0x1D628)).plus(
|
||||
CHARS.Map({0x1D629: 0x210E}),
|
||||
CHARS.MapFrom(0x1D456, CHARS.Range(0x1D62A, 0x1D63B))
|
||||
),
|
||||
CHARS.MapFrom(0x1D468, CHARSET.MathSansSerifBoldItalicUC),
|
||||
CHARS.MapFrom(0x1D482, CHARSET.MathSansSerifBoldItalicLC),
|
||||
CHARS.MapFrom(0x0391, CHARS.Range(0x1D756, 0x1D76E)).minus(CHARS.At(0x1D767)).plus(
|
||||
CHARS.Map({0x1D767: 0x03F4, 0x1D76F: 0x2207, 0x1D789: 0x2202, 0x1D78A: 0x03F5,
|
||||
0x1D78B: 0x03D1, 0x1D78C: 0x03F0, 0x1D78D: 0x03D5, 0x1D78E: 0x03F1, 0x1D78F: 0x03D6}),
|
||||
CHARS.MapFrom(0x3B1, CHARS.Range(0x1D770, 0x1D788))
|
||||
),
|
||||
CHARS.MapFrom(0x1D6E2, CHARSET.MathGreekSansSerifItalic),
|
||||
CHARS.MapFrom(0x30, CHARSET.MathNumbersSansSerif),
|
||||
CHARS.MapFrom(0x1D7CE, CHARSET.MathNumbersSansSerifBold)
|
||||
]], ['FIRA-R', [
|
||||
CHARS.InRange(0xA780, 0xAB6F, 'FIRA-R'),
|
||||
CHARS.Range(0xE100, 0xE103),
|
||||
CHARS.InRange(0x20, 0x2FFF, 'FIRA-R').minus(CHARS.InRange(0x20, 0x2FFF, 'FIRA-M'))
|
||||
]], ['FIRA-T', [
|
||||
CHARS.MapFrom(0x30, CHARSET.MathNumbersMonospace)
|
||||
]], ['SCR-R', [
|
||||
CHARSET.MathScript
|
||||
]], ['SCR-B', [
|
||||
CHARSET.MathBoldScript
|
||||
]], ['FRK-R', [
|
||||
CHARSET.MathFraktur,
|
||||
]], ['FRK-B', [
|
||||
CHARSET.MathBoldFraktur,
|
||||
]],
|
||||
],
|
||||
bold: ['FIRA-B', [
|
||||
CHARS.InRange(0x20, 0x25FF, 'FIRA-B').minus(
|
||||
CHARSET.Alpha, CHARSET.Numbers, CHARSET.Greek,
|
||||
CHARS.Range(0x21E6, 0x21EA),
|
||||
CHARS.At(0x210A, 0x2202, 0x2326, 0x2327, 0x2328, 0x232B, 0x23CE),
|
||||
CHARS.Range(0x23FB, 0x23FF)
|
||||
),
|
||||
CHARS.At(0x2981),
|
||||
CHARS.InRange(0x2C60, 0x2C7F, 'FIRA-B'),
|
||||
CHARS.Range(0xE100, 0xE103),
|
||||
CHARS.Range(0xFB00, 0xFB04),
|
||||
]],
|
||||
italic: ['FIRA-I', [
|
||||
CHARS.InRange(0x20, 0x22EF, 'FIRA-I').minus(
|
||||
CHARSET.Alpha, CHARSET.Greek,
|
||||
CHARS.At(0x210A, 0x2202),
|
||||
CHARS.Range(0x21E6, 0x21EA)
|
||||
),
|
||||
CHARS.At(0x25CA),
|
||||
CHARS.InRange(0x2C60, 0x2C7F, 'FIRA-I'),
|
||||
CHARS.Range(0xE100, 0xE103),
|
||||
CHARS.Range(0xFB00, 0xFB04),
|
||||
]],
|
||||
'bold-italic': ['FIRA-BI', [
|
||||
CHARS.InRange(0x20, 0x22EF, 'FIRA-BI').minus(
|
||||
CHARSET.Alpha, CHARSET.Greek,
|
||||
CHARS.At(0x210A, 0x2202),
|
||||
CHARS.Range(0x21E6, 0x21EA)
|
||||
),
|
||||
CHARS.At(0x25CA),
|
||||
CHARS.InRange(0x2C60, 0x2C7F, 'FIRA-BI'),
|
||||
CHARS.Range(0xE100, 0xE103),
|
||||
CHARS.Range(0xFB00, 0xFB04),
|
||||
]],
|
||||
'sans-serif-italic': ['FIRA-I', [
|
||||
CHARSET.Numbers
|
||||
]],
|
||||
'sans-serif-bold-italic': ['FIRA-BI', [
|
||||
CHARSET.Numbers
|
||||
]],
|
||||
monospace: ['FIRA-T', [
|
||||
CHARS.InRange(0x20, 0x22EF, 'FIRA-T').minus(
|
||||
CHARSET.Alpha, CHARSET.Numbers,
|
||||
CHARS.At(0x210A, 0x2202),
|
||||
CHARS.Range(0x21E6, 0x21EA)
|
||||
),
|
||||
CHARS.At(0x25CA, 0xFB01, 0xFB02),
|
||||
CHARS.InRange(0x2C60, 0x2C7F, 'FIRA-T')
|
||||
]],
|
||||
'-smallop': [
|
||||
['FIRA-M', [
|
||||
CHARS.ForFeature('size1', 'FIRA-M'),
|
||||
]],
|
||||
['MM-D', [
|
||||
CHARS.Map({0x2F: 0xE001, 0x5C: 0xE011, 0x302: 0xE021, 0x303: 0xE031})
|
||||
]]
|
||||
],
|
||||
'-largeop': [
|
||||
['FIRA-M', [
|
||||
CHARS.ForFeature('size2', 'FIRA-M'),
|
||||
CHARS.ForFeature('display', 'FIRA-M')
|
||||
]],
|
||||
['MM-D', [
|
||||
CHARS.Map({0x2F: 0xE002, 0x5C: 0xE012, 0x302: 0xE022, 0x303: 0xE032})
|
||||
]]
|
||||
],
|
||||
'-size3': [
|
||||
['FIRA-M', [
|
||||
CHARS.ForFeature('size3', 'FIRA-M')
|
||||
]],
|
||||
['MM-D', [
|
||||
CHARS.Map({0x2F: 0xE003, 0x5C: 0xE013, 0x302: 0xE023, 0x303: 0xE033})
|
||||
]]
|
||||
],
|
||||
'-size4': [
|
||||
['FIRA-M', [
|
||||
CHARS.ForFeature('size4', 'FIRA-M')
|
||||
]],
|
||||
['MM-D', [
|
||||
CHARS.Map({0x2F: 0xE004, 0x5C: 0xE014, 0x302: 0xE024, 0x303: 0xE034})
|
||||
]]
|
||||
],
|
||||
'-size5': [
|
||||
['FIRA-M', [
|
||||
CHARS.ForFeature('size5', 'FIRA-M')
|
||||
]],
|
||||
['MM-D', [
|
||||
CHARS.Map({0x2F: 0xE005, 0x5C: 0xE015, 0x302: 0xE025, 0x303: 0xE035})
|
||||
]]
|
||||
],
|
||||
'-size6': [
|
||||
['FIRA-M', [
|
||||
CHARS.ForFeature('size6', 'FIRA-M')
|
||||
]],
|
||||
['MM-D', [
|
||||
CHARS.Map({0x2F: 0xE006, 0x5C: 0xE016, 0x302: 0xE026, 0x303: 0xE036})
|
||||
]]
|
||||
],
|
||||
'-size7': [
|
||||
['FIRA-M', [
|
||||
CHARS.ForFeature('size7', 'FIRA-M')
|
||||
]],
|
||||
['MM-D', [
|
||||
CHARS.Map({0x2F: 0xE007, 0x5C: 0xE017, 0x302: 0xE027, 0x303: 0xE037})
|
||||
]]
|
||||
],
|
||||
'-size8': ['FIRA-M', [
|
||||
CHARS.ForFeature('size8', 'FIRA-M')
|
||||
]],
|
||||
'-size9': ['FIRA-M', [
|
||||
CHARS.ForFeature('size9', 'FIRA-M')
|
||||
]],
|
||||
'-size10': ['FIRA-M', [
|
||||
CHARS.ForFeature('size10', 'FIRA-M')
|
||||
]],
|
||||
'-size11': ['FIRA-M', [
|
||||
CHARS.ForFeature('size11', 'FIRA-M')
|
||||
]],
|
||||
'-size12': ['FIRA-M', [
|
||||
CHARS.ForFeature('size12', 'FIRA-M')
|
||||
]],
|
||||
'-size13': ['FIRA-M', [
|
||||
CHARS.ForFeature('size13', 'FIRA-M')
|
||||
]],
|
||||
'-size14': ['FIRA-M', [
|
||||
CHARS.ForFeature('size14', 'FIRA-M')
|
||||
]],
|
||||
'-size15': ['FIRA-M', [
|
||||
CHARS.ForFeature('size15', 'FIRA-M')
|
||||
]],
|
||||
'-tex-variant': ['FIRA-M', [
|
||||
CHARS.Range(0x200C, 0x200F),
|
||||
CHARS.ForFeature('ss02', 'FIRA-M'),
|
||||
CHARS.ForFeature('ss03', 'FIRA-M'),
|
||||
CHARS.ForFeature('ssty1', 'FIRA-M'),
|
||||
CHARS.ForFeature('pnum', 'FIRA-M'),
|
||||
CHARSET.PseudoScriptsMain,
|
||||
CHARSET.PseudoScriptQuotes.feature('ssty1'),
|
||||
]],
|
||||
'-tex-mathit': ['FIRA-I', [
|
||||
CHARSET.Alpha
|
||||
]],
|
||||
'-tex-oldstyle': ['FIRA-R', [
|
||||
CHARSET.Numbers.feature('osf')
|
||||
]],
|
||||
'-tex-bold-oldstyle': ['FIRA-B', [
|
||||
CHARSET.Numbers.feature('osf')
|
||||
]],
|
||||
'-tex-calligraphic': ['CAL-R', [
|
||||
CHARSET.AlphaUC,
|
||||
]],
|
||||
'-tex-bold-calligraphic': ['CAL-B', [
|
||||
CHARSET.AlphaUC,
|
||||
]],
|
||||
'-lf-tp': ['FIRA-M', [
|
||||
CHARS.ForFeature('left', 'FIRA-M'),
|
||||
CHARS.ForFeature('top', 'FIRA-M')
|
||||
]],
|
||||
'-rt-bt': ['FIRA-M', [
|
||||
CHARS.ForFeature('right', 'FIRA-M'),
|
||||
CHARS.ForFeature('bot', 'FIRA-M')
|
||||
]],
|
||||
'-ext': [
|
||||
['FIRA-M', [
|
||||
CHARS.ForFeature('ext', 'FIRA-M'),
|
||||
CHARS.Map({0x2190: 0x2212, 0x21A4: 0x2212})
|
||||
]]
|
||||
],
|
||||
'-mid': ['FIRA-M', [
|
||||
CHARS.ForFeature('mid', 'FIRA-M')
|
||||
]],
|
||||
'-up': ['FIRA-M', [
|
||||
CHARS.ForFeature('up', 'FIRA-M')
|
||||
]],
|
||||
'-dup': ['FIRA-M', [
|
||||
CHARS.ForFeature('display.up', 'FIRA-M')
|
||||
]]
|
||||
}, {
|
||||
spaces: {
|
||||
normal: {
|
||||
0x2000: .5,
|
||||
0x2001: 1,
|
||||
0x2002: .5,
|
||||
0x2003: 1,
|
||||
0x2004: .3333,
|
||||
0x2005: .25,
|
||||
0x2006: .1667,
|
||||
0x2009: .2,
|
||||
0x200A: .1,
|
||||
0x200C: 0,
|
||||
0x200D: 0,
|
||||
0x202F: .2,
|
||||
0x205F: .222,
|
||||
0x2060: 0,
|
||||
0x2061: 0,
|
||||
0x2062: 0,
|
||||
0x2063: 0,
|
||||
0x2064: 0,
|
||||
}
|
||||
},
|
||||
transferHD: [
|
||||
[0x2212, 0x002B] // make minus the same height/depth as plus
|
||||
],
|
||||
fixIC: [
|
||||
['-largeop', .3, CHARS.At(0x222B, 0x222C, 0x222D, 0x2A0C)], // adjust integral italic correction
|
||||
['-largeop', .15, CHARS.At(0x222E, 0x222F, 0x2230)],
|
||||
['normal', .11, CHARS.At(0x222B, 0x222C, 0x222D)]
|
||||
]
|
||||
});
|
||||
|
||||
/***********************************************************************************/
|
||||
|
||||
const FiraDelimiters = Delimiters.define({
|
||||
font: 'FIRA-M',
|
||||
variants: FiraVariants,
|
||||
sizeVariants: ['normal'],
|
||||
stretchVariants: ['normal'],
|
||||
readMathTable: true,
|
||||
add: {
|
||||
0x002F: {dir: 'V', sizes: 7},
|
||||
0x003D: {dir: 'H', sizes: 1, parts: [0, 0x003D]},
|
||||
0x005C: {dir: 'V', sizes: 7},
|
||||
0x005F: {dir: 'H', sizes: 1, parts: [0, 0x005F]},
|
||||
0x00AF: {dir: 'H', sizes: 1, parts: [0, 0x00AF]},
|
||||
0x0302: {dir: 'H', sizes: 7},
|
||||
0x0303: {dir: 'H', sizes: 7},
|
||||
0x0305: {dir: 'H', sizes: 1, parts: [0, 0x0305]},
|
||||
0x0332: {dir: 'H', sizes: 1, parts: [0, 0x0332]},
|
||||
0x2013: {dir: 'H', parts: [0, 0x2013]},
|
||||
0x2014: {dir: 'H', parts: [0, 0x2014]},
|
||||
0x2015: {dir: 'H', parts: [0, 0x2015]},
|
||||
0x2017: {dir: 'H', parts: [0, 0x2015]},
|
||||
0x2190: {dir: 'H', sizes: 1, parts: [[0x2190, '-lf-tp'], 0x2212]},
|
||||
0x2191: {dir: 'V', sizes: 1, parts: [0x2191, [0x2191, '-ext']]},
|
||||
0x2192: {dir: 'H', sizes: 1, parts: [0, 0x2212, [0x2192, '-rt-bt']]},
|
||||
0x2193: {dir: 'V', sizes: 1, parts: [0, [0x2191, '-ext'], 0x2193]},
|
||||
0x2194: {dir: 'H', sizes: 1, parts: [[0x2190, '-lf-tp'], 0x2212, [0x2192, '-rt-bt']]},
|
||||
0x2195: {dir: 'V', sizes: 1, parts: [0x2191, [0x2191, '-ext'], 0x2193]},
|
||||
0x219E: {dir: 'H', sizes: 1, parts: [[0x219E, '-lf-tp'], [0x2190, '-ext']]},
|
||||
0x21A0: {dir: 'H', sizes: 1, parts: [0, [0x2190, '-ext'], [0x21A0, '-rt-bt']]},
|
||||
0x21A4: {dir: 'H', sizes: 1, parts: [[0x2190, '-lf-tp'], [0x21A4, '-ext'], [0x21A4, '-lf-tp']]},
|
||||
0x21A5: {dir: 'V', sizes: 1, parts: [0x2191, [0x2191, '-ext'], 0x005F]},
|
||||
0x21A6: {dir: 'H', sizes: 1, parts: [[0x21A4, '-lf-tp'], [0x21A4, '-ext'], [0x2192, '-rt-bt']]},
|
||||
0x21A7: {dir: 'V', sizes: 1, parts: [0x005F, [0x2191, '-ext'], 0x2193]},
|
||||
0x21BC: {dir: 'H', sizes: 1, parts: [[0x21BC, '-lf-tp'], [0x2190, '-ext']]},
|
||||
0x21BD: {dir: 'H', sizes: 1, parts: [[0x21BD, '-lf-tp'], [0x2190, '-ext']]},
|
||||
0x21BE: {dir: 'V', sizes: 1, parts: [[0x294C, '-lf-tp'], [0x2191, '-ext']]},
|
||||
0x21BF: {dir: 'V', sizes: 1, parts: [[0x294D, '-lf-tp'], [0x2191, '-ext']]},
|
||||
0x21C0: {dir: 'H', sizes: 1, parts: [0, [0x2190, '-ext'], [0x21C0, '-rt-bt']]},
|
||||
0x21C1: {dir: 'H', sizes: 1, parts: [0, [0x2190, '-ext'], [0x21C1, '-rt-bt']]},
|
||||
0x21C2: {dir: 'V', sizes: 1, parts: [0, [0x2191, '-ext'], [0x294D, '-rt-bt']]},
|
||||
0x21C3: {dir: 'V', sizes: 1, parts: [0, [0x2191, '-ext'], [0x294C, '-rt-bt']]},
|
||||
0x21D0: {dir: 'H', sizes: 1, parts: [[0x21D0, '-lf-tp'], [0x21D0, '-ext']]},
|
||||
0x21D1: {dir: 'V', sizes: 1, parts: [0x21D1, 0x2016]},
|
||||
0x21D2: {dir: 'H', sizes: 1, parts: [0, [0x21D0, '-ext'], [0x21D2, '-rt-bt']]},
|
||||
0x21D3: {dir: 'V', sizes: 1, parts: [0, 0x2016, 0x21D3]},
|
||||
0x21D4: {dir: 'H', sizes: 1, parts: [[0x21D0, '-lf-tp'], [0x21D0, '-ext'], [0x21D2, '-rt-bt']]},
|
||||
0x21D5: {dir: 'V', sizes: 1, parts: [0x21D1, 0x2016, 0x21D3]},
|
||||
0x21DA: {dir: 'H', sizes: 1, parts: [[0x21DA, '-lf-tp'], [0x2261, '-ext']]},
|
||||
0x21DB: {dir: 'H', sizes: 1, parts: [0, [0x2261, '-ext'], [0x21DB, '-rt-bt']]},
|
||||
0x2212: {dir: 'H', parts: [0, 0x2212]},
|
||||
0x2223: {dir: 'V', sizes: 1, parts: [0, 0x2223]},
|
||||
0x2225: {dir: 'V', sizes: 1, parts: [0, 0x2225]},
|
||||
0x2261: {dir: 'H', parts: [0, 0x2261]},
|
||||
0x2263: {dir: 'H', parts: [0, 0x2263]},
|
||||
0x23AA: {dir: 'V', sizes: 1, parts: [0, 0x23AA, 0]},
|
||||
0x23AF: {dir: 'H', parts: [0, 0x2013]},
|
||||
0x23B0: {dir: 'V', sizes: 1, parts: [0x23A7, 0x23AA, 0x23AD]},
|
||||
0x23B1: {dir: 'V', sizes: 1, parts: [0x23AB, 0x23AA, 0x23A9]},
|
||||
0x23D0: {dir: 'V', sizes: 1, parts: [0, 0x2223], schar: [0x2223]},
|
||||
0x23E0: {dir: 'H', sizes: 1, parts: [0x2CA, 0x2C9, 0x2CB]},
|
||||
0x23E1: {dir: 'H', sizes: 1, parts: [0x2CB, 0x2C9, 0x2CA]},
|
||||
0x2500: {dir: 'H', parts: [0, 0x2013]},
|
||||
0x2758: {dir: 'V', sizes: 1, parts: [0, 0x2223], schar: [0x2223]},
|
||||
0x27FB: {dir: 'H', sizes: 1, parts: [[0x2190, '-lf-tp'], [0x21A4, '-ext'], [0x21A4, '-lf-tp']]},
|
||||
0x27FC: {dir: 'H', sizes: 1, parts: [[0x21A4, '-lf-tp'], [0x21A4, '-ext'], [0x2192, '-rt-bt']]},
|
||||
0x27FD: {dir: 'H', sizes: 1, parts: [[0x21D0, '-lf-tp'], [0x21D0, '-ext'], [0x21A4, '-lf-tp']]},
|
||||
0x27FE: {dir: 'H', sizes: 1, parts: [[0x21A4, '-lf-tp'], [0x21D0, '-ext'], [0x21D2, '-rt-bt']]},
|
||||
0x2906: {dir: 'H', sizes: 1, parts: [[0x21D0, '-lf-tp'], [0x21D0, '-ext'], [0x21A4, '-lf-tp']]},
|
||||
0x2907: {dir: 'H', sizes: 1, parts: [[0x21A4, '-lf-tp'], [0x21D0, '-ext'], [0x21D2, '-rt-bt']]},
|
||||
0x294A: {dir: 'H', sizes: 1, parts: [[0x21BC, '-lf-tp'], [0x2190, '-ext'], [0x21C1, '-rt-bt']]},
|
||||
0x294B: {dir: 'H', sizes: 1, parts: [[0x21BD, '-lf-tp'], [0x2190, '-ext'], [0x21C0, '-rt-bt']]},
|
||||
0x294C: {dir: 'V', sizes: 1, parts: [[0x294C, '-lf-tp'], [0x2191, '-ext'], [0x294C, '-rt-bt']]},
|
||||
0x294D: {dir: 'V', sizes: 1, parts: [[0x294D, '-lf-tp'], [0x2191, '-ext'], [0x294D, '-rt-bt']]},
|
||||
0x294E: {dir: 'H', sizes: 1, parts: [[0x21BC, '-lf-tp'], [0x2190, '-ext'], [0x21C0, '-rt-bt']]},
|
||||
0x294F: {dir: 'V', sizes: 1, parts: [[0x294C, '-lf-tp'], [0x2191, '-ext'], [0x294D, '-rt-bt']]},
|
||||
0x2950: {dir: 'H', sizes: 1, parts: [[0x21BD, '-lf-tp'], [0x2190, '-ext'], [0x21C1, '-rt-bt']]},
|
||||
0x2951: {dir: 'V', sizes: 1, parts: [[0x294D, '-lf-tp'], [0x2191, '-ext'], [0x294C, '-rt-bt']]},
|
||||
0x295A: {dir: 'H', sizes: 1, parts: [[0x21BC, '-lf-tp'], [0x2190, '-ext'], [0x21A4, '-lf-tp']]},
|
||||
0x295B: {dir: 'H', sizes: 1, parts: [[0x21A4, '-lf-tp'], [0x2190, '-ext'], [0x21C0, '-rt-bt']]},
|
||||
0x295C: {dir: 'V', sizes: 1, parts: [[0x294C, '-lf-tp'], [0x2191, '-ext'], 0x005F]},
|
||||
0x295D: {dir: 'V', sizes: 1, parts: [0x005F, [0x2191, '-ext'], [0x294D, '-rt-bt']]},
|
||||
0x295E: {dir: 'H', sizes: 1, parts: [[0x21BD, '-lf-tp'], [0x2190, '-ext'], [0x21A4, '-lf-tp']]},
|
||||
0x295F: {dir: 'H', sizes: 1, parts: [[0x21A4, '-lf-tp'], [0x2190, '-ext'], [0x21C1, '-rt-bt']]},
|
||||
0x2960: {dir: 'V', sizes: 1, parts: [[0x294D, '-lf-tp'], [0x2191, '-ext'], 0x005F]},
|
||||
0x2961: {dir: 'V', sizes: 1, parts: [0x005F, [0x2191, '-ext'], [0x294C, '-rt-bt']]},
|
||||
},
|
||||
alias: {
|
||||
0x002D: 0x2212,
|
||||
0x005E: 0x0302,
|
||||
0x007E: 0x0303,
|
||||
0x02C6: 0x0302,
|
||||
0x02C9: 0x00AF,
|
||||
0x02DC: 0x0303,
|
||||
0x203E: 0x00AF,
|
||||
0x20D7: 0x2192,
|
||||
0x2215: 0x002F,
|
||||
0x2312: 0x23DC,
|
||||
0x2322: 0x23DC,
|
||||
0x2323: 0x23DD,
|
||||
0x2329: 0x27E8,
|
||||
0x232A: 0x27E9,
|
||||
0x27F5: 0x2190,
|
||||
0x27F6: 0x2192,
|
||||
0x27F7: 0x2194,
|
||||
0x27F8: 0x21D0,
|
||||
0x27F9: 0x21D2,
|
||||
0x27FA: 0x21D4,
|
||||
0x3008: 0x27E8,
|
||||
0x3009: 0x27E9,
|
||||
0xFE37: 0x23DE,
|
||||
0xFE38: 0x23DF
|
||||
}
|
||||
});
|
||||
|
||||
/***********************************************************************************/
|
||||
/***********************************************************************************/
|
||||
|
||||
/*
|
||||
* Ranges to use for dynamically loaded files
|
||||
*/
|
||||
|
||||
/**
|
||||
* The monospace characters other than the ones in the AlphaNumerics block.
|
||||
*/
|
||||
const MONOSPACE: Ranges = [
|
||||
[0x20, 0x2F], [0x3A, 0x40], [0x5B, 0x60], [0x7B, 0x7E],
|
||||
0xA0, 0xA8, 0xB0, 0xB4, 0x131, 0x237,
|
||||
[0x2C6, 0x2DC],
|
||||
[0x300, 0x30C], [0x391, 0x3A9], [0x3B1, 0x3C9],
|
||||
0x3D1, 0x3D2, 0x3D5, 0x3D6, 0x3F0, 0x3F1, 0x3F4, 0x3F5,
|
||||
[0x2190, 0x2199], [0x2200, 0x2265], 0x23DE, 0x23DF, 0x25CA
|
||||
];
|
||||
|
||||
/**
|
||||
* Lesser-used symbols
|
||||
*/
|
||||
const MORE_SYMBOLS: Ranges = [
|
||||
...RANGES.MORE_SYMBOLS, [0xE100, 0xE103]
|
||||
];
|
||||
|
||||
/**
|
||||
* Lesser-used geometric shapes
|
||||
*/
|
||||
const SHAPES: Ranges = [
|
||||
...RANGES.SHAPES, 0x1F784
|
||||
];
|
||||
|
||||
/**
|
||||
* Math characters in bold and italic variants
|
||||
*/
|
||||
const MATH: Ranges = [
|
||||
[0x2190, 0x2199],
|
||||
0x2205, 0x2206, [0x220F, 0x22EF],
|
||||
[0x25B0, 0x25C4], 0x25CA, 0x25CF, 0x2981
|
||||
];
|
||||
|
||||
/***********************************************************************************/
|
||||
|
||||
const FiraData: FontDef = {
|
||||
name: 'MathJaxFira',
|
||||
prefix: 'FIRA',
|
||||
variants: FiraVariants,
|
||||
delimiters: FiraDelimiters,
|
||||
variantFallbacks: {
|
||||
'-tex-calligraphic': 'script',
|
||||
'-tex-bold-calligraphic': 'bold-script'
|
||||
},
|
||||
parameters: {
|
||||
surd_height: .075,
|
||||
rule_thickness: .075
|
||||
},
|
||||
ranges: [
|
||||
['latin', {LR: {normal: RANGES.LATIN}}],
|
||||
['latin-b', {LB: {bold: RANGES.LATIN}}],
|
||||
['latin-i', {LI: {italic: RANGES.LATIN}}],
|
||||
['latin-bi', {LIB: {'bold-italic': RANGES.LATIN}}],
|
||||
['latin-m', {LM: {monospace: RANGES.LATIN}}],
|
||||
['greek', {
|
||||
GR: {normal: RANGES.GREEK},
|
||||
GRB: {bold: RANGES.GREEK},
|
||||
GRI: {italic: RANGES.GREEK},
|
||||
GRBI: {'bold-italic': RANGES.GREEK},
|
||||
GRM: {monospace: RANGES.GREEK}
|
||||
}],
|
||||
['cyrillic', {
|
||||
CY: {normal: RANGES.CYRILLIC},
|
||||
CYB: {bold: RANGES.CYRILLIC},
|
||||
CYI: {italic: RANGES.CYRILLIC},
|
||||
CYBI: {'bold-italic': RANGES.CYRILLIC},
|
||||
CYM: {monospace: RANGES.CYRILLIC}
|
||||
}],
|
||||
['phonetics', {
|
||||
PH: {normal: RANGES.PHONETICS},
|
||||
PHB: {bold: RANGES.PHONETICS},
|
||||
PHI: {italic: RANGES.PHONETICS},
|
||||
PHBI: {'bold-italic': RANGES.PHONETICS}
|
||||
}],
|
||||
['double-struck', {DS: {normal: RANGES.DOUBLESTRUCK}}, [0x2140]],
|
||||
['fraktur', {F: {normal: RANGES.FRAKTUR_NORMAL}}],
|
||||
['script', {S: {normal: RANGES.SCRIPT_NORMAL}}],
|
||||
['sans-serif', {SS: {normal: RANGES.SANSSERIF}}],
|
||||
['monospace', {
|
||||
M: {
|
||||
normal: RANGES.MONOSPACE,
|
||||
monospace: MONOSPACE
|
||||
}
|
||||
}],
|
||||
['calligraphic', {
|
||||
C: {'-tex-calligraphic': RANGES.ALPHAUC},
|
||||
CB: {'-tex-bold-calligraphic': RANGES.ALPHAUC}
|
||||
}],
|
||||
['symbols', {
|
||||
SY: {normal: [...RANGES.SYMBOLS, [0xE100, 0xE103]]}
|
||||
}],
|
||||
['symbols-other', {
|
||||
SYB: {bold: MORE_SYMBOLS},
|
||||
SYI: {italic: MORE_SYMBOLS},
|
||||
SYBI: {'bold-italic': MORE_SYMBOLS},
|
||||
SYM: {monospace: MORE_SYMBOLS}
|
||||
}],
|
||||
['arrows', {
|
||||
AR: {normal: RANGES.ARROWS}
|
||||
}, [
|
||||
0x21A5, 0x21A7, 0x2906, 0x2907, 0x294C, 0x294D, 0x294F,
|
||||
0x2951, 0x295C, 0x295D, 0x2960, 0x2961
|
||||
]],
|
||||
['up-int', {
|
||||
UP: {'-up': RANGES.INTEGRALS},
|
||||
DUP: {'-dup': RANGES.INTEGRALS}
|
||||
}],
|
||||
['accents', {'': {normal: RANGES.ACCENTS}}, [0x332]],
|
||||
['accents-other', {
|
||||
'': {
|
||||
bold: RANGES.ACCENTS,
|
||||
italic: RANGES.ACCENTS,
|
||||
'bold-italic': RANGES.ACCENTS,
|
||||
monospace: RANGES.ACCENTS,
|
||||
}
|
||||
}],
|
||||
['shapes', {
|
||||
SH: {normal: SHAPES},
|
||||
SHB: {bold: SHAPES},
|
||||
SHI: {italic: SHAPES},
|
||||
SHBI: {'bold-italic': SHAPES}
|
||||
}],
|
||||
['math-other', {
|
||||
MXB: {bold: MATH},
|
||||
MXI: {italic: MATH},
|
||||
MXBI: {'bold-italic': MATH}
|
||||
}],
|
||||
['stretchy', {
|
||||
'': {
|
||||
normal: RANGES.PARTS,
|
||||
'-smallop': RANGES.PARTS,
|
||||
'-largeop': RANGES.PARTS,
|
||||
'-size3': RANGES.PARTS,
|
||||
'-size4': RANGES.PARTS,
|
||||
'-size5': RANGES.PARTS,
|
||||
'-size6': RANGES.PARTS,
|
||||
'-size7': RANGES.PARTS,
|
||||
'-size8': RANGES.PARTS,
|
||||
'-size9': RANGES.PARTS,
|
||||
'-size10': RANGES.PARTS,
|
||||
'-size11': RANGES.PARTS,
|
||||
'-size12': RANGES.PARTS,
|
||||
'-size13': RANGES.PARTS,
|
||||
'-size14': RANGES.PARTS,
|
||||
'-size15': RANGES.PARTS,
|
||||
'-lf-tp': RANGES.PARTS,
|
||||
'-rt-bt': RANGES.PARTS,
|
||||
'-ext': RANGES.PARTS
|
||||
}
|
||||
}, [
|
||||
0x221B, 0x221C
|
||||
]],
|
||||
['variants', {
|
||||
VX: {'-tex-variant': [[0x20, 0xFF], [0x200C, 0x200F], [0x2070, 0x209F]]}
|
||||
}]
|
||||
],
|
||||
legal: {
|
||||
addCopyright: 'Copyright (c) 2022 MathJax, Inc. (www.mathjax.org)'
|
||||
}
|
||||
};
|
||||
|
||||
/***********************************************************************************/
|
||||
|
||||
CommonFont.define(FiraData).writeFont();
|
||||
|
||||
Components.define('svg', FiraData).writeFont().writeComponent();
|
||||
SVGFont.define(FiraData).writeFont();
|
||||
|
||||
Components.define('chtml', FiraData).writeFont().writeComponent();
|
||||
CHTMLFont.define(FiraData).writeFont().makeWoffFonts('FIRA-M');
|
||||
|
||||
} catch(err) {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
}
|
||||
Reference in New Issue
Block a user