Linux 上中文界面为什么"难看":字体与字重梯度

2026 / 10 / 22#字体#排版#linux

问题

把同一个 HTML 页面拿到 Ubuntu 服务器上渲染,字重全糊在一起,标题和正文分不开,小字的标签几乎读不出来。第一反应是"CSS 写坏了",其实不是。

查一下装了什么

fc-list :lang=zh | wc -l     # 7
fc-list :lang=zh | head -3

输出里只有两样东西:

  • 文泉驿正黑(WenQuanYi Zen Hei)
  • Unifont(点阵字体)

这两者都是"能显示中文"的兜底字体,字重只有一个 Regular。而排版里的层次感,很大一部分是靠字重差做出来的 —— 标题 700、正文 400、标签 500,全都塌成同一个重量,界面立刻显得廉价。

装思源黑体

sudo apt-get install -y fonts-noto-cjk fonts-noto-cjk-extra
fc-cache -f

装完 fc-list :lang=zh | wc -l 从 7 变成 87,Noto Sans CJK SC 提供完整的七档字重:

字重 用途
Thin / Light 大号装饰性数字
DemiLight 正文(高 DPI)
Regular 正文
Medium 小标签、按钮
Bold 标题
Black 强调数字

一个容易误判的点

服务器上装字体,对"别人用浏览器打开你的网页"毫无帮助 —— 渲染发生在访问者的设备上,用的是他自己的字体。

服务器字体只有两种场景有意义:

  1. 用无头浏览器截图做视觉验收;
  2. 服务端生成 PDF / 图片。

要让所有设备看到完全一致的字形,只有一个办法:把 woff2 打进站点自托管,用 @font-face 引用,不依赖系统字体。

这也是判断"要不要买字体授权"的分界线:只在本地用系统字体,不打包,不算分发;打包进网页给所有人下载,就需要授权。

本文为个人学习记录,可能存在错误或已过时,仅供参考。
← 返回笔记列表