web如何在我的Hugo Wowchemy网站本地安装Roboto字体



我正在使用Hugo和Wowchemy建立一个新的静态网站。Wowchemy使用Roboto字体,我想在我的网站上提供它。

我就是这么做的:

  • 我在static/fonts中安装了字体文件(TTF;WOFF)
  • 我将params.yamlfonts的值更改为Roboto(是的,这是一个绝望的举动)

重新启动服务器时没有任何更改。使用firefox的附加组件,我可以看到它仍然在从远程站点加载字体。

那么,为了让浏览器加载字体的本地副本,我需要添加哪些更改?

要执行的步骤:

  1. 找到HUGO模板目录(位于tmp…中的某个位置)
  2. 在模板目录中,找到定义模板字体的.toml文件
  3. 使用模板文件中的URL来确定哪些字体加载了哪些权重
  4. 通过下载字体和相关的CSShttps://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/wowchemyv5@v5.7.1-0.20221106163805-45466f563a8a/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中找到相应的字体文件。这是确保字体从谷歌下载的原始文件。你会发现一个参数定义了对谷歌的调用,看起来像这样:

# 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文件,覆盖主题的数据。就我们的目的而言,确保没有加载谷歌字体就足够了,所以我们只使用这个文件:

# 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并检查加载了哪些文件。

您需要加载一个CSS文件,其中包含一个链接到本地文件的字体分离。就我个人而言,我会在这里问这个问题:https://discord.com/invite/z8wNYzb.

最新更新