Как мне установить шрифт Roboto локально на моем сайте Hugo Wowchemy?

Я создаю новый статический веб-сайт с помощью Hugo и Wowchemy. Wowchemy использует шрифт Roboto, и я хочу использовать его локально на своем веб-сайте.

Вот что я сделал:

  • Я установил файлы шрифтов (TTF; WOFF) в static/fonts
  • Я изменил значение fonts в params.yaml на Roboto (да, это был отчаянный шаг).

При перезапуске сервера ничего не изменилось. Используя надстройку для Firefox, я мог видеть, что он все еще загружает шрифт с удаленного сайта.

Итак, какие изменения мне нужно добавить, чтобы браузер мог загрузить мою локальную копию шрифтов?


1
80
2

Ответы:

Вам нужно загрузить файл CSS с деклератором шрифта, который ссылается на ваш локальный файл. Лично я бы задал этот вопрос здесь: https://discord.com/invite/z8wNYzb.


Решено

Шаги, которые нужно пройти:

  1. Найдите каталог шаблонов HUGO (где-то в tmp....)
  2. В каталоге шаблона найдите файл .toml, определяющий шрифты шаблона.
  3. Используйте URL-адрес в файле шаблона, чтобы выяснить, какие шрифты загружаются с какой плотностью.
  4. Загрузите шрифты и соответствующий CSS через https://gwfh.mranftl.com/fonts
  5. Установите шрифты в /static/fonts.
  6. Добавьте файлы CSS в /assets/scss, изменив их суффикс на .scss.
  7. Добавьте custom.scss, который @import является определением шрифта. Помните, что директивы @import устарели и в будущем их нужно будет заменить директивами @use.

Длинная история:

Вначале нам нужно найти файлы шаблонов, которые загружаются как модули. Самый простой способ — вызвать hugo server, чтобы убедиться, что модули были загружены, а затем перейти по пути, указанному в assets/jsconfig.json. Путь относится к местоположению файла и указывает прямо на соответствующий каталог templare. В моем случае строковое значение равно "../../../../../tmp/hugo_cache/modules/filecache/modules/pkg/mod/github.com/wowchemy/wowchemy-hugo-themes/modules/[email protected]/assets/*" С этого момента, если мы обращаемся к template directory, используем родительский каталог, в котором находится этот assets каталог.

Следующий шаг: Найдите файл .toml, определяющий шрифты. Перейдите в каталог сборки Hugo и посмотрите на файл конфигурации params.yaml (расположенный в config/_default. Найдите ключ для appearance/font, например, выглядящий так:

appearance:
  theme_day: minimal
  theme_night: minimal
  font: minimal
  font_size: L

Теперь найдите соответствующий файл шрифта в каталоге темы data/fonts/<....>.toml. Это исходный файл, который обеспечивает загрузку шрифтов из Google. Вы найдете параметр, определяющий вызов google, который выглядит так:

# Font style metadata
name = "Minimal"

# Optional Google font URL
google_fonts = "family=Montserrat:wght@400;700 family=Roboto+Monofamily=Roboto:wght@400;700"

# Font families
heading_font = "Montserrat"
body_font = "Roboto"
nav_font = "Roboto"
mono_font = "Roboto Mono"

Ссылка сообщает вам, какие шрифты загружены и с какой плотностью. Запишите эти значения, а затем создайте минимальный файл data/fonts/<...>.toml в каталоге сборки, который перезапишет данные темы. Для нашей цели достаточно убедиться, что не загружен ни один шрифт google, поэтому мы просто используем этот файл:

# Do not use google fonts via URL
google_fonts = ''

# All further parameters are taken from the theme's 'minimal.toml' file

Далее загрузите шрифты с соответствующими размерами с помощью инструмента https://gwfh.mranftl.com/fonts. Это довольно просто, и мы можем использовать встроенное значение для каталога, в котором находятся шрифты. Загрузите шрифты и распакуйте архив в static/fonts.

Затем сохраните CSS для загруженных шрифтов в каталоге assets/<...>.scss, где <...> нужно заменить именем шрифта, например roboto. В каждом файле SCSS также добавьте следующую директиву к каждому объявлению шрифта:

font-display: swap;

Теперь создайте файл custom.scss в том же каталоге, который добавляет объявление вашего пользовательского шрифта. Это может выглядеть так:

@import "montserrat";
@import "roboto";
@import "roboto-mono";

Вот и все! Перезапустите сервер и убедитесь, что шрифты загружены. В Firefox я использую встроенный WebDevTools и проверяю, какие файлы загружены.