用于提供呈现文本字体的属性键。这些值是 font
的实例。默认值为 null,指示应该根据属性执行 font
的正常分辨率。
textlayout
和 attributedcharacteriterator
根据 textattribute
的 map
进行工作。通常,所有属性都被检查,并被用于选择和配置 font
实例。然而,如果存在 font
属性,将使用其关联 font
。这为用户提供了一种将字体的分辨率属性重写到 font
,或强制使用特定 font
实例的方法。这还允许用户在可以子类化 font
的情况下指定 font
的子类。
font
适用于特殊情形,在这些情形下,客户端已经拥有 font
实例但是仍然需要使用基于 map
的 api。通常,map
中除了 font
属性以外没有其他属性。对于基于 map
的 api,常见情形是单独指定所有属性,因此无需 font
。
但是,如果 font
和其他属性都存在于 map
中,那么呈现系统会将 font
中定义的属性与附加属性合并。此合并过程将 textattributes
分为两组。一组(“主要”组)被认为是字体的选择和规格行为的基础。这些属性有 family
、weight
、width
、posture
、size
、transform
、superscript
和 tracking
。另一组(“次要”组)由除了 font
自身以外的所有其他已定义属性组成。
要生成新的 map
,首先需要从 font
属性获得 font
,并将它的所有 属性提取为一个新的 map
。然后,只将取自原始 map
的次要 属性添加到新 map
的属性中。因此,主要属性的值仅取自 font
,而次要属性的值源自 font
,但可以用 map
中的其他值重写它们。
注:font
的基于 map
的构造方法和 derivefont
方法不处理 font
属性,因为这些属性用于创建新的 font
对象。相反,font.getfont(map)
应该用于处理 font
属性。
- 另请参见:
font