惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
S
SegmentFault 最新的问题
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
I
InfoQ
U
Unit 42
博客园_首页
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
D
DataBreaches.Net
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 聂微东
T
Tailwind CSS Blog
量子位

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法
Hugo自定义字体
2023-06-21 · via mephisto.cc

现在这个博客由 Hugo + hugo-clarity 皮肤驱动,大毛病没有。只是这个 theme 自带的字体是 Metropolis,操作系统默认没有,用户需要下载,这会拖慢网页加载速度,按照配置中文字体会回退到 sans-serif,也不是个好方案。因此,需要自定义这个皮肤的字体。

1. 首先找到字体并修改配置

hugo font config

hugo-clarity 皮肤的字体配置控制文件如上所示,css 由 sass 生成,下面介绍修改方法:

  • _fonts.sass 配置

    1@font-face
    2    font-family: myfonts
    3    src: local('-apple-system'),local('BlinkMacSystemFont'),local('Helvetica Neue'),local('PingFang SC'),local('Microsoft YaHei'),local('Source Han Sans SC'),local('Noto Sans CJK SC'),local('WenQuanYi Micro Hei'),local('sans-serif')
    

    这个文件告诉你去哪里找字体文件,local('xxx') 表示去电脑本地找 xxx 字体,再给这些字体集合取个名字 叫 myfonts,名字根据自己喜好取,都是 font-face 的语法。我这个参考的知乎的 font-family :

    1font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC,
    2  Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, WenQuanYi Micro Hei,
    3  sans-serif;
    

    优先级从前到后,先找苹果系统的默认字体,再找 windows 字体,Sans 等字体,最后找 Linux 的文泉驿微米黑。用户用什么操作系统就优先命中对应的系统自带字体,不用消耗网络带宽下载,拖累网页加载速度。

    • _variables.sass 配置
    hugo myfonts

    变量文件设置,如图所示 --font 的地方填上一步的字体集合名字。这样 sass CSS 预处理器,在编译的时候就能生成正确的 font-family。

    • fonts 目录

这目录就是放皮肤自定义字体的,对字体有高要求的时候使用(我个人不用)。参考 hugo-clarity 皮肤的配置

1@font-face
2  font-family: 'Metropolis'
3  font-style: normal
4  font-weight: 200
5  src: local('Metropolis Extra Light'), local('Metropolis-Light'), url('#{$fontsPath}Metropolis-ExtraLight.woff2') format('woff2'), url('#{$fontsPath}Metropolis-ExtraLight.woff') format('woff')
6  font-display: swap

看上面配置的意思,就是先去本地电脑找这个字体,找不到就去项目的字体目录找(目录就是第一张图的 fonts 目录),找到后在做一定的格式转换。其它皮肤的字体更换,网上也有文章说明,这里不再赘述,原理都差不多。

2. 重新编译项目

这里特别说明下,如果你用的是标准版 hugo,它不会帮你转译 Sass 到 css,官方解释如下:

Hugo is available in two editions: standard and extended. With the extended edition you can:

    1. Encode WebP images (you can decode WebP images with both editions)
    1. Transpile Sass to CSS using the embedded LibSass transpiler

We recommend that you install the extended edition.

我一开始的时候,就是没有注意到这一点,生成的 style 文件总是不变,各种痛苦调试都无效。最后把相关文件都删掉后试验,hugo 编译时才提示要去下载 extended 版本,前后耽误近 2 小时,甚至还去学习了下 Sass 语法...

所以,以后怪怪改用 extended 版本就没错了,惨痛经历。

3. 代码字体

最后,Hugo 的编程字体是可以单独配置。本文的代码英文字体和正文字体就不一样,看字母 G 能看出差别。

 1  [highlight]
 2    codeFences = true
 3    guessSyntax = true
 4    hl_Lines = ""
 5    lineNoStart = 1
 6    lineNos = true # always set to true # else line numbers won't show at all! even when you toggle them on in the UI
 7    lineNumbersInTable = false # toggling this on (i.e to true) or deleting this line will break the code blocks functionality. Will
 8    noClasses = false
 9    style = "monokai"
10    tabWidth = 2

如上所示,高亮模式选择 monokai_syntax.sass文件中 code 和 pre 的:

1font-family: "Monaco", monospace;

如此一来,选择不同代码高亮模式,可以根据需要手动设置不同代码字体(测试从 monokai 到 tango 字体不变)