J’ai téléchargé le fichier .woff
à partir de fonts Web Google pour une raison de réseau en Chine. Auparavant, j’ai essayé @font-face
sur Github Pages et ça marche. Mais cette fois il m’a fallu une heure pour trouver où était cassé.
J’utilise Node pour servir des fichiers statiques avec mime
, et le content-type
semble être application/x-font-woff
, et mon code dans CoffeeScript:
exports.read = (url, res) -> filepath = path.join __dirname, '../', url if fs.existsSync filepath file_content = fs.readFileSync filepath, 'utf8' show (mime.lookup url) res.writeHead 200, 'content-type': (mime.lookup url) res.end file_content else res.writeHead 404 res.end()
Comme le content-type
de content-type
de .woff
sur Github Pages est application/octet-stream
, je viens juste de mettre cette ligne dans mon code pour la rendre identique. Mais cela a toujours échoué:
exports.read = (url, res) -> filepath = path.join __dirname, '../', url if fs.existsSync filepath file_content = fs.readFileSync filepath, 'utf8' show (mime.lookup url) # res.writeHead 200, 'content-type': (mime.lookup url) res.end file_content else res.writeHead 404 res.end()
Enfin, je suis passé à un serveur Nginx pour servir le fichier .woff
.. et finalement il a commencé à fonctionner.
Mais comment puis-je résoudre ce problème sur Node?
Dans cette ligne, fs.readFileSync(filepath, 'utf8')
le codage est défini sur 'utf8'
. Il doit être 'binary'
.
De plus, la fonction res.end(file_content)
doit passer le bon encodage. Essayez res.end(file_content, 'binary')
.
J’avais le même problème et je devais le découvrir moi-même, cette réponse ne semble pas exister en ligne.