字符宽度
文本显示中每个字符在水平方向上占据的空间大小。包括全角 (2 列宽) 与半角 (1 列宽) 的区分,以及比例字体中的可变宽度。
字符宽度 (character width) 是指文本在屏幕或纸面上显示时,每个字符在水平方向上占据的空间大小。在中日韩文本处理中,「全角」与「半角」的概念根深蒂固 - 全角字符的宽度是半角字符的两倍。这一区分源于 1980 年代计算机终端使用等宽字体的时代。
Unicode 通过 East Asian Width 属性对字符宽度进行分类:F (Fullwidth) 为全角,H (Halfwidth) 为半角,W (Wide) 为东亚宽字符 (汉字、日文假名等),Na (Narrow) 为窄字符 (ASCII 英文数字等),A (Ambiguous) 为宽度随上下文变化的字符。Ambiguous 类别最为棘手,其中包含部分希腊字母和西里尔字母,在东亚系统中按全角处理,在欧美系统中按半角处理。
比例字体 (proportional font) 中,每个字符的宽度各不相同。「W」的宽度约为「i」的 3 倍,「m」约为「l」的 2 倍。因此,比例字体显示的文本宽度无法仅凭字符数来预测。同样是 10 个字符,「WWWWWWWWWW」和「iiiiiiiiii」的显示宽度差异巨大。
等宽字体 (monospace font) 中,所有字符具有相同的宽度。编程用的代码编辑器和终端使用等宽字体,是因为它便于字符对齐,缩进和列对齐不会错乱。中文等宽字体中,全角字符的宽度恰好是半角字符的两倍。
字符计数与字符宽度的关系在显示布局设计中尤为重要。例如,在数据库列表界面为「姓名」列预留 20 个字符的宽度时,如果全是全角字符则只能显示 10 个字,全是半角字符则能显示 20 个。实际数据通常是全角半角混合的,因此需要按最坏情况 (全部全角) 来设计宽度。
在 Web 设计中,CSS 的 ch 单位以「0」(数字零) 的宽度为基准。指定 width: 40ch 大约等于 40 个字符的宽度。但在比例字体中,不同字符宽度各异,ch 单位只是近似值。对于中文文本,使用 em 单位 (1em = 1 个全角字符宽度) 能更直观地控制宽度。