One way I’ve thought of that might make things a bit easier is to set up another text animator that pushes all the characters along the line to the left as they appear. So the one appearing is always in the same place. Use a pickwhip expression to link the position movement to the typewriter animation. That way you don’t have to move the hammer shadow. You’ll still have to change the size of the hammer manually (i’d probably do myself a favour and keep it the same size!)
Then (the trickier bit) you can precomp that animation, then use a expression linking the keyframed percentage of the typewriter animation to the position of the precomp to keep the text static and everything else moving along the line. A range mapped expression would work, something like this:
input = comp("precomp_name").layer("youranimating_text").text.animator("Animator 1").selector("Range Selector 1").start;
inputLow = 0;
inputHigh = 100;
outputLow = -1000; //start position of precomp
outputHigh = 1000; //end position of precomp
linear(input,inputLow,inputHigh,outputLow,outputHigh)
I hope that helps. Might be trickier if you have multiple lines of text! But you can make this same method more complicated by adding another text animator that keeps the new lines in the same place, and a adding a Y axis to the precomp expression.
All about not moving the hammer as I’m pretty sure you can’t access absolute character positions in after effects… You can, however, do this in cinema 4d!
H.