使用python-livereload无法正确提供字体

时间:2015-05-27 16:43:22

标签: fonts tornado python-sphinx 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 Docs作为起点:https://github.com/aspnet/Docs/。遵循其贡献准则(使用sphinx-autobuild)时会出现同样的问题。

1 个答案:

答案 0 :(得分:2)

Tornado从python标准库mimetypes module获取静态文件的mime类型。你需要确保你的系统mimetypes数据库(通常是/etc/mime.types。你的问题表明你正在使用Windows,这不是Tornado官方支持的平台。我不知道Windows是否有一个等效的)包括您要提供的所有文件类型,或者使用mimetypes.add_type手动补充。