主题开发

FlatPaper(v0.3.0) 现在支持 Google Fonts 了

2026-06-24 #主题#FlatPaper#字体#Google Fonts

FlatPaper 现在支持通过主题配置加载 Google Fonts 了。你可以给正文和代码块分别设置字体,也可以配置 CDN 域名,用镜像服务替代默认的 fonts.googleapis.com

这个功能默认关闭,不会影响已有站点。开启后,主题会在页面 <head> 里注入 Google Fonts 样式表,并用 CSS 变量把字体应用到正文或代码块。

支持代码字体与中文字体分别设置,支持字体字重(Font Weight),也支持 text 限定请求字体,从大字体文件中仅下载需要的部分。

演示站使用配置

当前演示站使用了这组配置,设置了英文字体 Caveat 与 代码字体 Source Code Pro

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Google Fonts。默认关闭;开启后会在 <head> 注入 Google Fonts CSS。
# cdn 可填写镜像域名,用于覆盖 https://fonts.googleapis.com,例如 https://fonts.loli.net。
google_fonts:
enable: true
cdn: https://fonts.loli.net
# text_font: New Tegomin
# text: |-
# ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
# 按顺序填写字体名称即可;第一个字体会优先用于正文。
fonts:
- Caveat
# 等宽字体单独配置;也可以只填写 mono,不改变正文字体。
mono:
- Source Code Pro

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
2
3
4
5
6
7
8
9
google_fonts:
enable: true
text_font: New Tegomin
# 只覆盖英文数字与标点符号
text: |-
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
# 可以同时再指定正文字体,不指定时则使用系统字体
# fonts:
# - Noto Sans SC

生成后的字体栈顺序会是:裁剪后的 text_font、完整的 fonts、系统 fallback。没有包含在 text 字符集里的正文内容会回退到完整正文字体,因此它更适合固定文案,不适合用户生成内容或频繁变化的正文。

如果只需要请求英文数字,使用一行即可

1
2
3
google_fonts:
text_font: New Tegomin
text: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

如果想要包含标点符号,由于字符里包含双引号、单引号、反斜杠这类容易触发 YAML 转义的字符,推荐写成 literal block:

1
2
3
4
google_fonts:
text_font: New Tegomin
text: |-
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

小提示

  • 字体名称直接写 Google Fonts 里的名称即可,不需要写复杂的 family= 查询参数。
  • 有特殊字重需求时再追加 :wght@...,普通使用保持字体名称即可。
  • text 会自动 URL encode,配置里直接写需要保留的字符即可。
  • cdn 只负责替换 Google Fonts CSS 的域名;实际字体文件地址由返回的 CSS 决定。
  • 中文字体通常体积较大,建议只加载确实需要的字体。
  • Caveat 这样的字体主要覆盖拉丁字符,中文仍会回退到主题默认中文字体栈。
评论
微信
支付宝
分享