在 Heroku 的模板中使用自定义字体时遇到问题

Posted

技术标签:

【中文标题】在 Heroku 的模板中使用自定义字体时遇到问题【英文标题】:Having troubles in usage custom font in template on Heroku 【发布时间】:2019-11-08 05:51:20 【问题描述】:

我在 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'

这是我得到的唯一与静态文件相关的错误。所有其他静态工作正常。 我曾尝试再次手动运行 collectstatic,甚至手动将此字体放入 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 上提供这种字体。放在哪里?或者我可能需要更改模板中的网址?

谢谢!

【问题讨论】:

【参考方案1】:

好吧,出于某种原因,Whitenoize 不提供从项目的“静态”文件夹中移动的文件,这很奇怪。我将字体移动到 app/static/app 文件夹,然后再次运行 collectatic 并将其全部部署到 Heroku。现在可以了

【讨论】:

以上是关于在 Heroku 的模板中使用自定义字体时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在电子邮件或电子邮件模板中使用自定义字体

使用自定义字体时,UIBarButtonItem 在后退手势上跳转

自定义字体未显示在字体系列列表中

在Java中更改字体时遇到问题

使用情节提要的自定义字体 Xcode 4.6

如何在 Handlebars 和 Puppeteer 中使用自定义字体?