2017-06-03 9 views
0

を失敗した場合、画像のフォントの前にSVGをお試しくださいMathjaxフォールバック:(。私はSTIXフォントを使用していますが、問題は同様にTeXのフォントに関連する)HTML-CSSのwebfontが

私の質問:どのように私は私の上mathjaxを設定しますページを表示しているユーザーが次の1 - > 2 - > 3フォールバックチェーンを経験するようにします。

  1. HTML-CSS(webFont "STIX・ウェブ"、地元の "STIX")
  2. SVG( "STIX・ウェブ")
  3. 他のすべてのフォールバックオプション(ローカルジェネリック、画像、など)

言い換えれば、HTML-CSSを一番上に保つことですが、HTML-CSSが失敗した場合は、その後はローカルの汎用フォントや画像フォントではなくSVGに戻ります。

フォールバックは、(1)のすべての種類の障害に対して機能する必要があります。たとえば、ユーザーがフォントをローカルにインストールしていないか、WebページのローカルフォントをavailableFonts: []preferredFont: nullで明示的に無効にしているため、HTML-CSSのローカルフォントを使用できない場合や、HTML -CSS Webフォントは使用できません(ユーザーはWebフォントを無効にしていますが、ブラウザは同じ原ポリシーが適用されます)。

これは、クライアントのユーザーが最後に選択した数学コンテキストメニューのレンダラーとは独立して動作するはずです。現在、クライアントブラウザ上で、ユーザーが最後に選択したHTML-CSSが数式メニューを介してレンダラーとして使用された場合、(1)が失敗すると、mathjaxは(3)に戻り、(2)をスキップします。また、ユーザがSVGをレンダラとして最後に選択した場合、HTML-CSSはもはや第1の選択肢ではなくなりました。つまり、(1)は完全にスキップされます。

+0

、これは_serverのside_の質問だった:私のページの視聴者が上記のフォールバック動作が表示されるようにどのように私は私のWebページ上のmathjaxを設定しますか。 – GDGP

答えて

0

次の設定は、私の限られたテストでは、 の必要なフォールバックチェーンを実装しているようです。ただ、明確にする

<script type="text/javascript" 
    src="../MathJax-2.7.1/MathJax.js?config=TeX-AMS-MML_SVG"> 
</script> 

<script type="text/x-mathjax-config"> 
// 
// - Mathjax config to implement the following fallback chain: 
// 
//  1. HTML-CSS webFont ("STIX-Web") 
//  2. SVG ("STIX-Web") 
//  3. Other fallback fonts (local generic, image, etc) 
// 
// - Change availableFonts to ["STIX"] and preferredFont to "STIX" 
// to allow local STIX fonts. Implements the fallback chain below: 
// 
//  1. HTML-CSS local ("STIX") 
//  2. HTML-CSS webFont ("STIX-Web") 
//  3. SVG ("STIX-Web") 
//  4. Other fallback fonts (local generic, image, etc) 
// 

// 
// Use STIX font consistently across HTML-CSS and SVG 
// 
MathJax.Hub.Config({ 
    jax: ["input/TeX", "input/MathML", 
     "output/HTML-CSS", "output/SVG", "output/PreviewHTML" 
    ], 
    "HTML-CSS": { 
     imageFont: null, 
     webFont: "STIX-Web", 
     availableFonts: [], // Or: ["STIX"], to allow local 
     preferredFont: null // Or: "STIX", to allow local 
    }, 
    "SVG": { 
     font: "STIX-Web" 
    } 
}); 

MathJax.Hub.Register.StartupHook("End Jax", function() { 

    // 1. Set HTML-CSS as the initially preferred output processor. 
    // (Temporarily overrides the renderer value set by MathMenu 
    // without affecting the user's chosen renderer elsewhere.) 
    var jax = "HTML-CSS"; 
    MathJax.Hub.setRenderer(jax); 

    // 2. Install callback which switches renderer to SVG if HTML-CSS fails. 
    var nopast = true; 
    MathJax.Hub.Startup.signal.Interest(QueSVGfallback, nopast); 

}); 

</script> 

<script> 
// 
// This callback (when installed) scans through messages to check 
// (as in FontWarnings.js) if HTML-CSS font loading has failed. 
// If so, it queues a request to switch to SVG rendering. 
// 
var QueSVGfallback = (function() { // Anonymous "closure" to keep quecount 
    var quecount = 0; 
    return function(m) {    // The real callback function 
     if (quecount > 0) return;  // Prevent multiple queueing 
     m = m + ""; 
     if (m.match(/HTML-CSS Jax - /)) { 
      if (m.match(/- using image fonts/) || 
        m.match(/- no valid font/) || 
        m.match(/- disable web fonts/)) { 
       MathJax.Hub.Queue(
        ["setRenderer", MathJax.Hub, "SVG", "jax/mml"], 
        ["Rerender", MathJax.Hub] 
       ); 
       quecount++; 
      } 
     } 
    } 
})(); 
</script> 
関連する問題