`

你未必知道的CSS故事:揭开leading的面纱

 
阅读更多

 

几乎所有CSS书在讲到line-height属性的时候,都会提到传统排版中的一个术语——leading。这个leading到底指什么,它在汉字排版中叫什么,它与CSS中的line-height,也就是“行高”有什么关系?本文试图拔开历史的迷雾,把事实真相呈现在读者眼前。

从传承说起

作为网页排版语言,CSS跟其他专业或大众化的排版软件一样,同样植根于传统出版。传统出版,特别是铅活字印刷时代被称为“铅与火”的时代。而通过计算机软件排版印刷的时代,被称为“光与电”的时代。从“铅与火”到“光与电”的变迁,并非简单的取代和革命,更多的还是对人类出版实践的传承。

不用说InDesgin、QuarkXPress、Acrobat等专业的排版软件,只要用过Word、WPS等文字处理软件的人,都能说出一堆出版的术语来。可想而知,这些软件的设计和编码,一定是以传统出版实践为依据的。当然,这些排版软件都以排印以页为单位的纸质书为目的,这一点与CSS不同。CSS的目标是可以无限延长的网页。但除此之外,CSS与排版软件并没有本质区别。在CSS标准中,各种排版术语随处可见。从人工拣字到计算机排版,从纸面到网页,工具的革命、介质的更迭,并不代表可以无视过去,藐视传统。相反,了解传统排版实践,是真正理解CSS标准和相关术语的必要一环。

在《CSS设计师指南(第3版)》中,作者同样提到了leading。甚至还说,CSS中的line-height属性对应于印刷行业常说的leading,原文截图如下。

enter image description here

我们都知道,line-height是“行高”的意思。难道排版中的leading是CSS中的“行高”?要解决这个问题,首先得知道leading的确切含义。

神秘的铅空

为了弄清楚leading最初的含义,我在网上找到了以下图片:

enter image description here

(图片出处:http://www.normanfournier.com/capabilities/typography11.html

enter image description here

(图片出处:http://www.creativepro.com/article/just-say-no-automatic-leading

第一张图片告诉我们,两行文本之间的距离(或空白)是leading。而第二张图片更直观:两行字模之间有一条薄薄的填充材料,那就是lead。

有读者可能会问:“第二张图片中的Lead在中文活字排版中叫什么呢?”问得好!须知,了解传统出版是理解CSS的必由之路。幸好我手头有一本战士出版社1981年12月版的《出版工作手册》,这本书第二章“排字部分”有一个词条:

铅条(空条、条) 活版中填充行与行之间的空白材料,同空铅一样,它在书面上是没有印迹的。

就此,我又请教了公司校对董秋霞师傅。董师傅跟说我,排版工在拣字拼版时,会根据版心宽度自己裁割铅条。铅条长度稍短于一行字长,以便不妨碍将来固定版面时压紧字模。铅条高度低于铅字高度,在印件上产生空白。

Slug、Em Quad是什么?

细心的读者会追问:第二张图里的Slug、1-Em Quad又是什么?Slug应该也是铅条,或者叫厚铅条。Em Quad中的Em指字体大小(英文字体以大写字母M标称点大小,em就是M的发音 :),另可参见维基百科中的相关词条:http://en.wikipedia.org/wiki/Em_(typography)),Quad就是方形空铅。

根据《出版工作手册》:“凡是印件的版面之内没有印迹的地方,都要用空铅填充。空铅的大小是以该字号全身铅字为基准,比全身铅字小的称分数空铅,如相等于五号铅字一半大小的叫五号对开空铅,三分之一或四之一大小的叫五号三分或四分空铅,如相等于五号铅字二个大小的叫五号双连空铅,三个或四个大小叫三连空铅或四连空铅(又称五号三倍空或四倍空)。以此类推。为了节约材料,有时把大空铅中间挖空,叫做空心空铅。”

对应到汉字排版,1-Em Quad就是N 点全身空铅,2-Em Quad就是N 点双连空铅。总之,都是为了在版面中创造空白,铅空主要用在行首尾,铅条主要填在行间。

相信所有人都能看得出来,leading其实就是我们常说的行间距!行间距跟行高可不是一个概念。难道《CSS设计师指南(第3版)》错了?别急,事情又有了曲折。

微妙的歧义

假如我一开始不是上网搜索图片,而是查文字资料呢?《牛津高阶英汉双解词典(第7版)》:

leading(technical 术语) the amount of white space between lines of printed text 行距(相邻两个文本行之间的距离)

俗话说:“眼见为实。”(稍后你会发现,眼见也不一定为实!)看了前面的图示,再读上面词典的解释——特别是读到释义括号中的“相邻两个文本行之间的距离”时,你一定认为“行距”就是铅条的高度!应该说,这恐怕正是我们中的大多数人所理解的“行距”的概念。毕竟,行距就是加在两行之间嘛,增大行距也是增大两行之间的距离呀。换句话说,假设两行文字的字体大小是10点(point,一点为一英寸的1/72,即0.35146毫米。我国规定一点为0.35毫米),即3.5毫米高,铅条厚度2毫米,那么这两行文字的行距是2毫米,对吧?——很遗憾,不对!

虽然铅字排版时代的leading确实是指两行之间的铅条,但现代排版软件中的leading指的则是两行文本基线之间的距离。以下是维基百科中的解释(http://en.wikipedia.org/wiki/Leading):

In typography, leading ( /ˈlɛdɪŋ/) refers to the distance between the baselines of successive lines of type. The term originated in the days of hand-typesetting, when thin strips of lead were inserted into the formes to increase the vertical distance between lines of type. The term is still used in modern page layout software such as QuarkXPress and Adobe InDesign.

英文看着可能不太舒服,以下是译文:

在排字中,行距指连续文本行的基线之间的距离。这个术语最早起源于手工排版时代,当时为了增大行间的垂直距离需要在行间插入薄铅条。QuarkXPress和Adobe InDesign等现代排版软件中仍然使用这个术语。

那什么是文本行的基线之间的距离呢?还是用图来说明吧。

enter image description here

英文字体有基线(baseline)和中线(meanline),这两条线之间就是所谓的“x-height”,即小写字母x的高度。小写字母超过中线之上的部分(如d上面的竖划)称字母的上伸部分(ascenter),超过基线之下的部分(如字母q下面的竖划)称字母的下伸部分(descenter)。英文大写字母都位于基线以上,顶部稍低于小写字母上伸部分的顶线1

1. 这篇短文介绍了紧排(kerning)和字符间距(tracking):http://www.brightlemon.com/blog/typography-01-font-basics

如上图所示,两行文本的基线之间的距离是现代排版软件中所说的行距(leading)。这样定义行距是有意义的,因为知道了行距和行数,就能算出版心的高度,而版心高度加上、下页边距就是页面高度。下图就是InDesign中调整行距的“字符”面板,其中的图标清楚地表明,这里行距实际上就是一行的高度。

enter image description here

简言之,当我们在Word、WPS,或者InDesign、QuarkXPress中调整行距时,我们设定的其实是包括字体大小在内的文本行的高度,而不仅是文本行之间的距离。当你听到别人说“行距”或“行间距”时,一定要搞清楚他说的到底是哪个距离。有人可能会说:“‘行间距’也可以理解为‘两行文本基线之间的距离’吧”……算了,这事儿不能抬杠,反正意思你懂了。

明白了就里之后,那是不是可以认为《CSS设计师指南(第3版)》说“line-height属性对应于印刷行业常说的leading”没有问题了呢?别急,一波总要三折嘛。

CSS的定义

如果说“行距”和“行间距”尚有一字之差,可以勉强分辨,那我们对相同字形的leading就更要多加小心了。如前所述,同样是leading,可能代表两个不一样而且容易混淆的含义:一是填充在两行文字之间的铅条,二是两行文字基线之间的距离。

那么,CSS中的leading到底采用了哪个意思呢?答案是前者,即填充在两行文字间的铅条。请参考下面的示意图。

enter image description here
(图片出处:http://doctype.com/calculating-lineheight-from-comp

CSS 2.1第10.8.1节(http://www.w3.org/TR/CSS21/visudet.html#leading)明确规定,leading = line-height - font-size(参考上图),其中一半leading加到文字上方,另一半leading加到文字下方。这一点与前面提到的排版软件对leading的实现有所不同,排版软件一般把leading加到文字上方。比如,如果字体大小是10点,而行距为18点,则多出的8点在InDesign中会被加在文字上方(为清晰起见,这里为文本加了下划线)。

enter image description here

而在CSS中,leading(0.8倍font-size的计算值)被平均分成了两半,分别加到文本行上方和下方。

enter image description here

上图的HTML和CSS代码分别如下所示。HTML:

<h3>The way C works</h3>
<div>
Computers really only understand one language: machine code, 
<span>a binary stream of 1s and 0s</span>. You convert your C 
code into machine code with the aid of a compiler.
</div>

CSS:

div { 
    line-height: 1.2;
    /*省略其他样式*/
}
span {
    line-height: 2;
    /*省略其他样式*/
}

另外,CSS 2.1还建议把line-height属性的默认值,也就是normal值设定为字体大小的1.0到1.2倍。这也是为什么把块级文本元素的上下外边距都去掉(margin:0;),其元素盒子仍然比字体还高的原因。Eric Meyer著名的CSS重置样式表(http://meyerweb.com/eric/tools/css/reset/)把根元素bodyline-height重置为1,这相当于把所有元素行高中的leading重置为0。

综上所述,说“line-height属性对应于印刷行业常说的leading”还是有问题的。准确的表述应该是:“line-height属性包含了/实现了印刷行业常说的leading。”至于这个leading在《CSS设计师指南(第3版)》中被翻译成了什么,上下文还讲了些什么,请购买电子版或即将出版的纸质书看一看吧。

最后的话

当然,希望读者买书看只是开个玩笑。只要你能看完这篇文章,买不买这本书看并不重要。重要的是你已经真正理解了leading这个术语的几种含义。而更重要的是,当你看到译者因为原书中一句话表达不当,就会查几天资料,而且还能写出这么长的一篇文章来,你会明白翻译不容易,翻译准确、翻译好更不容易。

很多时候,一本书翻译得好不好,除了译者既有的知识储备和文字功底,更多的还要依赖译者求真的态度和坚韧的毅力。我不敢说《CSS设计师指南(第3版)》中没有错误,而只是想说一本好书的问世并非外界想象得那么轻而易举。但这本书(我已经翻译了一半了)的的确确是学习CSS的难得好书,我会尽力把它译好,也希望看了此文的诸君支持一下它。比如,在微博上转发一下,或者向学习CSS的朋友推荐一下。一方面为了让我的努力能让更多读者受益,另一方面也为了让真正的好书不被其他滥书埋没。相信大家的举手之劳,就能让好书惠及更多读者。谢谢!

 

 

作者:李松峰

本文原文链接地址:http://www.ituring.com.cn/article/18076

分享到:
评论

相关推荐

    你未必知道的CSS故事:揭开leading的面纱.doc

    在CSS的世界里,"Leading"是一个古老的排版术语,它源于传统的印刷行业,特别是在铅活字印刷时代。"Leading"这个词来源于英文,指的是在两行文本之间插入的铅条,用来增加行间的空白,从而创造出适当的行间距。在...

    LEADING

    "LEADING"这一术语在字体设计和排版中扮演着关键角色,它代表了文本行间的垂直空间——行距。在中文排版中,我们称之为“行间距”。这一概念对于保证文本的可读性与整体布局的美感是不可或缺的。 行距的重要性不容...

    智慧园区3D可视化解决方案PPT(24页).pptx

    在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。

    labelme标注的json转mask掩码图,用于分割数据集 批量转化,生成cityscapes格式的数据集

    labelme标注的json转mask掩码图,用于分割数据集 批量转化,生成cityscapes格式的数据集

    (参考GUI)MATLAB GUI漂浮物垃圾分类检测.zip

    (参考GUI)MATLAB GUI漂浮物垃圾分类检测.zip

    人脸识别_OpenCV_活体检测_证件照拍照_Demo_1741778955.zip

    人脸识别项目源码实战

    人脸识别_科大讯飞_Face_签到系统_Swface_1741770704.zip

    人脸识别项目实战

    跟网型逆变器小干扰稳定性分析与控制策略优化simulink仿真模型和代码.zip

    本仿真模型基于MATLAB/Simulink(版本MATLAB 2016Rb)软件。建议采用matlab2016 Rb及以上版本打开。(若需要其他版本可联系代为转换) CSDN详情地址:https://blog.csdn.net/qq_50594161/article/details/146242453sharetype=blogdetail&sharerId=146242453&sharerefer=PC&sharesource=qq_50594161&spm=1011.2480.3001.8118

    16-1文本表示&词嵌入.ipynb

    实战练习分词、创建词表、文本处理

    45页-零碳智慧园区标准解决方案:模块化、可扩展且可复制的解决方案.pdf

    在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。

    人脸识别_活体检测_数据录入_登录系统Face_Login_1741778308.zip

    人脸识别项目源码实战

    学生信息管理平台是一个基于Java Web技术的综合性管理平台

    学生信息管理系统是一个基于Java Web技术的综合性管理平台。通过此系统,可以实现对学生、教师、选课信息等的动态管理, 提升学校管理效率。系统采用分层架构设计,前端使用HTML、CSS,JavaScript和jQuery,后端基于Servlet,JSP和Spring框架,数据库采用MySQL。主要有四个大功能,学生管理( 增加学生信息、删除学生信息、修改学生信息、查询学生信息)、教师管理(增加教师信息、删除教师信息、修改教师信息、查询教师信息)、选课信息管理(添加选课、查询选课情况、删除选课记录)、系统管理( 登录与注册功能、 用户角色管理(老师,学生,管理员)、系统日志查看)。 技术架构 1.前端技术 HTML,CSS:静态页面布局与样式 JavaScript,jQuery:动态交互、DOM操作和AJAX请求 2.后端技术 Servlet:控制层,处理用户请求 JSP:页面动态生成 Spring:依赖注入,业务逻辑分离 3.数据库 MySQL:存储学生、教师,课程等数据 JDBC:数据库连接与操作

    PHP进阶系列之Swoole入门精讲(课程视频)

    本课程是 PHP 进阶系列之 Swoole 入门精讲,系统讲解 Swoole 在 PHP 高性能开发中的应用,涵盖 协程、异步编程、WebSocket、TCP/UDP 通信、任务投递、定时器等核心功能。通过理论解析和实战案例相结合,帮助开发者掌握 Swoole 的基本使用方法及其在高并发场景下的应用。 适用人群: 适合 有一定 PHP 基础的开发者、希望提升后端性能优化能力的工程师,以及 对高并发、异步编程感兴趣的学习者。 能学到什么: 掌握 Swoole 基础——理解 Swoole 的核心概念,如协程、异步编程、事件驱动等。 高并发处理——学习如何使用 Swoole 构建高并发的 Web 服务器、TCP/UDP 服务器。 实战项目经验——通过案例实践,掌握 Swoole 在 WebSocket、消息队列、微服务等场景的应用。 阅读建议: 建议先掌握 PHP 基础,了解 HTTP 服务器和并发处理相关概念。学习过程中,结合 官方文档和实际项目 进行实践,加深理解,逐步提升 Swoole 开发能力。

    人脸识别_表情分析_spider运行_数据采集用途_1741771318.zip

    人脸识别项目实战

    美颜_GPUimage_人脸识别_动态贴纸_Demo_1741771705.zip

    人脸识别项目实战

    人脸照片文件批量分辨率裁剪工具

    功能简介:本工具可实现批量对照片文件的人脸识别,并按指定分辨率进行转换保存。 可为人脸识别采集系统提供很好的辅助工具。 软件基本于OPENVC开发,识别精确,转换高效。 人脸识别工具 +人脸采集处理

    基于强化学习与肌肉长度反馈控制的高效无意识姿态稳定算法研究(可复现,有问题请联系博主)

    内容概要:本文探讨了利用肌长变化反馈控制(FCM-ML)和演员-评论家强化学习(ACRL-NGN)来有效实现人体上肢和下肢无意识姿态稳定的算法方法。通过构建一个包含949条肌肉和22个关节的全身计算模型,在不同初始姿势的情况下进行模拟试验,验证了这些方法的有效性和鲁棒性,结果显示FCM-ML方法比其他传统方法更适用于此类任务。研究指出人类及其他脊椎动物在无意识状态下,通过抗拮抗性的肌肉长度变化反馈机制来维持舒适状态下的自然身体姿势(NBP)。此外,研究还表明这种控制策略有助于机器人设计、运动员训练以及康复患者的治疗。 适用人群:生物力学、机器人学以及神经科学领域的研究人员、工程师,以及关注人体姿态控制及其应用的学者和技术人员。 使用场景及目标:①解释人和非人的脊椎动物如何在无意识情况下维持最佳姿势,特别是处于重力环境中的自然身体姿势(NBP)。②为机器人肌肉控制提供理论支持和发展方向,特别是在模拟多肌肉协调控制方面。③指导运动训练及病患恢复计划的设计与优化。 其他说明:研究发现ACRL-NGN结合FCM-ML不仅能够迅速有效地实现期望的姿态稳定性,而且不需要对肌肉分类,这使其在复

    反编译apk重要的工具之一

    反编译apk重要的工具之一

    `计算机视觉_Python_PyQt5_Opencv_综合图像处理与识别跟踪系统`.zip

    人脸识别项目实战

Global site tag (gtag.js) - Google Analytics