设计思考字体排版

网页设计中的字体排印学:如何选择合适的字体组合

字体承载着文字之外的第三种信息——节奏、温度与身份。当视觉与认知研究开始揭示字体的运作机制,真正的排印系统便不止于「好看」。

2026年03月28日
13分钟

2008 年,我在第一个正式的设计项目中被要求「把所有标题都用 Impact」——因为它粗、有力、有存在感。结果是一个完全无法长时间阅读的页面:所有的字都在互相争吵,没有层级、没有停顿、没有呼吸。

那之后我开始系统学习字体排印。十五年后的今天,我仍然相信:字体是设计中最容易被忽视、也最能在无声中重构整个页面感知的元素。它不像颜色那样瞬间刺激,也不像动画那样明确提供反馈,但它是一只你看不见的手——它控制读者的呼吸节奏、信任感和认知流畅度。

Section 01字体的物理属性:我们真正对比的是什么

一个字体能让你感觉「轻盈」或「厚重」,这种感觉并非来自字体大小,而是由三个物理属性共同塑造的。

1. 中宫(Counter)

中宫是字母或汉字内部被笔画包围的空腔比例。中宫大的字体(如 Segoe UI、苹方)看起来宽松透气,适合长篇正文;中宫小的字体(如 Impact、方正粗黑)内部紧密,适合短标题——笔画之间的「白」少了,字就显得更有力量。

中文字体里,中宫是决定「字号相同却看起来大小不同」的主要原因。同一字号下,中宫大的字体视觉尺寸更大,因此字号不能跨字体等价换算。在编排中必须实际试排才能确定。

2. X 高度(x-height)

X 高度指的是小写字母 x 顶端到底端的距离。在同等字号下,x 高度高的字体(如 Georgia)比 x 高度低的字体(如 Adobe Garamond)看起来更大、更开放。

对于中英混排的网页场景,英文字体的 x 高度应与中文字体的视觉灰度匹配。如果 x 高度太低,英文部分在中文旁边会显得「缩进去」,形成断续的阅读动线。

3. 笔画对比度(Stroke Contrast)

笔画对比度指一个字体内最粗与最细笔画的比值。高对比度的字体(如 Bodoni、方正风雅宋)有很强的优雅感和传统气质,但在屏幕小字号下,最细的笔画会断掉或消失在像素网格中。低对比度的字体(如 Helvetica、思源黑体)在任何尺寸下都稳定,但缺少表现力。

Section 02六大原则:构建排印系统

原则一:最多两个字体家族

我知道很多设计指南中说「不要超过三种字体」,但在我自己的设计中,我给自己设了更严格的红线——两个:一个用于品牌/标题,一个用于正文。

至于代码、引用所需视觉区分,应该通过正文字体的变体(weight、style、optical size)或字号来实现,而非引入第三个字体家族。

以本博客为例:

css
1:root {
2 --font-heading: 'Noto Serif SC', serif;
3 --font-body: 'Noto Sans SC', sans-serif;
4 --font-mono: 'JetBrains Mono', monospace;
5}

等宽字体用于代码块是功能性选择,不算第三个「设计字体」。

原则二:行高是阅读的门槛

对于中文正文,16px 字号下推荐行高至少为 1.7。中文笔画密度远高于拉丁字母——每个汉字承载信息量更多,眼睛需要更长竖向间隙来扫描。

字体类型推荐行高示例
思源宋体(正文)1.8—2.0长文阅读
苹方(UI 文本)1.6—1.75界面标签
思源黑体(标题)1.3—1.5大标题
JetBrains Mono(代码)1.6—1.8代码块
css
1body { font-size: 16px; line-height: 1.8; }
2h1, h2 { line-height: 1.35; }
3pre, code { line-height: 1.75; }

原则三:视觉字号阶梯

均匀的字号增量(14/16/18/20/24)在视觉上并不均匀——人眼对数级比例更敏感。推荐比率级阶梯:

css
1:root {
2 --text-sm: 0.875rem; /* 14px */
3 --text-base: 1rem; /* 16px */
4 --text-lg: 1.25rem; /* 20px */
5 --text-xl: 1.563rem; /* 25px */
6 --text-2xl: 1.953rem; /* 31px */
7 --text-3xl: 2.441rem; /* 39px */
8 --text-4xl: 3.052rem; /* 49px */
9}

这个 1.25 比率正是 Tailwind 的核心字号比例。

原则四:字重比字号更关键

当页面缩小到手机宽度时,大标题字号被迫压缩。此时真正拉开层级的是字重。正文 400,标题至少 600。这 200 的字重差在视觉上创造了一条明确阈值线——线以上是「入口」,线以下是「内容」。

css
1h2 { font-weight: 700; }
2h3 { font-weight: 600; }
3p { font-weight: 400; }

原则五:间距是排印的一半

标题上方间距应大于下方间距——格式塔接近性原则:上与下不对等,标题才「属于」紧随其后的内容。

css
1h2 { margin-top: 2em; margin-bottom: 0.75em; }
2h3 { margin-top: 1.5em; margin-bottom: 0.5em; }

原则六:每行 45-75 个中文字符

太窄频繁换行,太宽视线跳错行。CSS 中控制:

css
1article { max-width: 42rem; margin: 0 auto; }

Section 03中英混排的三大痛点

痛点 1:基线偏移

中文字符在 em-square 中居中偏下,英文字母基线在 ~15-20% 处。混排时英文会悬浮或中文下沉。需为英文包裹 <span lang="en"> 微调 baseline。

痛点 2:标点系统冲突

中文标点自带宽阔空白区(全角),英文标点半角。混排时推荐:中文段落用全角标点,纯代码块和英文引文用英文标点——不混用。

痛点 3:字体 fallback 视觉跳跃

web font 的 fallback 字体视觉大小可能相差 10-15%,导致 FOIT/FOUT 布局闪烁。使用 size-adjust 缩小 fallback 字体可大幅减轻位移:

css
1@font-face {
2 font-family: 'body-fallback';
3 src: local('PingFang SC');
4 size-adjust: 96%;
5}

Section 04选字体:六个实战方案

以下是六种不同设计语境的字体组合方案:

方案一:学术/长文阅读

方案二:现代科技

方案三:人文设计

方案四:奢侈/时尚

方案五:编辑出版

方案六:极简功能性

Section 05结语

字体排印不是「让文字变好看」,而是组织信息在空间中的存在方式。一个好的排印系统,你的用户不会说「这个字体真美」,他们会说「这个文章真好读」。

字体的选择,最终不是关于字体本身,而是关于读你文字的那个人。