在 Heroku 模板中使用自定义字体时遇到问题
Having troubles in usage custom font in template on Heroku
我在 Heroku 上使用自定义字体时遇到问题。
为了在生成的 pdf 页面上正确显示俄文文本,我在 html:
中使用了以下自定义字体
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Boat pdf</title>
<style type="text/css">
@font-face {
font-family: Palatino Linotype;
src: url({% static "fonts/Palatino.ttf" %});
}
body {
font-family: Palatino Linotype, Arial, sans-serif;
color: #333333;
}
</style>
</head>
它在本地运行良好,但在迁移到 Heroku 之后,每当我尝试基于 html 生成 pdf 文件时,我得到一个异常:
File "/app/.heroku/python/lib/python3.7/site-packages/django/contrib/staticfiles/storage.py", line 420, in stored_name
2019-06-26T09:52:03.873127+00:00 app[web.1]: raise ValueError("Missing staticfiles manifest entry for '%s'" % clean_name)
2019-06-26T09:52:03.873128+00:00 app[web.1]: ValueError: Missing staticfiles manifest entry for 'fonts/Palatino.ttf'
这是我得到的与静态文件相关的唯一错误。所有其他静态工作正常。
我尝试再次手动 运行 收集静态数据,甚至手动将此字体放入 staticfiles 文件夹 - 没有成功。
在生产环境中,静态资产由 Whitenoize 提供服务。
与静态相关的开发设置有:
INSTALLED_APPS = [
'whitenoise.runserver_nostatic',
STATIC_ROOT = os.path.join(BASE_DIR, "static") # new
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
制作设置为:
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
问题是如何在 Heroku 上提供这种字体。放在哪里?或者我需要在模板中更改 url?
谢谢!
嗯,出于某种原因,Whitenoize 不提供从项目的 "static" 文件夹(即 st运行ge)移动的文件。我将字体移至 app/static/app 文件夹,然后再次 运行 collectatic 并将其全部部署到 Heroku。现在可以了
我在 Heroku 上使用自定义字体时遇到问题。
为了在生成的 pdf 页面上正确显示俄文文本,我在 html:
中使用了以下自定义字体<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Boat pdf</title>
<style type="text/css">
@font-face {
font-family: Palatino Linotype;
src: url({% static "fonts/Palatino.ttf" %});
}
body {
font-family: Palatino Linotype, Arial, sans-serif;
color: #333333;
}
</style>
</head>
它在本地运行良好,但在迁移到 Heroku 之后,每当我尝试基于 html 生成 pdf 文件时,我得到一个异常:
File "/app/.heroku/python/lib/python3.7/site-packages/django/contrib/staticfiles/storage.py", line 420, in stored_name
2019-06-26T09:52:03.873127+00:00 app[web.1]: raise ValueError("Missing staticfiles manifest entry for '%s'" % clean_name)
2019-06-26T09:52:03.873128+00:00 app[web.1]: ValueError: Missing staticfiles manifest entry for 'fonts/Palatino.ttf'
这是我得到的与静态文件相关的唯一错误。所有其他静态工作正常。 我尝试再次手动 运行 收集静态数据,甚至手动将此字体放入 staticfiles 文件夹 - 没有成功。
在生产环境中,静态资产由 Whitenoize 提供服务。
与静态相关的开发设置有:
INSTALLED_APPS = [
'whitenoise.runserver_nostatic',
STATIC_ROOT = os.path.join(BASE_DIR, "static") # new
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
制作设置为:
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
问题是如何在 Heroku 上提供这种字体。放在哪里?或者我需要在模板中更改 url?
谢谢!
嗯,出于某种原因,Whitenoize 不提供从项目的 "static" 文件夹(即 st运行ge)移动的文件。我将字体移至 app/static/app 文件夹,然后再次 运行 collectatic 并将其全部部署到 Heroku。现在可以了