IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

8.12.3.37 IfcTextStyleFontModel(文本样式字体模型)

RV ⓘ
AbV ⓘ

8.12.3.37.1 语义定义(Semantic definition)

根据W3C对层叠样式表的定义: 设置字体属性将成为样式表最常见的用途之一。遗憾的是,目前尚无明确界定且普遍接受的字体分类体系,适用于某字体系列的术语可能并不适用于其他字体。例如,"italic"通常用于标记倾斜文本,但倾斜文本也可能被标记为_Oblique_、SlantedInclineCursive_或_Kursiv。因此,将典型字体选择属性映射到特定字体并非简单之事。

字体匹配 由于缺乏公认的通用字体属性分类体系,必须谨慎进行属性与字型的匹配。这些属性按明确定义的顺序进行匹配,以确保匹配过程的结果在不同用户代理间尽可能保持一致(假设向每个代理提供相同的字型库)。

  1. 用户代理建立(或访问)一个数据库,包含该用户代理所知的所有字体的相关CSS1属性。用户代理可能因字体已本地安装或先前通过网络下载而知晓该字体。如果存在两个属性完全相同的字体,则忽略其中一个。
  2. 在给定元素及该元素中的每个字符处,用户代理汇集适用于该元素的字体属性。使用完整的属性集,用户代理通过'font-family'属性选择暂定字体系列。其余属性根据各属性描述的匹配标准在该系列中进行测试。如果所有剩余属性均匹配,则该字体即为给定元素的匹配字体。
  3. 如果在步骤2处理的'font-family'中没有匹配字体,且字体集中存在下一个备选'font-family',则使用下一个备选'font-family'重复步骤2。
  4. 如果存在匹配字体,但该字体不包含当前字符的字形,且字体集中存在下一个备选'font-family',则使用下一个备选'font-family'重复步骤2。
  5. 如果在步骤2选择的系列中没有字体,则使用用户代理相关的默认'font-family'并重复步骤2,使用在默认字体中可获得的最佳匹配。

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

上述第(2)步中各属性的匹配规则如下:

  1. 首先尝试'font-style'。如果用户代理字体数据库中存在标记为CSS关键字'italic'(首选)或'oblique'的字体,则满足'italic'要求。否则必须精确匹配值,否则font-style将匹配失败。
  2. 接着尝试'font-variant'。'normal'匹配未标记为'small-caps'的字体;'small-caps'匹配(1)标记为'small-caps'的字体,(2)合成小型大写字母的字体,或(3)所有小写字母被替换为大写字母的字体。小型大写字体可通过电子缩放普通字体中的大写字母来合成。
  3. 随后匹配'font-weight',该属性永远不会匹配失败。(参见下文'font-weight'。)
  4. 'font-size'必须在用户代理相关的容差范围内匹配。(通常,可缩放字体的尺寸会四舍五入到最接近的整像素,而位图字体的容差可能高达20%。)进一步计算基于使用的'font-size'值,而非指定的值。

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

8.12.3.37.2 实体继承(Entity inheritance)

8.12.3.37.3 特性(Attributes)

# 特性(Attributes) 类型 描述
IfcPreDefinedItem (1)
1 Name IfcLabel

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

点击显示 1 个隐藏的继承特性 点击隐藏 1 个继承特性
IfcTextStyleFontModel (5)
2 FontFamily LIST [1:?] OF IfcTextFontName

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

3 FontStyle OPTIONAL IfcFontStyle

字体样式属性在字体系列中的正常(有时称为"roman"或"upright")、斜体和倾斜字体之间进行选择。

4 FontVariant OPTIONAL IfcFontVariant

字体变体属性在正常和小型大写字体之间进行选择。

5 FontWeight OPTIONAL IfcFontWeight

字体粗细属性选择字体的权重。

6 FontSize IfcSizeSelect

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

表 8.12.3.37.A

8.12.3.37.4 形式化命题(Formal propositions)

名称 描述
MeasureOfFontSize

尺寸应由正长度度量值给出,

('IFC4X3_DEV_62887e3f.IFCLENGTHMEASURE' IN TYPEOF(SELF.FontSize)) AND
(SELF.FontSize > 0.)
表 8.12.3.37.B

8.12.3.37.5 形式化表示(Formal representation)

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

8.12.3.37.6 参考文献