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 |
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) |
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) |
✅ |
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) |
✅ |
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