CSS字体:字体特性
CSS Font Module Level 3(本文以下简称“ML3”)新增了字体特性(Font Feature)属性,用于扩展font-variant
,以支持丰富OpenType字体特性,如连字。
我们知道,字体文件中包含着从Unicode码点到字形的映射。在给简单的拉丁文本应用字体时,就是根据字体文件中的映射表逐个把对应的字形找到并显示出来。而OpenType和AAT(Apple Advanced Typography)等字体标准支持更复杂的处理模式。比如,给定字符的字形不仅可以根据码点来选择和定位,也可以根据相邻字符或者语言、文字以及文本本身启用的特性来选择和定位。
风格性的字体特性分两类:影响与周围字符关系的和影响字形选择的。前者比如字距调整(kerning)和连字(ligature)相关的特性,后者比如小型大写字母(small-caps)、上/下标(superscript/subscript)及替代(alternate)特性。
为了支持这些字体特性,ML3扩展了font-variant
,基于它增加了很多子属性用于控制相应的字体特性,比如font-variant-ligatures
、font-variant-postion
、font-variant-caps
、font-variant-numeric
、font-variant-east-asian
。而font-variant
则变成了一个涵盖所有这些属性的简写属性,类似font
那样。不过,以上这些子属性只会影响字形选择与定位,不影响字体选择。
因为这些字体特性都与风格有关,所以字体特性的英文也叫stylistic font features。这个意义上,unstyled text就不是"未应用样式文本",而是"未启用风格化字体特性的文本"。
font-kerning
用于根据字体文件中的数据来调整字形间距。auto
表示由UA决定,normal
表示应用字体文件中的数据,none
表示不应用。
对于不包含相关数据的字体,这个属性没有影响。OpenType标准建议默认启用间距调整,即应用OpenType的kern
特性(对于垂直文本则是vkrn
)。如果同时定义了letter-spacing
属性,则字体内置的间距作为默认值,在此基础上再进行调整。