import {CHARSET, CHARS} from '@mathjax/font-tools/js/CharMap.js'; import {Font} 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 {FontDef} from '@mathjax/font-tools/js/CommonFont.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'; import {FontData} from 'mathjax-full/mjs/output/common/FontData.js'; import {GenericFont as GenericSVGFont} from '@mathjax/fonts/generic/mjs/svg.js'; import {GenericFont as GenericCHTMLFont} from '@mathjax/fonts/generic/mjs/chtml.js'; /***********************************************************************************/ try { Font.load({ 'MB-bbm': ['fonts/bbm10.otf', {}], 'MB-bbmbx': ['fonts/bbmbx10.otf', {}], 'MB-bbmss': ['fonts/bbmss10.otf', {}], 'MB-bbmssbx': ['fonts/bbmssbx10.otf', {}], 'MB-bbmtt': ['fonts/bbmtt10.otf', {}], }); /***********************************************************************************/ const MathJaxBbmVariants = Variants.define({ '-bbm-normal': ['MB-bbm', [ CHARS.MapFrom(0x41, CHARSET.MathDoubleStruckUC), CHARS.MapFrom(0x61, CHARSET.MathDoubleStruckLC), CHARS.MapFrom(0x31, CHARS.At(0x1D7D9, 0x1D7DA)), CHARS.At(0x28, 0x29), // ( and ) CHARS.At(0x5B, 0x5D), // [ and ] ]], '-bbm-bold': ['MB-bbmbx', [ CHARS.MapFrom(0x41, CHARSET.MathDoubleStruckUC), CHARS.MapFrom(0x61, CHARSET.MathDoubleStruckLC), CHARS.MapFrom(0x31, CHARS.At(0x1D7D9, 0x1D7DA)), CHARS.At(0x28, 0x29), // ( and ) CHARS.At(0x5B, 0x5D), // [ and ] ]], '-bbm-sans-serif': ['MB-bbmss', [ CHARS.MapFrom(0x41, CHARSET.MathDoubleStruckUC), CHARS.MapFrom(0x61, CHARSET.MathDoubleStruckLC), CHARS.MapFrom(0x31, CHARS.At(0x1D7D9, 0x1D7DA)), CHARS.At(0x28, 0x29), // ( and ) CHARS.At(0x5B, 0x5D), // [ and ] ]], '-bbm-sans-serif-bold': ['MB-bbmssbx', [ CHARS.MapFrom(0x41, CHARSET.MathDoubleStruckUC), CHARS.MapFrom(0x61, CHARSET.MathDoubleStruckLC), CHARS.MapFrom(0x31, CHARS.At(0x1D7D9, 0x1D7DA)), CHARS.At(0x28, 0x29), // ( and ) CHARS.At(0x5B, 0x5D), // [ and ] ]], '-bbm-monospace': ['MB-bbmtt', [ CHARS.MapFrom(0x41, CHARSET.MathDoubleStruckUC), CHARS.MapFrom(0x61, CHARSET.MathDoubleStruckLC), CHARS.MapFrom(0x31, CHARS.At(0x1D7D9, 0x1D7DA)), CHARS.At(0x28, 0x29), // ( and ) CHARS.At(0x5B, 0x5D), // [ and ] ]], }); /***********************************************************************************/ const MathJaxBbmDelimiters = { font: 'MB-bbm', variants: MathJaxBbmVariants, sizeVariants: ['normal'], stretchVariants: ['normal'], readMathTable: false, }; /***********************************************************************************/ const MathJaxBbmData: FontDef = { name: 'MathJaxBbm', prefix: 'MB', variants: MathJaxBbmVariants, delimiters: null, variantFallbacks: { '-bbm-normal': ['normal'], '-bbm-bold': ['bold'], '-bbm-sans-serif': ['sans-serif'], '-bbm-sans-serif-bold': ['bold-sans-serif'], '-bbm-monospace': ['monospace'] }, variantSmp: { '-bbm-normal': 'double-struck', '-bbm-bold': 'double-struck', '-bbm-sans-serif': 'double-struck', '-bbm-sans-serif-bold': 'double-struck', '-bbm-monospace': 'double-struck' } }; const MathJaxBbmSVGData: FontDef = { ...MathJaxBbmData, delimiters: Delimiters.define({ ...MathJaxBbmDelimiters, extends: { fontClass: GenericSVGFont as typeof FontData, path: '@mathjax/fonts/generic/mjs/svg.js' }, }) }; const MathJaxBbmCHTMLData: FontDef = { ...MathJaxBbmData, delimiters: Delimiters.define({ ...MathJaxBbmDelimiters, extends: { fontClass: GenericCHTMLFont as typeof FontData, path: '@mathjax/fonts/generic/mjs/chtml.js' }, }) }; SVGFont.define(MathJaxBbmSVGData).writeExtension('mathjax-bbm'); Components.define('svg', MathJaxBbmSVGData).writeExtension(); CHTMLFont.define(MathJaxBbmCHTMLData).writeExtension('mathjax-bbm').makeWoffFonts('MB-bbm', false); Components.define('chtml', MathJaxBbmCHTMLData).writeExtension(); } catch (err) { console.log(err); process.exit(1); }