FlatPaper 现在支持通过主题配置加载 Google Fonts 了。你可以给正文和代码块分别设置字体,也可以配置 CDN 域名,用镜像服务替代默认的 fonts.googleapis.com。
这个功能默认关闭,不会影响已有站点。开启后,主题会在页面 <head> 里注入 Google Fonts 样式表,并用 CSS 变量把字体应用到正文或代码块。
支持代码字体与中文字体分别设置,支持字体字重(Font Weight),也支持 text 限定请求字体,从大字体文件中仅下载需要的部分。
演示站使用配置
当前演示站使用了这组配置,设置了英文字体 Caveat 与 代码字体 Source Code Pro:
1 | # Google Fonts。默认关闭;开启后会在 <head> 注入 Google Fonts CSS。 |
fonts 用于正文,按顺序填写字体名称即可;mono 用于代码块,也按顺序填写等宽字体名称。如果只想改代码字体,可以只配置 mono,不写 fonts。
默认情况下只写字体名称就够了。如果某个字体确实需要指定字重,可以使用 Google Fonts 的写法,例如 Noto Sans SC:wght@400;700;主题会用完整配置请求字体,同时在本地 CSS 字体栈里自动保留正确的字体名。
字段说明
| 字段 | 说明 |
|---|---|
enable |
是否启用 Google Fonts 加载,默认 false,设置 true 开启 |
cdn |
加载 Google Fonts 资源的域名,可改为镜像域名,适用于优化无法 |
text_font |
可选裁剪字体,会排在 fonts 前面 |
text |
配合 text_font 使用,只请求这些字符的字形 |
fonts |
正文字体列表,越靠前优先级越高 |
mono |
代码块等宽字体列表,越靠前优先级越高 |
字体加载固定使用 display=swap,所以即使远程字体加载较慢,页面也会先用本地 fallback 字体显示,不会长时间空白。
text= 特性介绍
text= 参数用于只请求指定文本中需要的字形,从而减少字体文件体积。适合比如单独喜欢某个中文、日文字符集的英文部分,但是又不希望请求整个字体的情况,又或是只想让某个 Google Fonts 字体覆盖固定英文标题、logo 或按钮,可以用 text_font 搭配 text 来减少字体文件体积。
比如只使用 New Tegomin 的英文数字部分,效果可以参考 Aores’s Blog | Homulilly:
1 | google_fonts: |
生成后的字体栈顺序会是:裁剪后的 text_font、完整的 fonts、系统 fallback。没有包含在 text 字符集里的正文内容会回退到完整正文字体,因此它更适合固定文案,不适合用户生成内容或频繁变化的正文。
如果只需要请求英文数字,使用一行即可
1 | google_fonts: |
如果想要包含标点符号,由于字符里包含双引号、单引号、反斜杠这类容易触发 YAML 转义的字符,推荐写成 literal block:
1 | google_fonts: |
小提示
- 字体名称直接写 Google Fonts 里的名称即可,不需要写复杂的
family=查询参数。 - 有特殊字重需求时再追加
:wght@...,普通使用保持字体名称即可。 text会自动 URL encode,配置里直接写需要保留的字符即可。cdn只负责替换 Google Fonts CSS 的域名;实际字体文件地址由返回的 CSS 决定。- 中文字体通常体积较大,建议只加载确实需要的字体。
- 像
Caveat这样的字体主要覆盖拉丁字符,中文仍会回退到主题默认中文字体栈。