MathJaxはCommonHTML出力で使うべきである

  • MathJaxはそんなに遅くない
  • MathJaxのCommonHTML出力は速い
  • 基本的にSVG出力よりも良い

背景

このサイトに数式表示を導入したかった.

MathJaxの存在は数年前から知っていたが,数年前から知識をアップデートしていなかったため,「MathJaxは遅い」という認識だった.

そこで\(KaTeX\)を使おうと考えていたが,調べ直した所,今の\(MathJax\)はさほど遅くなかったので,MathJaxを導入した.

CommonHTML

CommonHTML出力はすべてのモダンブラウザで高品質の出力を生成します,結果はブラウザとOS間で一貫しています.これはMathJax v2.6から,MathJax’sの基本的なモードです.主な利点は,品質,一貫性,速度,サーバーサイドでのサポートです.IE9と同等のブラウザをサポートしており,古い世代のブラウザでは正常に機能しなくなります.CommonHTML出力はwebベースのフォントを使用しているため,ユーザはコンピュータに数式フォントをインストールする必要はありません.現在はMathJaxのデフォルトのフォントのみをサポートしています.

MathJax Output Formats — MathJax 2.7 documentation

メリット

  • SVG出力と同等程度に高速
  • SVG出力と違い,文字列がコピー可能
  • ユーザがMathJax用のフォントをインストールしていれば,webフォントを使う必要がないため更に高速

デメリット

近年webフォントは無闇矢鱈と乱用されている.

無用なwebフォントは有害である.

  • ページ読み込みが低速化する
  • 好みではないフォントで文字が表示されると読みにくい
  • 読込中にテキストが白紙化されるサイトが存在する

そのため,webフォントを拡張機能を使ってブロックするユーザが存在する.firefox for androidに至っては,webフォントをオフにするオプションを備えている.Android 版 Firefox で Web フォントをオフにする | Android 版 Firefox ヘルプ

かくいう私もwebフォントバカに嫌気がさし,モバイル環境ではwebフォントをオフにしていた1人である.

当然,webフォントをオフにしている環境では,CommonHTML出力を使うと通常のフォントで表示されることになる.それがどうしても嫌ならばSVG出力を使うべきだが,通常のフォントでも分数\(\frac{a}{b}\)や行列\(\pmatrix{a & b \cr c & d}\)のレイアウトなどは正常に行われるため,妥協するのも選択肢である.