Since it is a fairly complex set of expressions, if you need someone to write the full expression, you’d likely have more success by hiring someone to do it. It will likely take hours to write, test and debug.
If you are attempting to do this yourself, here are some pointers numbered based on your questions:
0) In general, everything is tied to the Time variable.
1) The key properties here are time and the length of the text. You’d move the range selector end based on time, and the speed at which you move it depends on the number of characters or words in the text.
2) If you mean vertical centering, there are several threads in this forums about the expressions that achieves this.
3) The sourceRectAtTime() expression can give you the height of the text box content. Making it transition smoothly is a different matter. The “easy” way is to smooth the result, but more than likely it will require a loop that looks backwards frame by frame to see where the last change in text content height is.
4) It would start when the range selector value reached 100. You’d have calculated this point in step 1.
5) The mask should probably be a rectangular track matte with the anchor point set to the right edge. That would simplify the expression.
6) You cannot create a marker with expressions. But you could do the whole thing in reverse, have a marker control the length of the complete animation. Several threads about that exist, but you’d have to tie everything in the animation to the range between the start of the animation and the marker location (in time).
Kalleheikki Kannisto
Senior Graphic Designer