字间距
文本中字符与字符之间的间隔。通过 CSS 的 letter-spacing 属性控制,影响可读性和设计风格。字距调整 (kerning) 针对特定字符对进行微调,而字间距 (tracking) 是对整体间隔的均匀调整。
字间距 (letter-spacing / tracking) 是文本中相邻字符之间的距离。字距调整 (kerning) 针对"AV""To"等特定字符对单独调整间距,而字间距 (tracking) 则是对整段文本的字符间隔进行均匀的增减。在 CSS 中通过 letter-spacing 属性来控制。
在中文排版中,字间距的默认值为零,即所谓的"密排"。汉字被设计成收在正方形的字身之内,只要将字符紧密排列就能获得均匀的间距。而英文文本中每个字符宽度不同,需要依靠字体内置的度量数据 (字符宽度信息) 自动调整间距。
在标题和 Logo 设计中,增大字间距 (正向 tracking) 会带来开阔、疏朗的感觉,缩小字间距 (负向 tracking) 则营造出紧凑的密度感。中文标题往往会比正文略微加宽间距,但究竟多少才合适,取决于字体的字宽和文字种类。若给出过大的正值,词句会散成一个个孤立的字符;若给出过大的负值,字符则会相互重叠、无法辨认。并不存在一个对所有字体都通用的万能数值,因此稳妥的做法是对照实际显示效果逐一确定。
字间距本身不影响字符计数,但会显著改变"相同字符数的文本所占据的物理空间"。名片上能放多少字、海报标题能用多少字、按钮标签能容纳多少字,都取决于字间距的设置。全角字符只要把字间距加宽 0.1em,10 个字符的文本就会多占约 1 个字符的宽度。在估算版面的极限字符数时,把字间距的设置也一并计入、对照实测才靠得住。
从无障碍访问的角度看,这涉及 WCAG 2.1 的成功标准 1.4.12"文本间距"(达标级别 AA)。该标准要求:即便用户将行高设为字号的 1.5 倍、段后间距设为 2 倍、字间距设为 0.12 倍、词间距设为 0.16 倍,内容与功能也不应丢失。它并非要求制作方必须以这些数值来排版,而是要求当用户自行覆盖这些设置时页面不会出问题。如果把文字紧紧塞进固定宽度的容器,一旦用户加大字间距,文本就可能溢出或重叠。与 行高 (行距) 放在一起检查,就能一次性覆盖该标准的这 4 个项目。
CSS 的 letter-spacing 是可继承属性。父元素上设置的字间距会应用到子元素,因此在标题上设置了较大的字间距后,其中的链接文本也会继承同样的间距。要防止意外的间距继承,需要在子元素上显式指定 letter-spacing: normal。
初始值 normal 和 0 看起来一样,含义却不同。normal 允许浏览器为了两端对齐而微调字间距,而一旦像 0 这样以长度值来指定,浏览器就不再为对齐做这类调整。此外,只要给字间距指定了非零的值,浏览器就不会再套用 liga 之类的可选连字 (ligature)。若把调字间距当作字距调整 (kerning) 的替代手段来用,连字会脱落,西文的观感随之走样。而在阿拉伯文这类字母彼此连写的文字系统中,一旦拉开字间距,字母之间的连接就会断裂,因此应避免对其套用字间距。