8.12.3.37 IfcTextStyleFontModel(文本样式字体模型)
RV ⓘ
AbV ⓘ
8.12.3.37.1 语义定义(Semantic definition)
根据W3C对层叠样式表的定义: 设置字体属性将成为样式表最常见的用途之一。遗憾的是,目前尚无明确界定且普遍接受的字体分类体系,适用于某字体系列的术语可能并不适用于其他字体。例如,"italic"通常用于标记倾斜文本,但倾斜文本也可能被标记为_Oblique_、Slanted、Incline、Cursive_或_Kursiv。因此,将典型字体选择属性映射到特定字体并非简单之事。
字体匹配 由于缺乏公认的通用字体属性分类体系,必须谨慎进行属性与字型的匹配。这些属性按明确定义的顺序进行匹配,以确保匹配过程的结果在不同用户代理间尽可能保持一致(假设向每个代理提供相同的字型库)。
- 用户代理建立(或访问)一个数据库,包含该用户代理所知的所有字体的相关CSS1属性。用户代理可能因字体已本地安装或先前通过网络下载而知晓该字体。如果存在两个属性完全相同的字体,则忽略其中一个。
- 在给定元素及该元素中的每个字符处,用户代理汇集适用于该元素的字体属性。使用完整的属性集,用户代理通过'font-family'属性选择暂定字体系列。其余属性根据各属性描述的匹配标准在该系列中进行测试。如果所有剩余属性均匹配,则该字体即为给定元素的匹配字体。
- 如果在步骤2处理的'font-family'中没有匹配字体,且字体集中存在下一个备选'font-family',则使用下一个备选'font-family'重复步骤2。
- 如果存在匹配字体,但该字体不包含当前字符的字形,且字体集中存在下一个备选'font-family',则使用下一个备选'font-family'重复步骤2。
- 如果在步骤2选择的系列中没有字体,则使用用户代理相关的默认'font-family'并重复步骤2,使用在默认字体中可获得的最佳匹配。
(上述算法可进行优化,以避免为每个字符重新访问CSS1属性。)
上述第(2)步中各属性的匹配规则如下:
- 首先尝试'font-style'。如果用户代理字体数据库中存在标记为CSS关键字'italic'(首选)或'oblique'的字体,则满足'italic'要求。否则必须精确匹配值,否则font-style将匹配失败。
- 接着尝试'font-variant'。'normal'匹配未标记为'small-caps'的字体;'small-caps'匹配(1)标记为'small-caps'的字体,(2)合成小型大写字母的字体,或(3)所有小写字母被替换为大写字母的字体。小型大写字体可通过电子缩放普通字体中的大写字母来合成。
- 随后匹配'font-weight',该属性永远不会匹配失败。(参见下文'font-weight'。)
- 'font-size'必须在用户代理相关的容差范围内匹配。(通常,可缩放字体的尺寸会四舍五入到最接近的整像素,而位图字体的容差可能高达20%。)进一步计算基于使用的'font-size'值,而非指定的值。
继承的_Name_属性用于定义字体名称,特别是在未提供(列表)字体系列的情况下。
8.12.3.37.2 实体继承(Entity inheritance)
-
- IfcPreDefinedItem
- IfcColourRgbList
- IfcColourSpecification
- IfcCurveStyleFont
- IfcCurveStyleFontAndScaling
- IfcCurveStyleFontPattern
- IfcIndexedColourMap
- IfcSurfaceStyleLighting
- IfcSurfaceStyleRefraction
- IfcSurfaceStyleShading
- IfcSurfaceStyleWithTextures
- IfcSurfaceTexture
- IfcTextStyleForDefinedFont
- IfcTextStyleTextModel
- IfcTextureCoordinate
- IfcTextureVertex
- IfcTextureVertexList
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.4 形式化命题(Formal propositions)
| 名称 | 描述 |
|---|---|
| MeasureOfFontSize |
尺寸应由正长度度量值给出, |
|
|
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;