MathJax:怎么会 "Can't load web font"?
MathJax: How come it "Can't load web font"?
所以我下载了一个 MathJax 包,解压,修改设置并将文件上传到 http 域。在一年多的时间里,一切都尽善尽美。
两天前,我将所有文件(包括数据库)复制到一个新域,激活SSL并修改.htaccess,将所有地址转换为https。这适用于除 MathJax "Can't load web font" 之外的所有内容,每次尝试绘制表达式时都会延迟 10 秒。
Firefox 和 Chrome 都没有在控制台中显示任何类型的错误或文件读取失败(缓存关闭,200 OK)。在浏览器中唯一的影响是 /mathjax/jax/output/HTML-CSS/fonts/STIX-Web/Main/Regular/Main.js
和 /mathjax/jax/output/HTML-CSS/fonts/STIX-Web/Main/Italic/Main.js
之间有 9-10 秒的间隔。
大致时间线……
- 2秒:读取(成功)/mathjax/jax/output/HTML-CSS/fonts/STIX-Web/Main/Regular/Main.js
- 11.5 秒:读取(成功)/mathjax/jax/output/HTML-CSS/fonts/STIX-Web/Main/Italic/Main.js
- 12秒:读取(成功)/mathjax/fonts/HTML-CSS/STIX-Web/woff/STIXMathJax_Main-Regular.woff
日志(最后 4 行)…
- 正在加载 [MathJax]/jax/output/HTML-CSS/fonts/STIX-Web/Main/Regular/Main.js
- 正在加载网络字体STIX-Web/Main/Regular
- 无法加载网络字体STIX-Web/Main/Regular
- 正在加载 [MathJax]/jax/output/HTML-CSS/fonts/STIX-Web/Main/Italic/Main.js
在时间轴中,秒数是尝试的时间戳,而不是持续时间。每个都是 0-100 毫秒。
我尝试过的:
重置 .htaccess,用 http 加载所有内容,将所有 MathJax 文件从旧域重新复制到新域,并确保所有目录和文件都具有适当的权限。我还输入了失败的 woff 文件的路径(在地址栏中),它们可以正确下载。此外,我禁用了 SSL 并修改了脚本标签以从旧域读取设置文件和 MathJax——在尝试读取字体文件之前仍有 10 秒的延迟。
我怎么知道为什么 MathJax 不能加载网络字体?为什么使用相同代码的 MathJax 在一个站点上添加延迟而不是另一个站点?有解决此问题的方法吗?
更新:
这现在真的很奇怪!!在站点之间交叉加载文件后,我已经缩小了连接到我的 CSS 文件的错误!…它完美地通过了验证(并且根本不包含站点之间的字体更改)。我在该文件中所做的主要更改是将包装 div 添加到 body 内的大多数元素,以便将包装设计为 100% 宽度,但内容为 80%。
事实证明,MathJax(2.6.0 和 2.7.2)无法加载字体,因为我在 #MathJax_Font_Test
上设置了 min-width
。我不是故意这样做的,也不知道它会坏掉。这是我的解决方法:
body > div > div:not(#MathJax_Font_Test) {
min-width: 960px;
}
所以我下载了一个 MathJax 包,解压,修改设置并将文件上传到 http 域。在一年多的时间里,一切都尽善尽美。
两天前,我将所有文件(包括数据库)复制到一个新域,激活SSL并修改.htaccess,将所有地址转换为https。这适用于除 MathJax "Can't load web font" 之外的所有内容,每次尝试绘制表达式时都会延迟 10 秒。
Firefox 和 Chrome 都没有在控制台中显示任何类型的错误或文件读取失败(缓存关闭,200 OK)。在浏览器中唯一的影响是 /mathjax/jax/output/HTML-CSS/fonts/STIX-Web/Main/Regular/Main.js
和 /mathjax/jax/output/HTML-CSS/fonts/STIX-Web/Main/Italic/Main.js
之间有 9-10 秒的间隔。
大致时间线……
- 2秒:读取(成功)/mathjax/jax/output/HTML-CSS/fonts/STIX-Web/Main/Regular/Main.js
- 11.5 秒:读取(成功)/mathjax/jax/output/HTML-CSS/fonts/STIX-Web/Main/Italic/Main.js
- 12秒:读取(成功)/mathjax/fonts/HTML-CSS/STIX-Web/woff/STIXMathJax_Main-Regular.woff
日志(最后 4 行)…
- 正在加载 [MathJax]/jax/output/HTML-CSS/fonts/STIX-Web/Main/Regular/Main.js
- 正在加载网络字体STIX-Web/Main/Regular
- 无法加载网络字体STIX-Web/Main/Regular
- 正在加载 [MathJax]/jax/output/HTML-CSS/fonts/STIX-Web/Main/Italic/Main.js
在时间轴中,秒数是尝试的时间戳,而不是持续时间。每个都是 0-100 毫秒。
我尝试过的: 重置 .htaccess,用 http 加载所有内容,将所有 MathJax 文件从旧域重新复制到新域,并确保所有目录和文件都具有适当的权限。我还输入了失败的 woff 文件的路径(在地址栏中),它们可以正确下载。此外,我禁用了 SSL 并修改了脚本标签以从旧域读取设置文件和 MathJax——在尝试读取字体文件之前仍有 10 秒的延迟。
我怎么知道为什么 MathJax 不能加载网络字体?为什么使用相同代码的 MathJax 在一个站点上添加延迟而不是另一个站点?有解决此问题的方法吗?
更新:
这现在真的很奇怪!!在站点之间交叉加载文件后,我已经缩小了连接到我的 CSS 文件的错误!…它完美地通过了验证(并且根本不包含站点之间的字体更改)。我在该文件中所做的主要更改是将包装 div 添加到 body 内的大多数元素,以便将包装设计为 100% 宽度,但内容为 80%。
事实证明,MathJax(2.6.0 和 2.7.2)无法加载字体,因为我在 #MathJax_Font_Test
上设置了 min-width
。我不是故意这样做的,也不知道它会坏掉。这是我的解决方法:
body > div > div:not(#MathJax_Font_Test) {
min-width: 960px;
}