Closed pkra closed 4 years ago
Argh! I used the wrong offset for the bold-italic letters. You can fix this using
MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready", function () {
var HTMLCSS = MathJax.OutputJax["HTML-CSS"];
HTMLCSS.Augment({FONTDATA: {VARIANT: {'bold-italic': {offsetA: 0x1D468}}}});
});
MathJax.Hub.Register.StartupHook("SVG Jax Ready", function () {
var SVG = MathJax.OutputJax.SVG;
SVG.Augment({FONTDATA: {VARIANT: {'bold-italic': {offsetA: 0x1D468}}}});
});
which will set up the correct values. You should be able to put these into a local extension that you load into mathjax-node via the --extensions
option until the data is fixed officially.
Thanks, Davide!
@dpvc I recently ran into the same problem with bold italic greek characters reported as unknown characters. I believe STIX 1 has those as well. If you could share a similar patch, that'd be great.
@pkra, I'm not able to reproduce that. With
#! /usr/bin/env node
var mjAPI = require("./lib/main.js");
mjAPI.config({MathJax: {SVG: {font: "STIX-Web"}}});
mjAPI.typeset({
math: '<math><mtext mathvariant="bold-italic">Γγ</mtext></math>',
format: "MathML",
svg: true,
ex: 6, width: 100,
}, function (data) {
if (!data.errors) {
console.log(data.svg);
}
});
I get the output of
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="2.461ex" height="2.509ex" style="vertical-align: -0.671ex; margin-left: -0.029ex; margin-right: -0.053ex;" viewBox="-12.5 -791.3 1059.5 1080.4" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
<title id="MathJax-SVG-1-Title">Equation</title>
<defs aria-hidden="true">
<path stroke-width="1" id="E1-STIXWEBMAINBI-393" d="M670 669l-43 -190l-27 5c0 51 -4 80 -20 100c-32 40 -83 53 -167 53c-41 0 -53 -10 -63 -48l-125 -457c-8 -30 -15 -50 -15 -63c0 -31 15 -40 71 -44v-25h-294v25c58 6 67 24 82 79l121 442c6 23 10 46 10 61c0 20 -11 29 -42 33l-31 4v25h543Z"></path>
<path stroke-width="1" id="E1-STIXWEBMAINBI-3B3" d="M461 449l-263 -411c0 -77 -18 -242 -112 -242c-44 0 -52 41 -52 63c0 60 63 141 118 229c10 73 12 86 12 141c0 68 -17 136 -66 136c-18 0 -52 -4 -68 -68h-27c16 88 64 165 125 165c71 0 78 -65 78 -135c0 -33 -2 -102 -5 -135l136 257h124Z"></path>
</defs>
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
<use xlink:href="#E1-STIXWEBMAINBI-393"></use>
<use xlink:href="#E1-STIXWEBMAINBI-3B3" x="585" y="0"></use>
</g>
</svg>
which does have the proper paths for the characters, not unknown characters, which would be in <text>
nodes.
I've also checked that the the offsets for the bold-italic Greek letters are correct, and they work properly in a browser as well, both in HTML-CSS and SVG with the STIX-Web font.
Can you give an example that is not working for you?
Thanks for checking, @dvpc. It turns out that we had raw Unicode in TeX, e.g., $𝜶$
. Those do trigger the problem for me but I'm not sure if that's a relevant use case. In any case, I think I can fix that on our end.
Ok, thanks for the additional information, @pkra. This turns out to be another instance of the bad font data for the STIX-Web font. The characters in the Math Alphabets unicode block are broken into separate files, and the bold italic Greek are in the STIXMathJax_Normal-BoldItalic font, but that font is only searched as part of the bold-italic
mathvariant, and not as part of the normal
variant, which is where a raw 𝜶
will be specified (it will produce <mo>𝜶</mo>
, which has mathvariant="normal"
by default). All the Math Alphabet characters should be part of the normal variant (and every other variant, for that matter), but they aren't in STIX-Web.
The list of fonts to use for each of the variants is incomplete in STIX-Web (and the other web fonts). For example, the fraktur
variant only searches the Fraktur font, so if any non-fraktur characters are use in that variant, they will end up being unknown, even if they are available in the normal variant. The font lists for the MathJax TeX (and HTML-CSS local STIX) fonts were carefully arranged to make the variants work even when characters that aren't the natural ones for those variants are used. Unfortunately, that is not the case for the other web fonts.
Thanks for the additional information, Davide.
Hi. I'm having this problem too!
Can someone give me more info about https://github.com/mathjax/MathJax/issues/2035#issuecomment-407879570 please?
If I copy paste the startup hooks into:
It works.
If I try to write my own extensions and load it from a directory in my own node app, MathJax fails to load. I looked at tutorials, code example, and I don't get it yet...
As an aside. I also tried https://github.com/mathjax/MathJax/pull/2038 That fixes the issue. I'm already using a dev branch for a previous issue and i'm reluctant to keep pointing at things that are not released / forking. Is there an ETA for the linked, PR opened last year?
Edit / PS: PS: Here's a test case:
\boldsymbol{\Delta{p}_1=F_1\Delta{t},}
If I try to write my own extensions and load it from a directory in my own node app, MathJax fails to load.
Without having the code, it's hard to help.
The following is roughly what should happen:
MathJax.Extension['mypatch'] = {
version: '1.0.0'
};
MathJax.Hub.Register.StartupHook("SVG Jax Ready", function () {
var SVG = MathJax.OutputJax.SVG;
SVG.Augment({FONTDATA: {VARIANT: {'bold-italic': {offsetA: 0x1D468}}}});
});
MathJax.Callback.Queue(['loadComplete', MathJax.Ajax, '[mypatch]/mypatch.js']);
Its filename must match the loadcomplete, i.e., mypatch.js
.
Then in mathjax-node's configuration, e.g.,
mathjax.config({
paths: {
'mypatch': path.dirname(require.resolve('mypatch')) // if the patch is installed via npm but you get the idea
},
extensions: '[mypatch]/mypatch'
...
}
In testsuite:
MathMLToDisplay/Characters/issue2035.html
E.g.,
<math><mi mathvariant="bold-italic">x</mi></math>
fails to locate a glyph in the STIX-web fonts (in both SVG and HTML-CSS).Possibly a regression after #1923 (since 2.7.4 uses STIXWEBMAINBI).