CSS基本概念 1.6字体规则
当用户代理渲染文本时,它一定选择一种字体使用。然而,几乎不存在一种字体包含了所有可能在文档中需要出现的字符。因此,事实是文本中每次字符被渲染时,用户代理在它有用的字体表中找出最合适的字符。它不用决定某个字符的存在,请求程序按照CSS文档规则使它的样式,粗细,变形体都可用。
在这些规则中,一个字形组实际上集成了一些公有字体的名字。例如,Times New Roman
(新罗马字体)实际上是一些字体的集合。每个字体是一个基本字体的变体;这个集合可能包含Times New Roman Italic(新罗马字体斜体),Times New Roman Bold(新罗马字体粗体),等等。因此,默认的字体将有点像Times New Roman Regular(正常的新罗马字体)。
作者实际上不用设置这些字体的名字,但是更换字体的种类明确的表示他们想要用各种font-related(相关字体)属性。在第四章有更多关于字体的属性和它相关属性的细节。
字形组选择
作者(或用户)假如在被用的字体表选拔字体的过程受到的影响,按首选项的顺序,渲染元素。用户代理利用列表上的一些规则挑选字形组中使用到的给定字符渲染。
字体匹配的有关步骤如下:
1.在文本中渲染字符,用户代理构造一个可应用字符的字体属性表。用户代理在那时识别字形组中包含的将要被显示的字符特性,和必需的字符一样。
2.如果字形组包含了必需的字体,用户代理尝试提前处理(以后讲解)。
3.如果步骤1和2失败,那么用户代理将从它的字体列表中的下一个字形组继续进行。这个字体匹配的过程在下一部分讲解。
4.如果必需的字体在字形组中,但是必需的字符不存在,那么用户代理将从他的字体列表中的下一个字形组继续进行。
5.如果必需的字体包含了必需的字符,那么用户代理将在显示器上显示合适的字符(例如,整个空间充满“缺失字符”开放的正方形)。
例如,假定作者声明一个H2元素应当使用Helvetica(经典字体)渲染,并且在文本内部的元素应当为加粗的和倾斜的。用户代理必须首先找出Helvetica字形组并且确定它是否包含一个同时具备加粗的和倾斜的两个属性的字体。如果这样的字体存在,那么用户代理确定在字体中需要的字符是否存在。如果存在,那么它就使用字符渲染,并且用户代理从下一个字符出发直到处理结束。如果字体中不存在需要的字符,用户代理必须观察其他的字体中合适的字体中必需的字符。如果用户代理不能提出合适的匹配,它必须使用一个“缺失字符”显示符号不足。
CSS2规定的(同前面列表中的提到的第二项)更多字体选择的先进处理规则。
1.智能的字体选择。用户代理使用的字体描述符在字形组中轮流选择诸如象形文字宽度和x-height(字母'x'的高度)一样。如果判定相配者存在,那么字体就被用来字符的渲染。这个字形组的属性值不会发生改变。
2.字体下载。用户代理试图和能被下载和使用的字体资源一致。用户代理决定将要被使用的给定字体,假如这样的话,将等到字体下载结束。
3.字体综合。用户代理尝试构造一个它自己特有的字体,基础的字体说明例如和x-height值。事实上,所有的字体说明必须以为字体综合的位置为条件。
用户代理不需要支持所有前面的这些方法。
字体外观选择
在字形组选择的过程期间,用户代理必须判定字体中的必须的字体外观有用。例如,如果作者明确指定一个元素应该为倾斜的,用户代理必须找到一个正在使用字体中的一个斜体外观。外观的选择如下:
1.用户代理首先尝试在font-style(字体的样式)中选择外观公告,如果它的值指定为italic,那么所有的外观标记将选择为Italic(斜体字)或Oblique(倾斜的)。如果给定的值为Oblique(倾斜的),那么将选择只有Oblique(倾斜的)的外观。
2.用户代理下一步尝试在font-variant(字体的变体)中选择外观公告,如果它的值指定为small-caps(小型大写字母),那么所有的外观标记将选择为small-caps(小型大写字母)。如果没有这样的外观存在,那么用户代理从一个必须的正常外观中产生一个缩写的大写字母的替代者。作为最后一招,没有缩写的用户代理使用正常的大写字母。如果它的值给定为normal,那么所有的外观将选择不被标记为small-caps(小型大写字母)。
3.用户代理选择的值属于font-weight(字体的粗细)。字体粗细的选择在下一部分描述,这个选择永不失败。
4.最后,字体的大小被选择。从最大的字体缩写所有必须的字体,它的脚步应该永不失败。
例如,假定作者指定一个元素将具备小型大写字母和斜体的两个外观。如果有可能用户代理必须确定外观同时具备小型大写字母和斜体的。否则,它保持寻找选择前面部分给定的使用规则。
字体宽度选择
font-weight属性接受数字的值,包含从100到900九个数字值和normal、bold值。数字值得核心属于字体宽度选择;人性化的标注其他的值(例如,bold)被像在数字尺度上
清晰的磅一样处理。字体宽度的选择如下:
*normal值同数字中400值的效果一样;bold值同数字中700值的效果一样;。
*假设字体已经有九级的宽度尺寸,字体的样式像OpenType(字体OpenType也叫Type 2字体)一样,尺度映射了从100到900的数值。
*如果字体的外观标注媒体像标注成书,正常体,罗马字体,标准体,那么媒体与500的值一样。
*如果字体的外观标记成加粗,那么外观媒体与700值相等。
如果字体包含较少的九粗细,那么“间隙”的填充如下:
*如果值500未赋值,它符合同使用的400的值一样。
*如果值600,700,800或者900中任意一个未被赋值,那么他们有下一个较粗的粗细可用。如果没有较粗的粗细可用,那么他们有下一个的粗细可用。
大多数字体将已经在最后两个外观:正常和加粗,地图的值从400和700,在这种情况下,从100到500的值将产生一个正常的外观,600到900的值将产生加深的外观。
允许选择更过的复杂的例子。假设一个字体包含了下面的字体外观:Meyer Regular,Meyer Bold,Meyer Light,Meyer Dark。它的下一个加深与“加粗”相等。给定他们的外观,粗细的值将如下给定:
Meyer Light:100,200,300
Meyer Regular:400,500
Meyer Bold:600,700
Meyer Dark:800,900
如果Meyer Light在字形组中部分没有用,那么Meyer Regular中值为100到500将被作为外观使用。工作的最后部分将永不改变。

浙公网安备 33010602011771号