user: Explain TextCurve(Curve) in complete detail according to the official Blender documentation.

assistant: # TextCurve(Curve)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID"), [`Curve`](bpy.types.Curve.html#bpy.types.Curve "bpy.types.Curve")

*class* bpy.types.TextCurve(*Curve*)
:   Curve data-block used for storing text

    active_textbox
    :   Type:
        :   int in [-inf, inf], default 0

    align_x
    :   Text horizontal alignment from the object or text box center

        - `LEFT`
          Left – Align text to the left.
        - `CENTER`
          Center – Center text.
        - `RIGHT`
          Right – Align text to the right.
        - `JUSTIFY`
          Justify – Align to the left and the right.
        - `FLUSH`
          Flush – Align to the left and the right, with equal character spacing.

        Type:
        :   enum in [`'LEFT'`, `'CENTER'`, `'RIGHT'`, `'JUSTIFY'`, `'FLUSH'`], default `'LEFT'`

    align_y
    :   Text vertical alignment from the object center

        - `TOP`
          Top – Align text to the top.
        - `TOP_BASELINE`
          Top Baseline – Align text to the top line’s baseline.
        - `CENTER`
          Middle – Align text to the middle.
        - `BOTTOM_BASELINE`
          Bottom Baseline – Align text to the bottom line’s baseline.
        - `BOTTOM`
          Bottom – Align text to the bottom.

        Type:
        :   enum in [`'TOP'`, `'TOP_BASELINE'`, `'CENTER'`, `'BOTTOM_BASELINE'`, `'BOTTOM'`], default `'TOP_BASELINE'`

    body
    :   Content of this text object

        Type:
        :   string, default “”, (never None)

    body_format
    :   Stores the style of each character

        Type:
        :   [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`TextCharacterFormat`](bpy.types.TextCharacterFormat.html#bpy.types.TextCharacterFormat "bpy.types.TextCharacterFormat"), (readonly)

    edit_format
    :   Editing settings character formatting

        Type:
        :   [`TextCharacterFormat`](bpy.types.TextCharacterFormat.html#bpy.types.TextCharacterFormat "bpy.types.TextCharacterFormat"), (readonly)

    family
    :   Use objects as font characters (give font objects a common name followed by the character they represent, eg. ‘family-a’, ‘family-b’, etc, set this setting to ‘family-’, and turn on Vertex Instancing)

        Type:
        :   string, default “”, (never None)

    follow_curve
    :   Curve deforming text object

        Type:
        :   [`Object`](bpy.types.Object.html#bpy.types.Object "bpy.types.Object")

    font
    :   Type:
        :   [`VectorFont`](bpy.types.VectorFont.html#bpy.types.VectorFont "bpy.types.VectorFont")

    font_bold
    :   Type:
        :   [`VectorFont`](bpy.types.VectorFont.html#bpy.types.VectorFont "bpy.types.VectorFont")

    font_bold_italic
    :   Type:
        :   [`VectorFont`](bpy.types.VectorFont.html#bpy.types.VectorFont "bpy.types.VectorFont")

    font_italic
    :   Type:
        :   [`VectorFont`](bpy.types.VectorFont.html#bpy.types.VectorFont "bpy.types.VectorFont")

    has_selection
    :   Whether there is any text selected

        Type:
        :   boolean, default False, (readonly)

    is_select_bold
    :   Whether the selected text is bold

        Type:
        :   boolean, default False, (readonly)

    is_select_italic
    :   Whether the selected text is italics

        Type:
        :   boolean, default False, (readonly)

    is_select_smallcaps
    :   Whether the selected text is small caps

        Type:
        :   boolean, default False, (readonly)

    is_select_underline
    :   Whether the selected text is underlined

        Type:
        :   boolean, default False, (readonly)

    offset_x
    :   Horizontal offset from the object origin

        Type:
        :   float in [-inf, inf], default 0.0

    offset_y
    :   Vertical offset from the object origin

        Type:
        :   float in [-inf, inf], default 0.0

    overflow
    :   Handle the text behavior when it does not fit in the text boxes

        - `NONE`
          Overflow – Let the text overflow outside the text boxes.
        - `SCALE`
          Scale to Fit – Scale down the text to fit inside the text boxes.
        - `TRUNCATE`
          Truncate – Truncate the text that would go outside the text boxes.

        Type:
        :   enum in [`'NONE'`, `'SCALE'`, `'TRUNCATE'`], default `'NONE'`

    shear
    :   Italic angle of the characters

        Type:
        :   float in [-1, 1], default 0.0

    size
    :   Type:
        :   float in [0.0001, 10000], default 1.0

    small_caps_scale
    :   Scale of small capitals

        Type:
        :   float in [-inf, inf], default 0.75

    space_character
    :   Type:
        :   float in [0, 10], default 1.0

    space_line
    :   Type:
        :   float in [0, 10], default 1.0

    space_word
    :   Type:
        :   float in [0, 10], default 1.0

    text_boxes
    :   Type:
        :   [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`TextBox`](bpy.types.TextBox.html#bpy.types.TextBox "bpy.types.TextBox"), (readonly)

    underline_height
    :   Type:
        :   float in [0, 0.8], default 0.05

    underline_position
    :   Vertical position of underline

        Type:
        :   float in [-0.2, 0.8], default 0.0

    use_fast_edit
    :   Don’t fill polygons while editing

        Type:
        :   boolean, default False

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type