Django - Новые шрифты?

Как установить новые шрифты с помощью Django? Об этом не упоминается в документах.

У меня есть мои шрифты, установленные в статической папке как такие шрифты /abc.ttf

Например, в шаблоне, если это был CSS, я бы связал его как таковой:

    <link href="{% static 'fonts/abc.ttf' %}" rel="stylesheet" media="screen">

за исключением того, что это не CSS, и я не нашел никаких ресурсов о том, как это сделать.

Включить ли ссылку в файл CSS так?

  @font-face {
  font-family: 'abc';
  src: url({% static 'fonts/abc.ttf' %});
  src: local({% static 'fonts/abc.ttf' %})
}

Любая помощь будет оценена.

Ответ 1

Для структуры каталогов, например,

-- static
 |--fonts
 | |--abc.ttf
 |
 |--css
   |-- main.css

В main.css вы должны добавить.

@font-face {
  font-family: 'abc';
  src: local('Abc'),
       url('../static/fonts/abc.ttf') format("truetype");
}

Вы не можете использовать {% static 'filename' %} внутри css файла, так как он не будет отображаться движком шаблонов django.

Кроме того, если вы хотите, вы можете добавить следующее в раздел <head> base.html, и он отобразит полный путь для статических ресурсов:

<style>
  @font-face {
    font-family: 'abc';
    src: local('Abc'),
         url('{% static 'fonts/abc.ttf' %} format("truetype")');
  }
</style>

Редактировать: Исправлено использование local а также удалены предпочтения вокруг расположения тега стиля в HTML.

Ответ 2

Я использую эту опцию, чтобы избежать абсолютного пути и/или CSS в HTML-шаблон:

@font-face {
    font-family: 'HKGrotesk';
    font-style: normal;
    font-weight: bold;
    src: local('HKGrotesk'), url('/static/fonts/hk-grotesk/HKGrotesk-SemiBoldLegacy.otf') format('opentype');
}