使用 python-livereload 无法正确提供字体
Fonts not being served correctly using python-livereload
我正在使用 Sphinx 构建文档项目。我创建了这个脚本来监视目录并在发生更改时触发 Sphinx 构建:
import os
import sys
from livereload import Server, shell
wd = os.path.dirname(sys.argv[0])
server = Server()
server.watch(wd, shell('make.bat clean && make.bat html', cwd=wd), delay=1)
server.serve(root='../_build/html', port=8000, host='localhost')
这很好用,但是主题 (ReadTheDocs) 中的所有网络字体都在使用 Content-Type: text/html
传输并且 Chrome 开发者控制台显示:
Failed to decode downloaded font: http://localhost:8000/_static/fonts/Lato-Regular.ttf
Failed to decode downloaded font: http://localhost:8000/_static/fonts/fontawesome-webfont.woff?v=4.2.0
Failed to decode downloaded font: http://localhost:8000/_static/fonts/Lato-Bold.ttf
Failed to decode downloaded font: http://localhost:8000/_static/fonts/RobotoSlab-Bold.ttf
Failed to decode downloaded font: http://localhost:8000/_static/fonts/RobotoSlab-Regular.ttf
Failed to decode downloaded font: http://localhost:8000/_static/fonts/fontawesome-webfont.ttf?v=4.2.0
但是,指向同一目录的本地 IIS 网站工作正常。我假设这是 TornadoServer 的问题 - 可能将未知的 MIME 类型默认为 text/html
。有人对此有解决方案吗?
我使用 ASP.NET 文档作为起点:https://github.com/aspnet/Docs/。当遵循他们的贡献指南(使用 sphinx-autobuild
)时,这有同样的问题。
Tornado 从 python 标准库的 mimetypes module 获取静态文件的 MIME 类型。您需要确保您的系统 mimetypes 数据库(通常 /etc/mime.types
。您的问题表明您使用的是 Windows,这不是 Tornado 官方支持的平台。我不知道是否 Windows 甚至有一个等价物)包括您要提供的所有文件类型,或者用 mimetypes.add_type
.
手动补充它
我正在使用 Sphinx 构建文档项目。我创建了这个脚本来监视目录并在发生更改时触发 Sphinx 构建:
import os
import sys
from livereload import Server, shell
wd = os.path.dirname(sys.argv[0])
server = Server()
server.watch(wd, shell('make.bat clean && make.bat html', cwd=wd), delay=1)
server.serve(root='../_build/html', port=8000, host='localhost')
这很好用,但是主题 (ReadTheDocs) 中的所有网络字体都在使用 Content-Type: text/html
传输并且 Chrome 开发者控制台显示:
Failed to decode downloaded font: http://localhost:8000/_static/fonts/Lato-Regular.ttf
Failed to decode downloaded font: http://localhost:8000/_static/fonts/fontawesome-webfont.woff?v=4.2.0
Failed to decode downloaded font: http://localhost:8000/_static/fonts/Lato-Bold.ttf
Failed to decode downloaded font: http://localhost:8000/_static/fonts/RobotoSlab-Bold.ttf
Failed to decode downloaded font: http://localhost:8000/_static/fonts/RobotoSlab-Regular.ttf
Failed to decode downloaded font: http://localhost:8000/_static/fonts/fontawesome-webfont.ttf?v=4.2.0
但是,指向同一目录的本地 IIS 网站工作正常。我假设这是 TornadoServer 的问题 - 可能将未知的 MIME 类型默认为 text/html
。有人对此有解决方案吗?
我使用 ASP.NET 文档作为起点:https://github.com/aspnet/Docs/。当遵循他们的贡献指南(使用 sphinx-autobuild
)时,这有同样的问题。
Tornado 从 python 标准库的 mimetypes module 获取静态文件的 MIME 类型。您需要确保您的系统 mimetypes 数据库(通常 /etc/mime.types
。您的问题表明您使用的是 Windows,这不是 Tornado 官方支持的平台。我不知道是否 Windows 甚至有一个等价物)包括您要提供的所有文件类型,或者用 mimetypes.add_type
.