рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдо рдЧрдгрд┐рдд рдХреЗ рднрд╛рд╡реЛрдВ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╣рдордиреЗ рдпрд╣реА рдХрд┐рдпрд╛ рд╣реИ:
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдЧреНрд▓рд┐рдлрд╝ рд╕реЗ рдирдИ рдЧрджреНрджреА рд╢реИрд▓реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
рдкреИрдбрд┐рдВрдЧ-рдЯреЙрдк: рдЧреНрд▓рд┐рдлрд╝.рдореЗрдХреНрд╕ / рдлреЙрдиреНрдЯ
рдкреИрдбрд┐рдВрдЧ-рд▓реЗрдлреНрдЯ: рдЧреНрд▓рд┐рдлрд╝.рдбрд╛рд╡реЗрдВрд╕рд╡реАрдб / рдлреЙрдиреНрдЯ.рдЯреБрдирдЯреНрд╕рдкреЗрд░рд┐рдо
рдкреИрдбрд┐рдВрдЧ-рдмреЙрдЯрдо: -glyph.yMin / font.unitsPerEm
рдЧрджреНрджреА-рд╕рд╣реА: 0
рдЕрдм рддрдХ рдЧрдгрд┐рдд рдХреЗ рднрд╛рд╡ рдЕрдЪреНрдЫреЗ рд▓рдЧрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХреБрдЫ рд╕рд╡рд╛рд▓ рд╣реИрдВ:
рдпрджрд┐ рдЧреНрд▓рд┐рд╕рд┐рди рдмреЗрд╕рд▓рд╛рдЗрди (yMin> 0) рд╕реЗ рдКрдкрд░ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдкреИрдбрд┐рдВрдЧ-рдЯреЙрдк рдФрд░ рдкреИрдбрд┐рдВрдЧ-рдмреЙрдЯрдо рдХреИрд╕реЗ рдорд┐рд▓реЗрдЧрд╛?
рдХреНрдпрд╛ рдХреБрдЫ рдФрд░ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рд╣рдо рдЧрд╛рдпрдм рд╣реИрдВ?
рдЖрдкрдХреЛ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ MathJax рдЖрдкрдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдбреЗрдЯрд╛ рд╕реЗ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрди рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдбреЗрдЯрд╛ рдХреА рдЬрдЧрд╣ рд▓реЗрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдПрдХ рдирдП рдлрд╝реЙрдиреНрдЯ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП MathJax рдлрд╝реЙрдиреНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп) рд╕реЗ рд▓реЗ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП TeXFont
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдирдП рд╡рд░реНрдгреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд╝реЙрдиреНрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реАрдПрд╕рдПрд╕ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╡реЗрдм рдлреЛрдВрдЯ рдХреЗ рд▓рд┐рдП @font-face
рдирд┐рдпрдо рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдПрд░рд┐рдпрд▓ рдлрд╝реЙрдиреНрдЯ (рд╕реНрдерд╛рдиреАрдп рдлрд╝реЙрдиреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛) рд╕реЗ A
рдХреЛ рд╕рд╛рдорд╛рдиреНрдп, рдмреЛрд▓реНрдб рдФрд░ рдЗрдЯреИрд▓рд┐рдХ рд╡реЗрд░рд┐рдПрдВрдЯ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<title>Replace Glyph in CHTML Font</title>
<script>
MathJax = {
startup: {
ready() {
//
// If you make your own component, these would be obtained
// via require() or import commands
//
const TeXFont = MathJax._.output.chtml.fonts.tex_ts.TeXFont;
const Package = MathJax._.components.package.Package;
//
// Font data, by variant and Unicode position. The array is
// height, depth, width, and additional information. Here f gives
// the font specifier (which refers to the defaultStyles and
// defaultFonts given below).
//
const chars = {
normal: {
0x41: [.73, 0, .667, {f: 'M-R'}]
},
bold: {
0x41: [.73, 0, .722, {f: 'M-B'}]
},
italic: {
0x41: [.73, 0, .667, {f: 'M-I'}]
},
};
class MyFont extends TeXFont {
constructor(options) {
super(options);
//
// Add in the characters for the substitute font defined in chars
//
for (const variant of Object.keys(chars)) {
this.defineChars(variant, chars[variant]);
}
}
}
//
// Add the font styles to select the proper fonts
//
Object.assign(MyFont.defaultStyles, {
'.TEX-M-R': {
'font-family': 'MJXZERO, MJXTEX-M-R'
},
'.TEX-M-B': {
'font-family': 'MJXZERO, MJXTEX-M-B',
},
'.TEX-M-I': {
'font-family': 'MJXZERO, MJXTEX-M-I'
}
});
//
// Add the font definitions (using local fonts, but could be web fonts)
//
Object.assign(MyFont.defaultFonts, {
'@font-face /* M-R */': {
'font-family': 'MJXTEX-M-R',
src: 'local("Arial"), local("Arial-Regular")'
},
'@font-face /* M-B */': {
'font-family': 'MJXTEX-M-B',
src: 'local("Arial Bold"), local("Arial-Bold")'
},
'@font-face /* M-I */': {
'font-family': 'MJXTEX-M-I',
src: 'local("Arial Italic"), local("Arial-italic")'
}
});
//
// Configure CommonHTML to use the new font
//
MathJax.config.chtml = {font: new MyFont({fontURL: Package.resolvePath('output/chtml/fonts/woff-v2', false)})};
MathJax.startup.defaultReady();
}
}
};
</script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
</head>
<body>
<p style="font-size: 200%">
$$ABx + {\bf AB} + {\rm AB}$$
</p>
</body>
</html>
рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреЛ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред
рд╣рдо рдЕрдзрд┐рдХ рдлрд╝реЙрдиреНрдЯ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рддрдХ рдкреНрд░рд╛рдЗрдо рдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рд╡реЗ рдЕрдЧрд▓реЗ рд╡рд░реНрд╖ Q2 рддрдХ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рд╕рдм рдареАрдХ рд╣реЛ рдЬрд╛рдПред
PS, yMin> 0 рд╡рд╛рд▓реЗ рдкрд╛рддреНрд░реЛрдВ рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рдЧрд╣рд░рд╛рдИ рд╣реЛрдЧреА, рдЬрд┐рд╕рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕реЗ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рдХрд░реВрдВрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдкрдХреЛ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ MathJax рдЖрдкрдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдбреЗрдЯрд╛ рд╕реЗ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрди рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдбреЗрдЯрд╛ рдХреА рдЬрдЧрд╣ рд▓реЗрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдПрдХ рдирдП рдлрд╝реЙрдиреНрдЯ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП MathJax рдлрд╝реЙрдиреНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп) рд╕реЗ рд▓реЗ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП
TeXFont
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдирдП рд╡рд░реНрдгреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд╝реЙрдиреНрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реАрдПрд╕рдПрд╕ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╡реЗрдм рдлреЛрдВрдЯ рдХреЗ рд▓рд┐рдП@font-face
рдирд┐рдпрдо рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВредрдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдПрд░рд┐рдпрд▓ рдлрд╝реЙрдиреНрдЯ (рд╕реНрдерд╛рдиреАрдп рдлрд╝реЙрдиреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛) рд╕реЗ
A
рдХреЛ рд╕рд╛рдорд╛рдиреНрдп, рдмреЛрд▓реНрдб рдФрд░ рдЗрдЯреИрд▓рд┐рдХ рд╡реЗрд░рд┐рдПрдВрдЯ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИредрд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреЛ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред
рд╣рдо рдЕрдзрд┐рдХ рдлрд╝реЙрдиреНрдЯ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рддрдХ рдкреНрд░рд╛рдЗрдо рдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рд╡реЗ рдЕрдЧрд▓реЗ рд╡рд░реНрд╖ Q2 рддрдХ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рд╕рдм рдареАрдХ рд╣реЛ рдЬрд╛рдПред