根据W3C对级联样式表的定义:

设置字体属性将是样式表最常见的用途之一。但是,目前还没有一个定义良好且普遍接受的分类法来对字体进行分类,适用于一个字体系列的术语可能不适用于其他字体系列。例如,“斜体”通常用于标记倾斜文本,但倾斜文本也可以标记为倾斜、倾斜、倾斜、草书或Kursiv。因此,将典型字体选择属性映射到特定字体并不是一个简单的问题。

字体匹配

因为没有公认的、通用的字体属性分类法,所以必须小心地将属性与字体面进行匹配。属性按定义良好的顺序进行匹配,以确保此匹配过程的结果在用户代理之间尽可能一致(假设每个代理都有相同的字体库)。

①用户代理制作(或访问)一个数据库,其中包含UA知道的所有字体的相关CSS1属性。UA可能知道某个字体,因为它已在本地安装或以前已通过web下载。如果有两种字体具有完全相同的属性,则忽略其中一种。

②对于给定的元素和该元素中的每个字符,UA组装适用于该元素的字体属性。UA使用完整的属性集,使用“字体系列”属性来选择一个暂定字体系列。其余的属性将根据每个属性描述的匹配标准针对族进行测试。如果所有剩余属性都匹配,那么这就是给定元素的匹配字体。

③如果第2步处理的“字体系列”中没有匹配的字体,并且字体集中有下一个可选的“字体系列”,则使用下一个可选的“字体系列”重复第2步。

④如果有一个匹配的字体面,但它不包含当前字符的字形,并且如果字体集中有下一个可选的“字体系列”,则使用下一个可选的“字体系列”重复步骤2。

⑤如果在2中选择的系列中没有字体,则使用依赖于UA的默认“字体系列”,并重复步骤2,使用可在默认字体中获得的最佳匹配。

 

(可以优化上述算法,以避免重新访问每个字符的CSS1属性。)

上面(2)中的每个属性匹配规则如下:

①首先尝试“字体样式”如果UA的字体数据库中有一张标有CSS关键字“italic”(首选)或“oblique”的人脸,则“italic”将得到满足。否则,值必须完全匹配,否则字体样式将失败。

②下一步将尝试使用“字体变体”“normal”匹配未标记为“small caps”的字体;“small caps”匹配

(1)标记为“small caps”的字体,

(2)合成小大写的字体,

(3)将所有小写字母替换为大写字母的字体。小型大写字体可以通过电子缩放普通字体的大写字母来合成。

④“font-weight”下一步匹配,它将永远不会失败。(请参阅下面的“字体粗细”。)

⑤“字体大小”必须在UA相关公差范围内匹配。(通常,可缩放字体的大小四舍五入到最接近的整像素,而位图字体的公差可能高达20%。)进一步的计算是基于使用的“字体大小”值,而不是指定的值。

 

继承的名称属性用于定义字体名称,特别是在没有提供字体系列(列表)的情况下。

注:对应的CSS1定义是字体属性('Font-family'、'Font-style'、'Font-variant'、'Font-weight')。

IFC2x3中增加的新实体。

 

Formal Propositions


Rule

Description

MeasureOfFontSize


尺寸应该用正的长度来表示。



 

 

 

IfcTextStyleFontModel_数据库

 

 

Attribute inheritance


#

Attribute

Type

Cardinality

Description

C

IfcPresentationItem

IfcPreDefinedItem

1

Name

​IfcLabel​

[1:1]


用来标识预定义项的字符串。字符串的允许值在子类型级别声明。


X

IfcPreDefinedTextFont

​IfcTextStyleFontModel​

2

FontFamily

​IfcTextFontName​

L[1:?]


该值是按优先级排列的字体系列名称和/或通用系列名称列表。第一个列表项具有最高优先级,如果此字体失败,则使用下一个列表项。最后一个列表项(如果可能)应该是泛型族。

 


X

3

FontStyle

​IfcFontStyle​

[0:1]


font style属性在字体系列中的普通(有时称为“罗马”或“直立”)、斜体和斜体之间进行选择。


X

4

FontVariant

​IfcFontVariant​

[0:1]


font variant属性在普通大写和小写之间进行选择。

注意,它的引入是为了以后能够完全支持CSS1。


X

5

FontWeight

​IfcFontWeight​

[0:1]


font weight属性选择字体的权重。

注:除了“normal”和“bold”之外,还引入了其他值,以便以后完全符合CSS1支持。


X

6

FontSize

​IfcSizeSelect​

[1:1]


字体大小提供文本字体的大小或高度。

注意:允许使用以下值,<IfcLengthMeasure,对于正值,长度单位在IfcUnitAssignment处全局定义。


X


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EXPRESS Specification



ENTITY IfcTextStyleFontModel
SUBTYPE OF (IfcPreDefinedTextFont);
FontFamily : LIST [1:?] OF IfcTextFontName;
FontStyle : OPTIONAL IfcFontStyle;
FontVariant : OPTIONAL IfcFontVariant;
FontWeight : OPTIONAL IfcFontWeight;
FontSize : IfcSizeSelect;
WHERE
MeasureOfFontSize : ('IFCMEASURERESOURCE.IFCLENGTHMEASURE' IN TYPEOF(SELF.FontSize)) AND (SELF.FontSize > 0.);
END_ENTITY;