mathjax字体支持

mathjax版本3目前只支持一种字体,mathjax-tex字体。版本2提供以下字体:

  • mathjax-tex(默认)

  • 斯蒂克斯将军

  • 体式数学

  • 新欧拉

  • 鞍状回

  • 特雷姆斯

  • 拉丁现代

mathjax包含这些字体的自定义webfont版本。特别是,这些自定义版本被拆分到多个文件上,以最小化页面负载。

mathjax 3将在将来的版本中支持这些字体。

其他字体的使用

在mathjax的第2版中,很难调整正在使用的字体(加载后),或者替换正在使用的单个或集合字符。例如,在版本2中,将变量和函数名切换为使用无衬线字体而不是标准衬线字体是相当困难的。版本3中字体数据的结构已经完全重新设计,以帮助更容易进行此类更改。

由于浏览器不提供访问字体指标的API,因此MathJAX必须附带必要的字体数据;这些字体数据是在开发过程中生成的,在飞翔上很难确定。用于创建MathJax所需数据的工具尚未为版本3创建(MathJax Tex字体的数据是手动从版本2格式转换而来的)。这些工具是MathJax下一版本中最重要的工具,它将提供初始版本3中缺少的附加字体。届时,将提供有关如何混合和匹配字体字符以及如何为您自己的字体创建数据文件以在MathJax中使用的详细信息。在这一点上,我们将介绍如何混合和匹配字体字符,以及如何为您自己的字体创建数据文件,以便在MathJax中使用。

角色回退

没有任何字体包含Unicode标准中指定的每个字符的适当标志符号。当mathjax遇到一个不在它使用的字体中的字符时,它将以各种方式返回到其他字体。

首先,mathjax增强了默认tex字体的unicode覆盖率,例如,组合两个二重积分 U+222C 当四重积分 U+2A0C 使用。但是,这不能创建Unicode中指定的每个字符。接下来,mathjax将在配置好的字体中运行一个回退链(例如,用斜体希腊文替换直立希腊文)。

最后,当所有其他操作都失败时,mathjax将要求浏览器从系统字体提供glyph。因为在最后一种情况下,mathjax在glyph的边界框中将没有必要的数据,mathjax将猜测这些度量。在浏览器中运行时,mathjax将能够确定字符的宽度,但不能确定其高度和深度,因此它将使用这些度量的默认值。测量宽度会对渲染速度产生负面影响,猜测高度和深度会降低结果输出的质量。当在服务器或命令行应用程序中使用时,mathjax甚至无法确定宽度,这通常会对布局产生更严重的后果。因此,在使用服务器端呈现时,最好只使用mathjax字体中的字符。