• 作成:

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

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

背景

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

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

そこでKaTeXKaTeXを使おうと考えていたが, 調べ直した所, 今のMathJaxMathJaxはさほど遅くなかったので, 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出力を使うべきだが, 通常のフォントでも分数ab\frac{a}{b}や行列$\pmatrix{a & b \cr c & d}$のレイアウトなどは正常に行われるため, 妥協するのも選択肢である.