我正在尝试使用简单的HTTP服务器加载字体,但可以让它工作,我只能得到小方块。
我认为这可能是某种哑剧类型的问题。 如果页面直接在浏览器中打开,而不是由简单的HTTP服务器加载,则会加载HTML页面和字体真棒字体。
这个问题似乎相同,但放置
<meta charset="UTF-8">
HTML代码中的没有帮助我。 Font awesome not loading when using Python simple http server
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
from os import curdir, sep
import cgi
import subprocess as sub
import time
PORT_NUMBER = 8080
class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path=="/":
self.path="/index.html"
try:
sendReply = False
if self.path.endswith(".html"):
mimetype='text/html'
sendReply = True
if self.path.endswith(".jpg"):
mimetype='image/jpg'
sendReply = True
if self.path.endswith(".png"):
mimetype='image/png'
sendReply = True
if self.path.endswith(".gif"):
mimetype='image/gif'
sendReply = True
if self.path.endswith(".svg"):
mimetype='image/svg+xml'
sendReply = True
if self.path.endswith(".css"):
mimetype='text/css'
sendReply = True
if self.path.endswith(".js"):
mimetype='application/javascript'
sendReply = True
if self.path.endswith(".ttf"):
mimetype='application/x-font-ttf'
sendReply = True
if self.path.endswith(".otf"):
mimetype='application/x-font-opentype'
sendReply = True
if self.path.endswith(".woff"):
mimetype='application/font-woff'
sendReply = True
if sendReply == True:
#Open the static file requested and send it
f = open(curdir + sep + self.path, 'rb')
self.send_response(200)
self.send_header('Content-type',mimetype)
self.end_headers()
self.wfile.write(f.read())
f.close()
print(curdir + sep + self.path)
return
except IOError:
self.send_error(404,'File Not Found: %s' % self.path)
def do_POST(self):
if self.path=="/run":
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST',
'CONTENT_TYPE':self.headers['Content-Type'],
})
#self.send_response(200)
#self.end_headers()
return
这是html页面的一部分:
<html>
<head>
<meta charset="UTF-8">
<title>HW Test</title>
<!-- Bootstrap -->
<link href = "css/bootstrap.min.css" rel="stylesheet"></link>
<link href = "css/custom.css" rel="stylesheet"></link>
<link href = "css/font-awesome.min.css" rel="stylesheet"></link>
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<div class = "container">
<div class="row">
<input id="box1" type="checkbox" />
<label for="box1">Checkbox 1</label>
<input id="box2" type="checkbox" />
<label for="box2">Checkbox 2</label>
</div>
...
复选框显示为小方块,而不是复选框。 这些应该通过不会加载的font-awesome来显示。
答案 0 :(得分:1)
我认为问题出现在字体文件名中,例如font-awesome.css
的最后一个版本包含:
@font-face {
font-family: 'FontAwesome';
src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
src: url('./fonts/fontawesome-webfont.woff2?v=4.7.0') ...
这意味着self.path
包含以下内容:
/fonts/fontawesome-webfont.woff2?v=4.7.0
像if self.path.endswith(".woff")
这样的检查会失败。