模块 java.desktop

类 TextAttribute

所有已实现的接口:
Serializable

public final class TextAttribute extends AttributedCharacterIterator.Attribute
TextAttribute 类定义用于文本呈现的属性键和属性值。

TextAttribute 实例用作属性键来标识 Font TextLayout AttributedCharacterIterator 和其他处理文本属性的类中的属性。此类中定义的其他常量可以用作属性值。

对于每个文本属性,文档提供:

  • 其值的类型,
  • 相关的预定义常量,如果有的话
  • 属性不存在时的默认效果
  • 有限制时的有效值
  • 效果的描述。

  • 属性的值必须始终是不可变的。
  • 在给出值限制的情况下,该集合之外的任何值都保留供将来使用;该值将被视为默认值。
  • null 被视为与默认值相同并导致默认行为。
  • 如果值不是正确的类型,则该属性将被忽略。
  • 值的身份无关紧要,只有实际值。例如,TextAttribute.WEIGHT_BOLDFloat.valueOf(2.0f)表示相同的WEIGHT
  • Number 类型的属性值(用于 WEIGHTWIDTHPOSTURESIZEJUSTIFICATIONTRACKING )可以沿着它们的自然范围变化并且不限于预定义常量。 Number.floatValue() 用于从 Number 获取实际值。
  • WEIGHTWIDTHPOSTURE 的值由系统内插,系统可以选择“最接近的可用”字体或使用其他技术来近似用户的请求。

属性总结

所有 TextAttributes 的键、值类型、主要常量和默认值行为
Key 值类型 Principal 常量 默认值
FAMILY String 请参见字体 DIALOG DIALOG_INPUT
SERIF SANS_SERIF MONOSPACED
“默认”(使用平台默认值)
WEIGHT Number WEIGHT_REGULAR, WEIGHT_BOLD WEIGHT_REGULAR
WIDTH Number WIDTH_CONDENSED, WIDTH_REGULAR,
WIDTH_EXTENDED
WIDTH_REGULAR
POSTURE Number POSTURE_REGULAR, POSTURE_OBLIQUE POSTURE_REGULAR
SIZE Number 没有任何 12.0
TRANSFORM TransformAttribute 参见 TransformAttribute IDENTITY TransformAttribute.IDENTITY
SUPERSCRIPT Integer SUPERSCRIPT_SUPER, SUPERSCRIPT_SUB 0(使用标准字形和规格)
FONT Font 没有任何 null(不重写字体分辨率)
CHAR_REPLACEMENT GraphicAttribute 没有任何 null(使用字体字形绘制文本)
FOREGROUND Paint 没有任何 null(使用当前图形绘制)
BACKGROUND Paint 没有任何 null(不渲染背景)
UNDERLINE Integer UNDERLINE_ON -1(不渲染下划线)
STRIKETHROUGH Boolean STRIKETHROUGH_ON false(不渲染删除线)
RUN_DIRECTION Boolean RUN_DIRECTION_LTR
RUN_DIRECTION_RTL
空(使用 Bidi 标准默认值)
BIDI_EMBEDDING Integer 没有任何 0(使用基线方向)
JUSTIFICATION Number JUSTIFICATION_FULL JUSTIFICATION_FULL
INPUT_METHOD_HIGHLIGHT InputMethodHighlight ,
Annotation
(见类) null(不应用输入突出显示)
INPUT_METHOD_UNDERLINE Integer UNDERLINE_LOW_ONE_PIXEL,
UNDERLINE_LOW_TWO_PIXEL
-1(不渲染下划线)
SWAP_COLORS Boolean SWAP_COLORS_ON false(不交换颜色)
NUMERIC_SHAPING NumericShaper 没有任何 null(不塑造数字)
KERNING Integer KERNING_ON 0(不要求字距调整)
LIGATURES Integer LIGATURES_ON 0(不形成可选的连字)
TRACKING Number TRACKING_LOOSE, TRACKING_TIGHT 0(不添加跟踪)
参见:
  • 字段详细信息

    • FAMILY

      public static final TextAttribute  FAMILY
      字体名称的属性键。值是实例String .默认值为 "Default" ,这会导致使用平台默认字体系列。

      Font 类定义了逻辑字体名称 DIALOG DIALOG_INPUT SANS_SERIF SERIF MONOSPACED 的常量。

      这定义了作为 name 传递给 Font 构造函数的值。允许使用逻辑和物理字体名称。如果找不到具有请求名称的字体,则使用默认字体。

      Note: 不幸的是,这个属性被错误命名,因为它指定的是面孔名称而不仅仅是家庭。因此,诸如“Lucida Sans Bold”之类的值将选择该面(如果存在)。但请注意,如果请求的面不存在,则默认值将与 regular 权重一起使用。名称中的“粗体”是字体名称的一部分,而不是单独要求字体粗细为粗体。

    • WEIGHT

      public static final TextAttribute  WEIGHT
      字体粗细的属性键。值是实例Number .默认值为 WEIGHT_REGULAR

      提供了几个常量值,参见WEIGHT_EXTRA_LIGHT WEIGHT_LIGHT WEIGHT_DEMILIGHT WEIGHT_REGULAR WEIGHT_SEMIBOLD WEIGHT_MEDIUM WEIGHT_DEMIBOLD WEIGHT_BOLD WEIGHT_HEAVY WEIGHT_EXTRABOLD WEIGHT_ULTRABOLD 。值 WEIGHT_BOLD 对应于传递给 Font 构造函数的样式值 Font.BOLD

      该值大致是词干宽度与常规重量的比率。

      系统可以内插提供的值。

    • WEIGHT_EXTRA_LIGHT

      public static final Float  WEIGHT_EXTRA_LIGHT
      最轻的预定义重量。
      参见:
    • WEIGHT_LIGHT

      public static final Float  WEIGHT_LIGHT
      标准重量轻。
      参见:
    • WEIGHT_DEMILIGHT

      public static final Float  WEIGHT_DEMILIGHT
      WEIGHT_LIGHTWEIGHT_STANDARD 之间的中间权重。
      参见:
    • WEIGHT_REGULAR

      public static final Float  WEIGHT_REGULAR
      标准体重。这是 WEIGHT 的默认值。
      参见:
    • WEIGHT_SEMIBOLD

      public static final Float  WEIGHT_SEMIBOLD
      重量比 WEIGHT_REGULAR 稍重。
      参见:
    • WEIGHT_MEDIUM

      public static final Float  WEIGHT_MEDIUM
      WEIGHT_REGULARWEIGHT_BOLD 之间的中间权重。
      参见:
    • WEIGHT_DEMIBOLD

      public static final Float  WEIGHT_DEMIBOLD
      重量比 WEIGHT_BOLD 轻一些。
      参见:
    • WEIGHT_BOLD

      public static final Float  WEIGHT_BOLD
      标准粗体字重。
      参见:
    • WEIGHT_HEAVY

      public static final Float  WEIGHT_HEAVY
      重量比 WEIGHT_BOLD 稍重。
      参见:
    • WEIGHT_EXTRABOLD

      public static final Float  WEIGHT_EXTRABOLD
      一个额外的重量。
      参见:
    • WEIGHT_ULTRABOLD

      public static final Float  WEIGHT_ULTRABOLD
      最重的预定义重量。
      参见:
    • WIDTH

      public static final TextAttribute  WIDTH
      字体宽度的属性键。值是实例Number .默认值为 WIDTH_REGULAR

      提供了几个常量值,请参阅 WIDTH_CONDENSED WIDTH_SEMI_CONDENSED WIDTH_REGULAR WIDTH_SEMI_EXTENDED WIDTH_EXTENDED

      该值大致为前进宽度与常规宽度的比值。

      系统可以内插提供的值。

    • WIDTH_CONDENSED

      public static final Float  WIDTH_CONDENSED
      最简洁的预定义宽度。
      参见:
    • WIDTH_SEMI_CONDENSED

      public static final Float  WIDTH_SEMI_CONDENSED
      适度压缩的宽度。
      参见:
    • WIDTH_REGULAR

      public static final Float  WIDTH_REGULAR
      标准宽度。这是 WIDTH 的默认值。
      参见:
    • WIDTH_SEMI_EXTENDED

      public static final Float  WIDTH_SEMI_EXTENDED
      适度延伸的宽度。
      参见:
    • WIDTH_EXTENDED

      public static final Float  WIDTH_EXTENDED
      最大扩展的预定义宽度。
      参见:
    • POSTURE

      public static final TextAttribute  POSTURE
      字体姿势的属性键。值是实例Number .默认值为 POSTURE_REGULAR

      提供了两个常量值,POSTURE_REGULAR POSTURE_OBLIQUE 。值 POSTURE_OBLIQUE 对应于传递给 Font 构造函数的样式值 Font.ITALIC

      该值大致是字体字干的斜率,表示为超过上升。正数的值向右倾斜。

      系统可以内插提供的值。

      这将影响 Font.getItalicAngle 返回的字体的斜体角度。

      参见:
    • POSTURE_REGULAR

      public static final Float  POSTURE_REGULAR
      标准姿势,正直。这是 POSTURE 的默认值。
      参见:
    • POSTURE_OBLIQUE

      public static final Float  POSTURE_OBLIQUE
      标准的斜体姿势。
      参见:
    • SIZE

      public static final TextAttribute  SIZE
      字体大小的属性键。值是实例Number .默认值为 12pt。

      这对应于 Font 构造函数的 size 参数。

      非常大或非常小的尺寸都会影响渲染性能,并且渲染系统可能无法渲染这些尺寸的文本。负尺寸是非法的,会导致默认尺寸。

      请注意,具有 2x 变换的 12pt 字体的外观和规格可能与没有变换的 24 磅字体的外观和规格不同。

    • TRANSFORM

      public static final TextAttribute  TRANSFORM
      字体转换的属性键。值是实例TransformAttribute .默认值为 TransformAttribute.IDENTITY

      TransformAttribute 类定义常量 IDENTITY

      这对应于传递给 Font.deriveFont(AffineTransform) 的转换。由于该转换是可变的,TextAttribute 值不能,因此使用了 TransformAttribute 包装器类。

      主要目的是支持缩放和倾斜,尽管其他效果也是可能的。

      某些转换会导致基线旋转和/或移动。文本和基线一起转换,以便文本遵循新的基线。例如,对于水平基线上的文本,新基线遵循通过变换的单位 x 向量的方向。文本指标是根据这个新基线来衡量的。因此,例如,在其他条件相同的情况下,使用旋转 TRANSFORM 和未旋转 TRANSFORM 呈现的文本将测量为具有相同的上升、下降和前进。

      在带样式的文本中,每个此类运行的基线一个接一个地对齐,从而可能为整个文本运行创建一个非线性基线。有关详细信息,请参阅 TextLayout.getLayoutPath()

      参见:
    • SUPERSCRIPT

      public static final TextAttribute  SUPERSCRIPT
      上标和下标的属性键。值是实例Integer .默认值为 0,表示不使用上标或下标。

      提供了两个常量值,请参阅 SUPERSCRIPT_SUPER SUPERSCRIPT_SUB 。它们分别具有值 1 和 -1。更大的值定义更高级别的上标或下标,例如,2 对应上标,3 对应上标,负值和下标类似,最高级别为 7(或 -7)。超出此范围的值保留;行为依赖于平台。

      SUPERSCRIPT 可以影响字体的上升和下降。但是,上升和下降永远不会变为负数。

    • SUPERSCRIPT_SUPER

      public static final Integer  SUPERSCRIPT_SUPER
      标准上标。
      参见:
    • SUPERSCRIPT_SUB

      public static final Integer  SUPERSCRIPT_SUB
      标准下标。
      参见:
    • FONT

      public static final TextAttribute  FONT
      用于提供用于呈现文本的字体的属性键。值是 Font 的实例。默认值为 null,表示应执行来自属性的 Font 的正常解析。

      TextLayoutAttributedCharacterIterator 根据 TextAttributesMaps 工作。通常,所有属性都会被检查并用于选择和配置Font实例。但是,如果存在 FONT 属性,则将使用其关联的 Font。这为用户提供了一种将字体属性的分辨率覆盖到 Font 或强制使用特定 Font 实例的方法。这也允许用户在 Font 可以被子类化的情况下指定 Font 的子类。

      FONT 用于客户端已有 Font 实例但仍需要使用基于 Map 的 API 的特殊情况。通常,除了 FONT 属性外,Map 中没有其他属性。对于基于 Map 的 API,常见情况是单独指定所有属性,因此不需要或不需要 FONT

      但是,如果 FONT 和其他属性都存在于 Map 中,则渲染系统会将 Font 中定义的属性与其他属性合并。此合并过程将 TextAttributes 分为两组。一组,“主要”组,被认为是字体选择和度量行为的基础。这些属性是 FAMILYWEIGHTWIDTHPOSTURESIZETRANSFORMSUPERSCRIPTTRACKING。另一组,即“辅助”组,由所有其他已定义的属性组成,FONT 本身除外。

      要生成新的 Map,首先从 FONT 属性中获取 Font,并将其属性的 all 提取到新的 Map 中。然后只有来自原始 Mapsecondary 属性被添加到新的 Map 中。因此,主要属性的值仅来自 Font ,次要属性的值源自 Font 但可以被 Map 中的其他值覆盖。

      基于 Note: Font's Map 的构造函数和 deriveFont 方法不处理 FONT 属性,因为它们用于创建新的 Font 对象。相反,Font.getFont(Map) 应该用于处理 FONT 属性。

      参见:
    • CHAR_REPLACEMENT

      public static final TextAttribute  CHAR_REPLACEMENT
      用户定义字形的属性键,以代替字符的字体标准字形显示。值是 GraphicAttribute 的实例。默认值为 null,表示应使用字体提供的标准字形。

      此属性用于为嵌入在一行文本中的图形或其他组件保留空间。当执行双向重新排序(参见 Bidi )时,需要在一行中正确定位“内联”组件。每个字符(Unicode 代码点)将使用提供的 GraphicAttribute 呈现。通常,应用此属性的字符应该是 \uFFFC

      GraphicAttribute 决定了文本的逻辑和视觉边界;忽略实际的字体值。

      参见:
    • FOREGROUND

      public static final TextAttribute  FOREGROUND
      用于呈现文本的油漆的属性键。值是实例Paint .默认值为null,表示使用渲染时在Graphics2D上设置的Paint

      字形将使用此 Paint 呈现,而不管 Graphics 上设置的 Paint 值(但请参阅 SWAP_COLORS )。

      参见:
    • BACKGROUND

      public static final TextAttribute  BACKGROUND
      用于呈现文本背景的油漆的属性键。值是实例Paint .默认值为 null,表示不应渲染背景。

      文本的逻辑边界将使用此 Paint 填充,然后文本将呈现在它之上(但请参阅 SWAP_COLORS )。

      如有必要,文本的视觉边界被扩展以包括逻辑边界。大纲不受影响。

      参见:
    • UNDERLINE

      public static final TextAttribute  UNDERLINE
      下划线的属性键。值是实例Integer .默认值为-1,表示没有下划线。

      提供了常数值 UNDERLINE_ON

      下划线会影响文本的视觉边界和轮廓。

    • UNDERLINE_ON

      public static final Integer  UNDERLINE_ON
      标准下划线。
      参见:
    • STRIKETHROUGH

      public static final TextAttribute  STRIKETHROUGH
      删除线的属性键。值是实例Boolean .默认值为 false ,表示没有删除线。

      提供了常数值 STRIKETHROUGH_ON

      删除线会影响文本的视觉边界和轮廓。

    • STRIKETHROUGH_ON

      public static final Boolean  STRIKETHROUGH_ON
      一个删除线。
      参见:
    • RUN_DIRECTION

      public static final TextAttribute  RUN_DIRECTION
      线的运行方向的属性键。值是实例Boolean .默认值为 null,表示确定运行方向的标准 Bidi 算法应与值 Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT 一起使用。

      提供了常数 RUN_DIRECTION_RTL RUN_DIRECTION_LTR

      这决定了传递给 Bidi 构造函数的值,以选择段落中文本的主要方向。

      Note: 该属性对于段落中的所有文本都应具有相同的值,否则行为不确定。

      参见:
    • RUN_DIRECTION_LTR

      public static final Boolean  RUN_DIRECTION_LTR
      从左到右的运行方向。
      参见:
    • RUN_DIRECTION_RTL

      public static final Boolean  RUN_DIRECTION_RTL
      从右到左的运行方向。
      参见:
    • BIDI_EMBEDDING

      public static final TextAttribute  BIDI_EMBEDDING
      文本嵌入级别的属性键。值是实例Integer .默认值为 null ,表示双向算法应该在没有显式嵌入的情况下运行。

      正值 1 到 61 是 embedding 级,负值 -1 到 -61 是 override 级。值 0 表示使用基线方向。这些级别在嵌入级别数组中传递给 Bidi 构造函数。

      Note: 当该属性出现在段落中的任何位置时,该段落中的任何 Unicode 双向控制字符(RLO、LRO、RLE、LRE 和 PDF)都将被忽略,并且该属性不存在的文本运行被视为存在并且值为 0。

      参见:
    • JUSTIFICATION

      public static final TextAttribute  JUSTIFICATION
      段落对齐的属性键。值是实例Number .默认值为 1,表示对齐应使用提供的全宽。值固定在 [0..1] 范围内。

      提供了常量 JUSTIFICATION_FULL JUSTIFICATION_NONE

      指定在 TextLayout 上请求对齐时要使用的额外空间的分数。例如,如果线宽为 50 点,要求对齐到 70 点,则值 0.75 将填充以使用剩余空间的四分之三,即 15 点,这样得到的线将是 65 点长度。

      Note: 这对于段落中的所有文本应该具有相同的值,否则行为是不确定的。

      参见:
    • JUSTIFICATION_FULL

      public static final Float  JUSTIFICATION_FULL
      将线对齐到请求的完整宽度。这是 JUSTIFICATION 的默认值。
      参见:
    • JUSTIFICATION_NONE

      public static final Float  JUSTIFICATION_NONE
      不要让线对齐。
      参见:
    • INPUT_METHOD_HIGHLIGHT

      public static final TextAttribute  INPUT_METHOD_HIGHLIGHT
      输入方法高亮样式的属性键。

      值是 InputMethodHighlight Annotation 的实例。默认值为 null ,这意味着在呈现之前不应应用输入法样式。

      如果需要单独呈现具有相同 InputMethodHighlight 的相邻文本运行,则应将 InputMethodHighlights 包装在 Annotation 实例中。

      输入方法高亮显示是在输入方法合成文本时使用的。文本编辑组件应该保留它们,即使它们通常只处理无样式的文本,并使它们可用于绘图例程。

      参见:
    • INPUT_METHOD_UNDERLINE

      public static final TextAttribute  INPUT_METHOD_UNDERLINE
      输入方法下划线的属性键。值是实例Integer .默认值为 -1 ,表示没有下划线。

      提供了几个常量值,请参阅 UNDERLINE_LOW_ONE_PIXEL UNDERLINE_LOW_TWO_PIXEL UNDERLINE_LOW_DOTTED UNDERLINE_LOW_GRAY UNDERLINE_LOW_DASHED

      如果需要,这可以与 UNDERLINE 结合使用。主要目的是供输入法使用。将这些下划线用于简单装饰的其他用途可能会使用户感到困惑。

      输入方法下划线会影响文本的视觉边界和轮廓。

      自从:
      1.3
    • UNDERLINE_LOW_ONE_PIXEL

      public static final Integer  UNDERLINE_LOW_ONE_PIXEL
      单像素实心低下划线。
      自从:
      1.3
      参见:
    • UNDERLINE_LOW_TWO_PIXEL

      public static final Integer  UNDERLINE_LOW_TWO_PIXEL
      双像素实心低下划线。
      自从:
      1.3
      参见:
    • UNDERLINE_LOW_DOTTED

      public static final Integer  UNDERLINE_LOW_DOTTED
      单像素虚线低下划线。
      自从:
      1.3
      参见:
    • UNDERLINE_LOW_GRAY

      public static final Integer  UNDERLINE_LOW_GRAY
      双像素灰色低下划线。
      自从:
      1.3
      参见:
    • UNDERLINE_LOW_DASHED

      public static final Integer  UNDERLINE_LOW_DASHED
      单像素虚线低下划线。
      自从:
      1.3
      参见:
    • SWAP_COLORS

      public static final TextAttribute  SWAP_COLORS
      用于交换前景和背景的属性键 Paints 。值是实例Boolean .默认值为 false ,表示不交换颜色。

      常数值 SWAP_COLORS_ON 已定义。

      如果FOREGROUND 属性被设置,它的Paint将被用作背景,否则将使用当前在Graphics上的Paint。如果设置了 BACKGROUND 属性,其 Paint 将用作前景,否则系统将找到与(已解析的)背景形成对比的颜色,以便文本可见。

      参见:
    • SWAP_COLORS_ON

      public static final Boolean  SWAP_COLORS_ON
      交换前景和背景。
      自从:
      1.3
      参见:
    • NUMERIC_SHAPING

      public static final TextAttribute  NUMERIC_SHAPING
      用于将 ASCII 十进制数字转换为其他十进制范围的属性键。值是 NumericShaper 的实例。默认值为 null ,这意味着不执行数字整形。

      定义数字整形器时,文本首先由整形器处理,然后再对文本进行任何其他分析。

      Note: 段落中的所有文本都应具有相同的值,否则行为不确定。

      自从:
      1.4
      参见:
    • KERNING

      public static final TextAttribute  KERNING
      请求字距调整的属性键。值是实例Integer .默认值为 0 ,不要求字距调整。

      提供了常数值 KERNING_ON

      单个字符的默认推进不适用于某些字符序列,例如“To”或“AWAY”。如果不进行字距调整,相邻字符似乎被太多空格分隔开。字距调整使选定的字符序列具有不同的间距,以获得更令人愉悦的视觉外观。

      自从:
      1.6
    • KERNING_ON

      public static final Integer  KERNING_ON
      请求标准字距调整。
      自从:
      1.6
      参见:
    • LIGATURES

      public static final TextAttribute  LIGATURES
      用于启用可选连字的属性键。值是实例Integer .默认值为 0 ,这意味着不使用可选连字。

      常数值 LIGATURES_ON 已定义。

      始终启用书写系统所需的连字。

      自从:
      1.6
    • LIGATURES_ON

      public static final Integer  LIGATURES_ON
      请求标准的可选连字。
      自从:
      1.6
      参见:
    • TRACKING

      public static final TextAttribute  TRACKING
      控制跟踪的属性键。值是实例Number .默认值为 0 ,这意味着没有额外的跟踪。

      提供了常数值 TRACKING_TIGHT TRACKING_LOOSE

      跟踪值乘以字体点大小并通过字体转换来确定要添加到每个字形簇的 advance 的附加量。正跟踪值将抑制可选连字的形成。跟踪值通常在 -0.10.3 之间;超出此范围的值通常是不可取的。

      自从:
      1.6
    • TRACKING_TIGHT

      public static final Float  TRACKING_TIGHT
      执行紧密跟踪。
      自从:
      1.6
      参见:
    • TRACKING_LOOSE

      public static final Float  TRACKING_LOOSE
      执行松散跟踪。
      自从:
      1.6
      参见:
  • 构造方法详细信息

    • TextAttribute

      protected TextAttribute(String  name)
      构造具有指定名称的 TextAttribute
      参数:
      name - 分配给这个 TextAttribute 的属性名称
  • 方法详情