Я создаю новый статический веб-сайт с помощью Hugo и Wowchemy. Wowchemy использует шрифт Roboto, и я хочу использовать его локально на своем веб-сайте.
Вот что я сделал:
static/fonts
fonts
в params.yaml
на Roboto
(да, это был отчаянный шаг).При перезапуске сервера ничего не изменилось. Используя надстройку для Firefox, я мог видеть, что он все еще загружает шрифт с удаленного сайта.
Итак, какие изменения мне нужно добавить, чтобы браузер мог загрузить мою локальную копию шрифтов?
Вам нужно загрузить файл CSS с деклератором шрифта, который ссылается на ваш локальный файл. Лично я бы задал этот вопрос здесь: https://discord.com/invite/z8wNYzb.
tmp
....).toml
, определяющий шрифты шаблона./static/fonts
./assets/scss
, изменив их суффикс на .scss
.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 и проверяю, какие файлы загружены.