Skip to content

Text Layer

TextLayer

TextLayer(
    enabled: bool,
    match_name: str,
    name: str,
    property_depth: int,
    properties: list[Property | PropertyGroup],
    auto_orient: AutoOrientType,
    comment: str,
    containing_comp: CompItem,
    frame_in_point: int,
    frame_out_point: int,
    frame_start_time: int,
    id: int,
    in_point: float,
    label: Label,
    layer_type: str,
    locked: bool,
    null_layer: bool,
    out_point: float,
    _parent_id: int,
    start_time: float,
    shy: bool,
    solo: bool,
    stretch: float,
    time: float,
    adjustment_layer: bool,
    audio_enabled: bool,
    blending_mode: BlendingMode,
    collapse_transformation: bool,
    effects_active: bool,
    environment_layer: bool,
    frame_blending: bool,
    frame_blending_type: FrameBlendingType,
    guide_layer: bool,
    motion_blur: bool,
    preserve_transparency: bool,
    quality: LayerQuality,
    sampling_quality: LayerSamplingQuality,
    three_d_layer: bool,
    three_d_per_char: bool,
    track_matte_type: TrackMatteType,
    _source_id: int,
    _matte_layer_id: int,
)

Bases: AVLayer

The TextLayer object represents a text layer within a composition.

Example
from aep_parser import parse

app = parse("project.aep")
comp = app.project.compositions[0]
text_layer = comp.text_layers[0]
print(text_layer.text)
Info

TextLayer is a subclass of AVLayer object. All methods and attributes of AVLayer are available when working with TextLayer.

See: https://ae-scripting.docsforadobe.dev/layer/textlayer/

Attributes

active

active: bool

When True, the layer is active at the current time.

Overrides PropertyBase.active to evaluate active_at_time at time.

adjustment_layer

adjustment_layer: bool

When True, the layer is an adjustment layer.

audio_enabled

audio_enabled: bool

When True, the layer's audio is enabled. This value corresponds to the audio toggle switch in the Timeline panel.

auto_orient

auto_orient: AutoOrientType

The type of automatic orientation to perform for the layer.

blending_mode

blending_mode: BlendingMode

The blending mode of the layer.

can_set_collapse_transformation

can_set_collapse_transformation: bool

True if it is possible to set the collapse_transformation value.

Returns True for pre-composition layers and solid layers.

can_set_enabled

can_set_enabled: bool

True if the enabled attribute value can be set.

This is True for all layers, effect property groups, shape vector groups, and text path options.

can_set_time_remap_enabled

can_set_time_remap_enabled: bool

True if it is possible to enable time remapping on this layer.

Time remapping can be enabled when the layer's source has a non-zero duration (i.e. it is not a still image or text layer).

collapse_transformation

collapse_transformation: bool

True if collapse transformation is on for this layer.

comment

comment: str

A descriptive comment for the layer.

containing_comp

containing_comp: CompItem = field(repr=False)

The composition that contains this layer. Set after parsing when the full project structure is available.

effects

effects: PropertyGroup | None

Contains a layer's effects.

This is the Effects PropertyGroup (match name ADBE Effect Parade). Each child in properties is itself a PropertyGroup representing one effect. None when the layer has no effects.

effects_active

effects_active: bool

True if the layer's effects are active, as indicated by the icon next to it in the user interface.

elided

elided: bool = field(init=False, default=False)

When True, the property is not shown in the UI. An elided property is still present in the timeline but hidden from view.

enabled

enabled: bool

Corresponds to the setting of the eyeball icon.

environment_layer

environment_layer: bool

True if this is an environment layer in a Ray-traced 3D composition.

frame_blending

frame_blending: bool

True if frame blending is enabled for this layer.

frame_blending_type

frame_blending_type: FrameBlendingType

The type of frame blending to perform when frame blending is enabled for the layer.

frame_in_point

frame_in_point: int

The "in" point of the layer, expressed in composition time (frames). This is the first frame where the layer becomes visible. The binary format stores this relative to start_time; parsed value is absolute composition time.

frame_out_point

frame_out_point: int

The "out" point of the layer, expressed in composition time (frames). This is the first frame where the layer is no longer visible. Clamped to composition duration to match ExtendScript behavior.

frame_start_time

frame_start_time: int

The start time of the layer, expressed in composition time (frames). This determines where the layer's first frame of content appears in the composition timeline.

guide_layer

guide_layer: bool

True if the layer is a guide layer.

has_track_matte

has_track_matte: bool

True if this layer has track matte. When true, this layer's track_matte_type value controls how the matte is applied.

has_video

has_video: bool

True if the layer has a video component.

An AVLayer has video when its source has video, or when the layer has no external source (text and shape layers always render video).

height

height: int

The height of the layer in pixels.

Returns the source item's height if available, otherwise falls back to the containing composition's height (matches ExtendScript behavior for source-less layers like text and shape layers).

id

id: int

Unique and persistent identification number used internally to identify a Layer between sessions.

in_point

in_point: float

The "in" point of the layer, expressed in composition time (seconds). This is the time at which the layer starts being visible in the composition. The binary format stores this relative to start_time as a signed integer; parsed value is absolute composition time.

index

index: int

The 0-based index position of the layer in its containing comp.

Warning

Unlike ExtendScript (1-based), this uses Python's 0-based convention so that comp.layers[layer.index] works directly.

is_effect

is_effect: bool = field(init=False, default=False)

When True, this property is an effect PropertyGroup.

is_mask

is_mask: bool = field(init=False, default=False)

When True, this property is a mask PropertyGroup.

is_modified

is_modified: bool

True if any child property is modified.

For indexed groups (such as Effects or Masks parades), the group is considered modified when it has any children - adding items to an indexed group is itself a modification.

is_name_from_source

is_name_from_source: bool

True if the layer has no expressly set name, but contains a named source.

In this case, layer.name has the same value as layer.source.name. False if the layer has an expressly set name, or if the layer does not have a source.

is_name_set

is_name_set: bool = field(init=False)

is_track_matte

is_track_matte: bool

True if this layer is being used as a track matte.

label

label: Label

The label color. Colors are represented by their number (0 for None, or 1 to 16 for one of the preset colors in the Labels preferences).

layer_type

layer_type: str

The type of layer. Matches ExtendScript layerType values: "AVLayer", "LightLayer", "CameraLayer", or "Layer".

locked

locked: bool

When True, the layer is locked. This corresponds to the lock toggle in the Layer panel.

marker

marker: Property | None

The layer's marker property.

A Property with match_name="ADBE Marker" whose keyframes hold marker values. None when the layer has no markers.

markers

markers: list[MarkerValue]

A flat list of MarkerValue objects for this layer.

Shortcut for accessing marker data without navigating the property tree. Returns an empty list when the layer has no markers.

Example
for marker in layer.markers:
    print(marker.comment)

masks

masks: PropertyGroup | None

Contains a layer's masks.

This is the Masks PropertyGroup (match name ADBE Mask Parade). Each child in properties is itself a PropertyGroup representing one mask. None when the layer has no masks.

match_name

match_name: str

A special name for the property used to build unique naming paths. The match name is not displayed, but you can refer to it in scripts. Every property has a unique match-name identifier.

motion_blur

motion_blur: bool

True if motion blur is enabled for the layer.

name

name: str

Display name of the property.

null_layer

null_layer: bool

When True, the layer was created as a null object.

num_properties

num_properties: int

The number of child properties in this group.

Equivalent to ExtendScript PropertyGroup.numProperties.

out_point

out_point: float

The "out" point of the layer, expressed in composition time (seconds). This is the time at which the layer stops being visible in the composition. Clamped to composition duration to match ExtendScript API behavior (a layer's out_point cannot exceed its containing composition's duration). The binary format stores this relative to start_time.

parent

parent: Layer | None

The parent layer for layer parenting. None if no parent.

parent_property

parent_property: PropertyGroup | None = field(
    init=False, default=None, repr=False
)

The parent PropertyGroup of this property, or None for top-level layer property groups.

preserve_transparency

preserve_transparency: bool

True if preserve transparency is enabled for the layer.

properties

properties: list[Property | PropertyGroup]

List of properties in this group.

property_depth

property_depth: int

The number of levels of parent groups between this property and the containing layer. The value is 0 for a layer.

property_index

property_index: int | None

The 0-based position of this property within its parent group.

Returns None for layers (property depth 0).

Warning

Unlike ExtendScript (1-based), this uses Python's 0-based convention so that group.properties[prop.property_index] works directly.

property_type

property_type: PropertyType = field(
    init=False, default=NAMED_GROUP
)

The type of this property. One of PropertyType.PROPERTY, PropertyType.NAMED_GROUP, or PropertyType.INDEXED_GROUP.

quality

quality: LayerQuality

The layer's draft quality setting.

sampling_quality

sampling_quality: LayerSamplingQuality

The layer's sampling method.

selected

selected: bool = field(init=False, default=False)

When True, the property is selected.

shy

shy: bool

When True, the layer is "shy", meaning that it is hidden in the Layer panel if the composition's "Hide all shy layers" option is toggled on.

solo

solo: bool

When True, the layer is soloed.

source

source: Item | None

The source item for this layer. None for a text layer.

start_time

start_time: float

The start time of the layer, expressed in composition time (seconds).

stretch

stretch: float

The layer's time stretch, expressed as a percentage. A value of 100 means no stretch. Values between 0 and 1 are set to 1, and values between -1 and 0 (not including 0) are set to -1.

text

text: PropertyGroup | None

Contains a layer's text properties (if any).

three_d_layer

three_d_layer: bool

True if this layer is a 3D layer.

three_d_per_char

three_d_per_char: bool

True if this layer has the Enable Per-character 3D switch set, allowing its characters to be animated off the plane of the text layer. Applies only to text layers.

time

time: float

The current time of the layer, expressed in composition time (seconds).

time_remap_enabled

time_remap_enabled: bool

True if time remapping is enabled for this layer.

track_matte_layer

track_matte_layer: AVLayer | None

The track matte layer for this layer. Returns None if this layer has no track matte layer.

track_matte_type

track_matte_type: TrackMatteType

Specifies the way the track matte is applied.

transform

transform: PropertyGroup

Contains a layer's transform properties.

This is the Transform PropertyGroup (match name ADBE Transform Group). Individual transform properties (Position, Scale, Rotation, etc.) are accessible via properties.

width

width: int

The width of the layer in pixels.

Returns the source item's width if available, otherwise falls back to the containing composition's width (matches ExtendScript behavior for source-less layers like text and shape layers).

Functions

active_at_time

active_at_time(time: float) -> bool

Return whether the layer is active at the given time.

For this method to return True, three conditions must be met:

  1. The layer must be enabled.
  2. No other layer in the containing_comp may be soloed unless this layer is also solo.
  3. time must fall between in_point (inclusive) and out_point (exclusive).

Parameters:

  • time
    (float) –

    The time in seconds.

property

property(
    index: int | None = None, name: str | None = None
) -> Property | PropertyGroup

Find and return a child property of this group.

The property can be specified by either its index or name (match name or display name).

Parameters:

  • index
    (int | None, default: None ) –

    The index of the property to return.

  • name
    (str | None, default: None ) –

    The name of the property to return.