盘古之白 书架

第 03 章 / 共 5 章

第三章 · 网页没有老师傅

网页把排版拆成了几层

印刷品出厂时,排版已经定了。网页不一样。同一段 HTML,在手机、电脑、阅读器、不同浏览器、不同字体下,会长成不同的样子。

HTML,大白话说,是告诉浏览器“这里是什么内容”的标记。CSS,大白话说,是告诉浏览器“这些内容长什么样”的规则。理想情况下,文字内容应该交给 HTML,视觉间距应该交给 CSS。

按这个理想,中英文之间的那点白不应该由作者手敲。作者只写“中文English”,浏览器按照中文排版规则,在显示时自动垫一点视觉间距;复制出来仍然是原文,不多一个字符。这听起来很美。

现实是,这件事没有那么早成为稳定的浏览器能力。很长时间里,网页作者面对的选择粗糙得多:要么不加,忍受拥挤;要么手动加空格,让文本本身改变。

为什么浏览器不能“顺手做了”

浏览器当然会做很多排版判断,比如换行、字距、连字、标点挤压。那为什么不中西文自动加一点白?因为它看起来像小事,实际上牵动很多边界。

第一,语言边界不好判。一个页面可能有中文、日文、英文、代码、品牌名、邮箱、链接、数学表达式。浏览器如果一律加空,可能在不该断开的地方制造缝隙。

第二,空白大小不好定。印刷规范里说的是细间距,可能是一个汉字宽度的八分之一或类似量级。但网页里的字体各异,字号各异,粗细各异。固定值会在某些字体上刚好,在另一些字体上刺眼。

第三,兼容性很重。网页是一个承诺:旧页面今天也要能工作。浏览器如果突然改变混排间距,很多精确布局、按钮宽度、标题换行都会变。用户看到的是“浏览器升级后页面坏了”。

浏览器不是不知道空白好看,而是不敢轻易替所有网页决定:哪里加、加多少、算不算内容。

CSS 想管的是“显示”,作者手里却是“字符”

排版系统最干净的分工应该是这样:文本存文本,样式管样式。中西文间距属于样式,因为它不改变句子的意思。

可普通写作者最容易控制的不是样式,而是字符。你在 Markdown、微博、博客后台、聊天窗口里,通常不能写复杂 CSS。你能做的,就是按一下空格。

Markdown,大白话说,是一种用普通文本写格式的办法。它鼓励人们用简单字符写文章,再转换成网页。Markdown 很适合写作,却也让“空格到底是内容还是样式”变得更模糊。因为空格看起来像排版动作,实际却进入了源文本。

这就是网页时代的尴尬:我们用内容层的工具,修显示层的问题。

手动空格的三个副作用

手动加空格能立刻改善阅读,但它不是免费午餐。

这些副作用并不说明不该加。它们只说明:手动空格是一个工程折中,不是排版真理本身。

网页没有老师傅,就需要工具

在印刷厂里,经验丰富的排字工会替你照看这些细节。在网页里,发布链条变长了:作者写 Markdown,系统转 HTML,浏览器渲染,读者用不同设备打开。中间没有一个固定的老师傅。

于是工具出现了。它们不试图理解全文意思,只做一件窄事:扫描字符串,找出汉字和半角英文、数字、符号贴住的地方,插入空格。

这就是 pangu.js 这类工具的出场位置。它不是美学大师,更像流水线上的小刀。它不会替你决定文章好不好,但能把最常见的混排粘连切开。

下一章我们拆这把小刀:它为什么能靠规则工作,它的边界在哪里,以及为什么“自动”并不等于“无脑”。

盘古之白 · 王建硕
费曼式写法 · 由 AI 代理撰写与独立审校