1171 words
6 minutes
把博客正文字体切到霞鹜新晰黑,顺手解决 Markdown 粗体突兀

问题是怎么出现的#

这次最开始暴露出来的问题并不是“字体要不要换”,而是文章正文里的 **粗体** 看起来非常突兀。

表面现象是:

  • 加粗之后不只是更黑
  • 视觉上像是同时“放大了一号”
  • 在中文段落里尤其明显

第一反应很自然会怀疑是 Markdown 样式写坏了,尤其是当前页面正文本身就是通过 .prose.custom-md 这两层样式一起控制的。

第一轮排查:先看是不是 CSS 真把字号改大了#

这轮先查了几处:

  • src/components/misc/Markdown.astro
  • src/styles/markdown.css
  • src/styles/main.css
  • Tailwind Typography 编译后的 .prose 规则

结果是,strong 在最终编译出来的样式里只拿到了 font-weight,没有拿到更大的 font-size

也就是说,问题并不是“粗体标签真的被额外设大了”,而是当前正文的字体组合在中文粗体下观感不好

为什么会有这种“像变大了”的错觉#

这个项目原本正文更接近 Roboto + 系统回退 的组合。

英文部分还好,但中文通常不会真的落到 Roboto 上,而是回退到系统里的 CJK 字体。不同系统在合成粗体时,字形膨胀、笔画发黑、占位变紧的程度差别很大,于是就会出现一种“没改字号,但看起来像更大了”的效果。

所以根因更接近:

  • 不是 Markdown 语法问题
  • 不是 Tailwind Typography 把 strong 设大了
  • 而是中文正文的字体回退和粗体表现不理想

中间做过一个临时修法#

当时先试过一个局部覆盖:

strong,
b {
font-size: inherit;
line-height: inherit;
font-weight: 500;
}

这个方案的目标很直接:

  • 强制粗体继承正文的字号和行高
  • 把字重收一点
  • 先把“突兀感”压下去

在原来的字体组合下,这个办法确实有效。

但它本质上还是一个症状级修复,并没有解决“正文中文字体本身不适合当前博客阅读”的问题。

第二轮处理:直接换正文主字体#

既然问题集中出在中文正文观感上,那就不应该一直围着 strong 打补丁,而应该直接换一套更适合博客正文的中文字体。

最后选的是:

LXGW Neo XiHei / 霞鹜新晰黑

原因很简单:

  • 中文正文识别度高
  • 字面干净,不会像某些系统黑体那样过分发闷
  • 粗体观感比原来的回退组合自然得多
  • 用在博客正文里比单纯靠系统默认字体稳定

最终落地方式#

这次没有继续沿用临时的 strong/b 覆盖,而是把全站正文的字体基础改掉。

具体做法是:

  1. 把字体文件放进项目
public/fonts/LXGWNeoXiHei.ttf
  1. src/layouts/Layout.astro 里注册全局 @font-face

  2. 在同一个文件里给 html, body 指定全局正文字体栈

  3. tailwind.config.cjs 里同步更新 fontFamily.sans

这样做的好处是:

  • 页面正文直接吃到新字体
  • 后续如果组件里用了 font-sans,也会保持一致
  • 不需要继续为 strong 写额外的特殊规则

为什么后来又把 strong/b 的覆盖删掉了#

换成霞鹜新晰黑之后,再保留那段 strong/b 覆盖,反而会带来一个新问题:

  • 粗体的字重被压回去了
  • 原本字体自己的粗体层次不明显了
  • 结果变成“能读,但不够像粗体”

这说明那段样式只适合旧字体阶段做临时止血,不适合在新字体已经正常工作的前提下继续保留。

所以最终状态是:

  • 保留字体切换
  • 删除 strong/b 的额外覆盖
  • 让新字体自己负责正常的粗体呈现

这次的结论#

这次问题很典型:一开始看起来像样式 bug,最后其实是字体选择问题。

总结下来就是:

  • 先检查了 Markdown 和 Typography 样式
  • 发现 strong 并没有真的被设大
  • 临时用 strong/b 继承字号的方式缓解了突兀感
  • 最终把正文主字体切到 霞鹜新晰黑
  • 新字体本身能正常处理中文粗体,所以临时覆盖被撤掉了

当前结果#

现在这个博客的正文字体已经改成了霞鹜新晰黑优先,效果上有几个直接变化:

  • 中文正文更统一
  • Markdown 粗体不再显得像“突然放大”
  • 不需要再用局部 strong 样式去兜底

这次也重新跑过:

Terminal window
pnpm build

构建通过,当前方案已经能稳定工作。

把博客正文字体切到霞鹜新晰黑,顺手解决 Markdown 粗体突兀
https://fuwari.vercel.app/posts/switch-blog-font-to-lxgw-neo-xihei/
Author
microcosm
Published at
2026-03-13
License
CC BY-NC-SA 4.0