Skip to content

Lottie Support

Hermet Park edited this page Jul 20, 2026 · 22 revisions

The list below shows the major features supported by the latest ThorVG Lottie.

Features

Shapes Description
Ellipse Circle / Ellipse
Group Element Grouping
Path Path Shape
Polystar Polystar / Polygon
Rectangle (Rounded) Rectangle
Strokes Description
Dashes Dashed stroke style
MiterLimit Miter extension limit size
Offset Dash offset position
StrokeCap Butt / Round / Square
StrokeJoin Miter / Bevel / Round
Width Stroke width
Fills Description
Color Solid color
Opacity Fill opacity
Fill Rule NonZero / EvenOdd
Linear Gradient Linear gradient fill
Radial Gradient Radial gradient fill
Images Description
Embedded Base64 embedded image
Path Local / URL image sources
Formats JPG, PNG, WebP
Transforms Description
Anchor Point Anchor position
Auto Orient Direction-based orientation
Opacity Transform opacity
Parenting Relative transformation hierarchy
Position (Separate) X / Y coordinates
Scale X / Y scale factors
Skew Skew transformation
Interpolators Description
Linear Linear interpolation
Bezier Cubic Bezier interpolation
Hold Step / hold interpolation
Spatial Bezier Position-based Bezier curve
Rove Across Time Auto-smooth keyframes over time
Modifiers Description
Offset Path Offset applied to shape paths
PuckerBloat Pull or push path points toward or away from center
Repeater Repeat shape drawing with transforms
Roundness Corner rounding for shapes
TrimPath Trim path individually or simultaneously
ZigZag Create zigzag patterns along shape paths
Masks Description
Add Add masking
Darken Darken blend mask
Difference Difference masking
Expansion Mask offset expansion
Intersect Intersect masking
Lighten Lighten blend masking
Opacity Alpha-based masking
Path Masking Path-based clipping
Subtract Subtract masking
Mattes Description
Alpha (Inverted) alpha blend masking
Luma (Inverted) grayscale blend masking
LayerEffect Description
Fill Replace fill color
Drop Shadow Drop shadow effect
Expression Control Effect control via expressions
Gaussian Blur Gaussian blur effect
Stroke Stroke modifications
Tint Tinting with single color
Tritone Tinting with three colors
Text Description
Alignment Options Char / Word / Line / All alignment
Caps Regular, AllCaps, SmallCaps
Document Default text metrics & layout
Fonts Local / URL fonts supported
Glyphs Embedded glyphs
Justify Horizontal text alignment
Outline Text outline
Range Selector Style range within text
Text Path Text along a path
Tracking Character spacing (tracking)
Audio Description
Audio Assets Embedded / Local / URL audio sources
Volume Static / Animated volume (0–100)
Others Description
Expressions Lottie scripting (JavaScript-based)
Markers Named animation time markers
Precomps Pre-composition layers
Time Remap Time remapping for animations
Time Stretch Stretching animation duration
Slots Property overriding (slots)

Expressions

Overall Support Rate: 75% (72% fully supported + 3% partially supported)

1. Global Properties

Property Type Description Status
time number Current time in seconds ✅
comp(name) function Get composition by name ✅
thisComp object Current composition reference ✅
thisLayer object Current layer reference ✅
thisProperty object Current property reference ✅
footage(name) function Get footage by name ❌
fromCompToSurface function Convert comp coordinates to surface ❌
createPath function Create path programmatically ❌
posterizeTime(fps) function Posterize time by FPS ❌
value various Current property value ✅
index number Layer index ✅

2. Composition (thisComp) Properties

Property Type Description Status
width number Composition width ✅
height number Composition height ✅
duration number Composition duration in seconds ✅
frameDuration number Duration of one frame (1/frameRate) ✅
name string Composition name ✅
layer(index/name) function Get layer by index or name ✅
numLayers number Total number of layers ✅
marker object Marker access ❌
marker.key(index) function Get marker by index ❌
marker.key(name) function Get marker by name ❌
marker.nearestKey(t) function Get nearest marker at time ❌
marker.numKeys number Total marker count ❌
activeCamera object Active camera reference ❌
ntscDropFrame boolean NTSC drop frame mode ❌
displayStartTime number Display start time ❌
shutterAngle number Motion blur shutter angle ❌
shutterPhase number Motion blur shutter phase ❌
bgColor array Background color ❌
pixelAspect number Pixel aspect ratio ❌

3. Layer (thisLayer) Properties

Property Type Description Status
width number Layer width ✅
height number Layer height ✅
index number Layer index ✅
parent object Parent layer reference ✅
hasParent boolean Whether layer has parent ✅
inPoint number Layer in point (start frame) ✅
outPoint number Layer out point (end frame) ✅
startTime number Layer start time in seconds ✅
hasVideo boolean Whether layer has video ❌ *
hasAudio boolean Whether layer has audio ❌ *
enabled boolean Whether layer is enabled ✅
audioActive boolean Whether audio is active ❌ *
transform object Layer transform properties ✅
timeRemap property Time remapping property ✅
name string Layer name ⚠️ **
content(name) function Get content by name ✅
effect(name/index) function Get effect by name or index ✅
toComp(point) function Convert point to comp space ✅
sampleImage(...) function Sample image at point ❌
audioLevels property Audio level in decibels ❌

* Always returns false or 0
** Commented out due to JerryScript conflict issue

4. Transform Properties

Property Type Description Status
anchorPoint array[2] Anchor point coordinates ✅
position array[2] Position coordinates ✅
scale array[2] Scale percentages ✅
rotation number Rotation in degrees ✅
opacity number Opacity (0-100) ✅

5. Property Methods

Method Parameters Description Status
value - Current property value ✅
valueAtTime(t) time Value at specific time ✅
velocity - Current velocity ❌ *
velocityAtTime(t) time Velocity at specific time ✅
speed - Current speed ❌ *
speedAtTime(t) time Speed at specific time ✅
wiggle(freq, amp, ...) various Randomize property value ✅
temporalWiggle(...) various Time-based wiggle ✅
loopIn(type, numKeys) type, count Loop before first keyframe ⚠️ **
loopOut(type, numKeys) type, count Loop after last keyframe ⚠️ **
loopInDuration(...) type, time Loop in by duration ⚠️ **
loopOutDuration(...) type, time Loop out by duration ⚠️ **
key(index) index Get keyframe by index ✅
key(markerName) name Get keyframe by marker ❌
nearestKey(t) time Get nearest keyframe at time ✅
numKeys - Total keyframe count ✅
propertyIndex - Property index ✅
propertyGroup(level) level Get property group ⚠️ ***
smooth(...) various Smooth property value ❌

* Returns 0 by default
** Only "cycle" and "pingpong" modes supported
*** Only level 1 supported

Loop Types

Type Constant Status
Cycle "cycle" ✅
Ping Pong "pingpong" ✅
Offset "offset" ❌ *
Continue "continue" ❌ *

* Logged as not supported

6. Math Functions

Function Parameters Description Status
add(a, b) / $bm_add values Addition (1D, 2D, string) ✅
sub(a, b) / $bm_sub values Subtraction (1D, 2D) ✅
mul(a, b) / $bm_mul values Multiplication (1D, 2D) ✅
div(a, b) / $bm_div values Division (1D, 2D) ✅
sum(a, b) / $bm_sum values Sum (same as add) ✅
mod(a, b) / $bm_mod values Floating-point remainder (1D) ✅
clamp(v, min, max) value, limits Clamp value between limits ✅
linear(...) various Linear interpolation ✅
ease(...) various Cubic ease interpolation ✅
easeIn(...) various Ease in interpolation ✅
easeOut(...) various Ease out interpolation ✅
random() - Random value (0.0-1.0) ✅
degreesToRadians(deg) degrees Convert degrees to radians ✅
radiansToDegrees(rad) radians Convert radians to degrees ✅
lookAt(from, to) points Calculate rotation to look at ❌

7. Vector Math Functions

Function Parameters Description Status
dot(vec1, vec2) vectors Dot product ✅
cross(vec1, vec2) vectors Cross product (2D → scalar) ✅
normalize(vec) vector Normalize vector ✅
length(vec) vector Vector length/magnitude ✅

8. Shape/Path Properties

Property Type Description Status
path object Path object ✅
points() function Get path points ✅
pointOnPath(progress) function Get point at progress (0-1) ✅
tangentOnPath(progress) function Get tangent at progress (0-1) ✅
inTangents array Path in tangent points ❌
outTangents array Path out tangent points ❌
isClosed boolean Whether path is closed ❌

9. Content/Group Methods

Method Description Status
content(name) Get content by name ✅
Group support Group objects ✅
Path support Path objects ✅
Polystar support Polystar objects ✅
Trimpath support Trimpath objects ✅

Polystar Properties

Property Type Description Status
position array[2] Polystar position ✅
innerRadius number Inner radius ✅
outerRadius number Outer radius ✅
innerRoundness number Inner corner roundness ✅
outerRoundness number Outer corner roundness ✅
rotation number Rotation in degrees ✅
points number Number of points ✅

Trimpath Properties

Property Type Description Status
start number Trim start percentage ✅
end number Trim end percentage ✅
offset number Trim offset ✅

10. Effect Properties

Method Parameters Description Status
effect(name/index) identifier Get effect by name or index ✅
Effect property access name Get effect property by name ✅

11. Adobe ADBE Reserved Keywords

Keyword Description Status
ADBE Root Vectors Group Root vectors group ✅
ADBE Vectors Group Vectors group ✅
ADBE Vector Shape Vector shape path ✅

Known Limitations

1. Loop Mode Restrictions

  • ✅ Supported: "cycle", "pingpong"
  • ⚠️ Not supported: "offset", "continue" (logged only)

2. PropertyGroup Limitation

  • Only propertyGroup(1) is supported
  • Higher levels return undefined

3. Audio Properties

  • All audio-related properties return default values (false or 0)
  • No actual audio processing

Clone this wiki locally