-
-
Notifications
You must be signed in to change notification settings - Fork 210
Lottie Support
Hermet Park edited this page Mar 19, 2026
·
20 revisions
The list below shows the major features supported by the latest ThorVG Lottie.
| 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 |
| 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) |
| 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) |
Overall Support Rate: 75% (72% fully supported + 3% partially supported)
| 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 | ✅ |
| 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 | ❌ |
| 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
| 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) | ✅ |
| 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
| Type | Constant | Status |
|---|---|---|
| Cycle | "cycle" |
✅ |
| Ping Pong | "pingpong" |
✅ |
| Offset | "offset" |
❌ * |
| Continue | "continue" |
❌ * |
* Logged as not supported
| 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 | ❌ |
| 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 | ✅ |
| 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 | ❌ |
| 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 | ✅ |
| 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 | ✅ |
| Property | Type | Description | Status |
|---|---|---|---|
start |
number | Trim start percentage | ✅ |
end |
number | Trim end percentage | ✅ |
offset |
number | Trim offset | ✅ |
| Method | Parameters | Description | Status |
|---|---|---|---|
effect(name/index) |
identifier | Get effect by name or index | ✅ |
| Effect property access | name | Get effect property by name | ✅ |
| Keyword | Description | Status |
|---|---|---|
ADBE Root Vectors Group |
Root vectors group | ✅ |
ADBE Vectors Group |
Vectors group | ✅ |
ADBE Vector Shape |
Vector shape path | ✅ |
- ✅ Supported:
"cycle","pingpong" ⚠️ Not supported:"offset","continue"(logged only)
- Only
propertyGroup(1)is supported - Higher levels return
undefined
- All audio-related properties return default values (
falseor0) - No actual audio processing