Могу ли я просто добавить директории в мою установку Discourse?

Итак, я добавлял локальный шрифт на свой сайт. В CSS-файле темы я написал:

@font-face {
  font-display: swap; /* Проверьте https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display для других вариантов. */
  font-family: 'Montserrat';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/montserrat-v26-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */
}

В HTML-файле я добавил:
<link rel="preload" href="/fonts/montserrat-v26-latin-italic.woff2 " as="font" type="font/woff2" crossorigin="">

Затем я сохранил изменения, обновил сайт, просмотрел исходный код страницы и кликнул по ссылке /fonts/montserrat-v26-latin-italic.woff2, которая привела меня к адресу:
https://forums.mysite.com/fonts/montserrat-v26-latin-italic.woff2

Вместо шрифта я увидел страницу ошибки Nginx «404 Not Found». Я подумал: «О, подождите, у меня нет папки fonts в директории Discourse на моём VPS». Мне показалось странным, что шрифт не подтягивается автоматически из папки fonts в теме. Поэтому я создал папку «fonts» по пути /var/discourse/shared/standalone/, поместил туда файл шрифта и снова обновил страницу в браузере, но ошибка 404 осталась. Могу ли я просто добавлять папки в Discourse таким образом, или мне нужно перезапустить сервер, чтобы изменения вступили в силу, или что-то ещё нужно сделать?

Я не уверен насчет добавления директорий, но что касается использования файлов шрифтов в темах, есть встроенный метод, который можно попробовать. Если вы редактируете файлы темы вручную, добавьте шрифт в директорию /assets темы, затем добавьте запись для него в about.json, как показано ниже:

{
  // другие свойства
  "assets" : {
    "my-font-identifier": "assets/my-font-file.woff2",
  }
}

Затем в @font-face вы можете сослаться на него с помощью src: url($my-font-indentifier);


Если вы используете только редактор тем в интерфейсе настроек, я полагаю, вы можете добавить шрифт в раздел загрузок, указать желаемый идентификатор в поле SCSS var name, а затем сослаться на него таким же образом в SCSS.

Итак, будет ли код для активов выглядеть так для каждого шрифта?

  "assets": {
    "montserrat-reg": "assets/montserrat-v26-latin-regular.woff2",
    "montserrat-ita": "assets/montserrat-v26-latin-italic.woff2"
},

РЕДАКТИРОВАНИЕ: Это сработало. Прямой URL /assets/ к шрифту всё ещё выдаёт 404, но шрифт работает на странице, так что :man_shrugging:

В настройках административного сайта вы можете изменить шрифт на Montserrat.
основной шрифт
шрифт заголовков


Если вы хотите добавить шрифт, которого нет в ядре, но который есть в Google Fonts, вы можете использовать этот компонент темы:

Да, шрифт Montserrat предназначен для другой страницы. Спасибо, что уточнили!

Проблема с Google Fonts в том, что они замедляют загрузку страниц, подгружая более 200 символов, большинство из которых пользователи даже не используют.

Нет, не замедляет — если использовать максимум 3–4 набора шрифтов (и только необходимые начертания), как и положено.

Возник вопрос по этому поводу: когда вы открываете исходный код страницы форума вашего (любого) сайта Discourse и ищете «font», там отображается множество шрифтов. Загружаются ли все эти шрифты, даже если при настройке в мастере вы выбрали только 1–2? Если да, то хотелось бы, чтобы загружался только тот, который я выбрал.