Hugo-Theme-Reimu 主题自定义字体与字数统计问题解决方案
自定义本地字体配置方法
在 Hugo-Theme-Reimu 主题中,默认使用 Google Fonts 作为主要字体源。但许多用户出于隐私考虑或个性化需求,希望使用本地字体文件。以下是完整的配置步骤:
- 修改模板文件
首先需要编辑vendorFont.html文件,将其内容替换为以下 CSS 字体定义代码:
<style>
@font-face {
font-family: "YourFontName";
src: url("your-font-file-path.woff2") format("woff2"),
url("your-font-file-path.woff") format("woff");
font-display: swap;
}
</style>
- 调整主题参数
在params.yaml配置文件中,需要注释掉原有的 Google Fonts 设置,并在本地字体回退列表中添加你的自定义字体:
font:
article:
# - Mulish
# - Noto Serif SC
code:
# - Ubuntu Mono
# - Source Code Pro
# - JetBrains Mono
local_font:
article:
- "YourFontName"
- "-apple-system"
- PingFang SC
- Microsoft YaHei
- sans-serif
中文字数统计问题修复
Hugo 默认的字数统计功能对 CJK(中日韩)文字支持不佳,会导致统计结果不准确。解决方案是在项目配置文件中启用 CJK 语言支持:
[languages.zh-CN]
hasCJKLanguage = true
这个设置会告诉 Hugo 使用专门针对中文等东亚文字的字数统计算法,确保统计结果准确反映实际字符数而非单词数。
技术原理说明
-
字体加载机制
主题通过@font-face规则定义自定义字体,font-display: swap确保文字在字体加载完成前保持可读性。本地字体配置优先于 Google Fonts,当 Google Fonts 被禁用时自动回退到本地定义。 -
CJK 字数统计
Hugo 默认使用空格分隔的单词计数方式,这对中文等无空格分隔的语言不适用。hasCJKLanguage参数会启用基于字符而非单词的计数算法,每个汉字被计为一个单位。
最佳实践建议
- 字体文件应使用现代格式如 woff2,相比传统格式可显著减小文件体积
- 为获得最佳性能,建议将字体文件放在静态资源目录而非远程服务器
- 对于多语言站点,应为每种语言单独配置合适的字体回退链
- 定期检查字数统计结果,确保配置生效
通过以上配置,用户可以在 Hugo-Theme-Reimu 主题中完美实现自定义字体显示和准确的中文字数统计功能。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



