GSoC 2026 Idea Discussion — Native Per-Character Text Animation for TextLayer

@Rhvy1 , does this align with what you had in mind when you suggested variable font support? At the moment I’ve kept it isolated from the TextGroup work since it’s a separate feature, but I’d be interested in hearing whether you think this is the right direction before taking it further.

2 Likes

I can’t even begin to express how sorry I am for not replying for 2 weeks now. I just saw your message!

Yes, this is exactly what I had in mind. Can other axes be animated too?

I’m so sorry for the late reply—I only just saw your message :sob:

My main focus recently has been getting the per-character animation layer finished and stabilized first, so I haven’t explored variable fonts much beyond an initial prototype.

At the moment, it’s only implemented for the weight axis of a variable font (I used Roboto Flex), so no. But it’s really a cool feature to add.

1 Like

Week 8–9 Progress Update — Per-Glyph Animation

Highlights

  • Completed the shared converter-graph implementation by replacing the previous shared-animation registry with a SharedEntry model. Shared animation graphs are now exported under stable identifiers and correctly reconstructed after save/load, preserving shared animations across project reloads.

  • Generalized staggering to operate on any shared converter graph. Each glyph now receives a per-glyph ValueNode_TimeOffset wrapper around the shared animation, with configurable Forward, Reverse, Center-Out, and Random ordering (the latter using a stable per-layer permutation).

  • Hardened serialization and lifecycle handling by implementing shared-entry encoding/decoding, deduplication, cleanup of removed shared animations, invalidation when source animation nodes are deleted, and deferred re-resolution of pending shared entries after canvas attachment.

  • Integrated the shared animation workflow into the Studio parameter panel, including Add/Update/Remove Shared Animation, Stagger Delay, and Stagger Order controls.

  • Performed additional cleanup and refinement of the shared animation pipeline, including improvements to glyph synchronization and save/load behavior.

Demo

  • Created a prototype animation demonstrating the current TextGroup shared animation workflow. The demo showcases shared Scale, Rotation, and Animation Offset animations with configurable staggering applied across independently animated glyph layers.

Current work

  • Investigating rendering/playback performance with larger animated text sequences.

  • Debugging remaining edge cases related to shared animation evaluation during rendering.

3 Likes

I forgot to tell you before: with random, user should be able to choose the random seed. This seed parameter can always appear to user no matter if s/he selected “random” ordering.

3 Likes