java.awt.font

## Class ShapeGraphicAttribute

- java.lang.Object
- - java.awt.font.GraphicAttribute
  - - java.awt.font.ShapeGraphicAttribute

-     public final class ShapeGraphicAttribute
      extends GraphicAttribute

  The `ShapeGraphicAttribute` class is an implementation of `GraphicAttribute` that draws shapes in a `TextLayout`.
  See Also:
    `GraphicAttribute`

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static boolean` | `FILL` | A key indicating the shape should be filled.
    `static boolean` | `STROKE` | A key indicating the shape should be stroked with a 1-pixel wide stroke.

    - ### Fields inherited from class java.awt.font.GraphicAttribute

      `BOTTOM_ALIGNMENT, CENTER_BASELINE, HANGING_BASELINE, ROMAN_BASELINE, TOP_ALIGNMENT`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ShapeGraphicAttribute(Shape shape, int alignment, boolean stroke)` | Constructs a `ShapeGraphicAttribute` for the specified `Shape`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `draw(Graphics2D graphics, float x, float y)` | Renders this `GraphicAttribute` at the specified location.
    `boolean` | `equals(Object rhs)` | Compares this `ShapeGraphicAttribute` to the specified `Object`.
    `boolean` | `equals(ShapeGraphicAttribute rhs)` | Compares this `ShapeGraphicAttribute` to the specified `ShapeGraphicAttribute`.
    `float` | `getAdvance()` | Returns the advance of this `ShapeGraphicAttribute`.
    `float` | `getAscent()` | Returns the ascent of this `ShapeGraphicAttribute`.
    `Rectangle2D` | `getBounds()` | Returns a `Rectangle2D` that encloses all of the bits drawn by this `ShapeGraphicAttribute` relative to the rendering position.
    `float` | `getDescent()` | Returns the descent of this `ShapeGraphicAttribute`.
    `Shape` | `getOutline(AffineTransform tx)` | Return a `Shape` that represents the region that this `ShapeGraphicAttribute` renders.
    `int` | `hashCode()` | Returns a hashcode for this `ShapeGraphicAttribute`.

    - ### Methods inherited from class java.awt.font.GraphicAttribute

      `getAlignment, getJustificationInfo`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### STROKE

          public static final boolean STROKE

      A key indicating the shape should be stroked with a 1-pixel wide stroke.
      See Also:
        Constant Field Values

    - #### FILL

          public static final boolean FILL

      A key indicating the shape should be filled.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ShapeGraphicAttribute

          public ShapeGraphicAttribute(Shape shape,
                                       int alignment,
                                       boolean stroke)

      Constructs a `ShapeGraphicAttribute` for the specified `Shape`.
      Parameters:
        `shape` - the `Shape` to render. The `Shape` is rendered with its origin at the origin of this `ShapeGraphicAttribute` in the host `TextLayout`. This object maintains a reference to `shape`.
        `alignment` - one of the alignments from this `ShapeGraphicAttribute`.
        `stroke` - `true` if the `Shape` should be stroked; `false` if the `Shape` should be filled.

  - ### Method Detail

    - #### getAscent

          public float getAscent()

      Returns the ascent of this `ShapeGraphicAttribute`. The ascent of a `ShapeGraphicAttribute` is the positive distance from the origin of its `Shape` to the top of bounds of its `Shape`.
      Specified by:
        `getAscent` in class `GraphicAttribute`
      Returns:
        the ascent of this `ShapeGraphicAttribute`.
      See Also:
        `GraphicAttribute.getBounds()`

    - #### getDescent

          public float getDescent()

      Returns the descent of this `ShapeGraphicAttribute`. The descent of a `ShapeGraphicAttribute` is the distance from the origin of its `Shape` to the bottom of the bounds of its `Shape`.
      Specified by:
        `getDescent` in class `GraphicAttribute`
      Returns:
        the descent of this `ShapeGraphicAttribute`.
      See Also:
        `GraphicAttribute.getBounds()`

    - #### getAdvance

          public float getAdvance()

      Returns the advance of this `ShapeGraphicAttribute`. The advance of a `ShapeGraphicAttribute` is the distance from the origin of its `Shape` to the right side of the bounds of its `Shape`.
      Specified by:
        `getAdvance` in class `GraphicAttribute`
      Returns:
        the advance of this `ShapeGraphicAttribute`.
      See Also:
        `GraphicAttribute.getBounds()`

    - #### draw

          public void draw(Graphics2D graphics,
                           float x,
                           float y)

      Renders this `GraphicAttribute` at the specified location.
      Specified by:
        `draw` in class `GraphicAttribute`
      Parameters:
        `graphics` - the `Graphics2D` into which to render the graphic
        `x` - the user-space X coordinate where the graphic is rendered
        `y` - the user-space Y coordinate where the graphic is rendered

    - #### getBounds

          public Rectangle2D getBounds()

      Returns a `Rectangle2D` that encloses all of the bits drawn by this `ShapeGraphicAttribute` relative to the rendering position. A graphic can be rendered beyond its origin, ascent, descent, or advance; but if it does, this method's implementation should indicate where the graphic is rendered.
      Overrides:
        `getBounds` in class `GraphicAttribute`
      Returns:
        a `Rectangle2D` that encloses all of the bits rendered by this `ShapeGraphicAttribute`.

    - #### getOutline

          public Shape getOutline(AffineTransform tx)

      Return a `Shape` that represents the region that this `ShapeGraphicAttribute` renders. This is used when a `TextLayout` is requested to return the outline of the text. The (untransformed) shape must not extend outside the rectangular bounds returned by `getBounds`.
      Overrides:
        `getOutline` in class `GraphicAttribute`
      Parameters:
        `tx` - an optional `AffineTransform` to apply to the this `ShapeGraphicAttribute`. This can be null.
      Returns:
        the `Shape` representing this graphic attribute, suitable for stroking or filling.
      Since:
        1.6

    - #### hashCode

          public int hashCode()

      Returns a hashcode for this `ShapeGraphicAttribute`.
      Overrides:
        `hashCode` in class `Object`
      Returns:
        a hash code value for this `ShapeGraphicAttribute`.
      See Also:
        `Object.equals(java.lang.Object)`, `System.identityHashCode(java.lang.Object)`

    - #### equals

          public boolean equals(Object rhs)

      Compares this `ShapeGraphicAttribute` to the specified `Object`.
      Overrides:
        `equals` in class `Object`
      Parameters:
        `rhs` - the `Object` to compare for equality
      Returns:
        `true` if this `ShapeGraphicAttribute` equals `rhs`; `false` otherwise.
      See Also:
        `Object.hashCode()`, `HashMap`

    - #### equals

          public boolean equals(ShapeGraphicAttribute rhs)

      Compares this `ShapeGraphicAttribute` to the specified `ShapeGraphicAttribute`.
      Parameters:
        `rhs` - the `ShapeGraphicAttribute` to compare for equality
      Returns:
        `true` if this `ShapeGraphicAttribute` equals `rhs`; `false` otherwise.

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.