ffmpeg drawtext text parameter expressions
Ok, it can be done, but it's inelegant and has limitations, which make it in the end, not worthwhile. The limitation is that this only properly works with fixed-width fonts. And due to a still-unfixed-bug in ffmpeg, it will look somewhat ugly.

But here it is,

ffmpeg -i input.mp4 -lavfi "color=white:1280x120,fps=30[c]; \
[c]format=rgba, \
drawtext=fontfile=cour.ttf:fontcolor=red:fontsize=60:text='    A   AB  ABC ABCD':x=0:y=0, \
crop=144:120:min(144*trunc(2*t)\,432):0, \
colorkey=FFFFFF:0.01:1,setpts=PTS+(delay/TB)[tx]; \
[0:v][tx]overlay=576:600[out]" \
-map [out] -map 0:a -c:a copy output.mp4


The basic flow is


create an opaque canvas - I used full width as my video input and enough height to contain the text, and I used the same framerate as my video
On this canvas, draw the text once. The basic method here is to animate the crop window. So if your text is 5 characters long, then your print string is text='     1    12   123  1234 12345'. The idea is that the crop width is equal to the full string width and the crop source shifts one string width periodically, thus simulating typing, since each new cropped area contains one additional character. So, first 5 blank spaces for the 5 characters, then after the first 1 there are four spaces to pad out till a full string width is reached, then the 2nd stage text follows with 2 characters and 3 spaces, and so on. I've specified the color space of RGBA since it seemed to provide better results in the keying step further on.
Now the canvas with text on it is cropped. Width is the full string width, and I've kept the same height, but as long it doesn't cut the text, doesn't matter. The crop offset X is animated as follows: StringWidth * integer part of (time divided by period). This shifts the crop window right by one string width after every period i.e. 0.5 seconds in this case. Now, this is enclosed in a minimum function because we want the crop to stay still after all characters have been printed. So, the 2nd value is stringWidth * (no. of characters - 1). Y isn't animated since this is one line only.
The next part makes it ugly. Because of the bug, I kept the background opaque. So, now it has to be chroma keyed out. The filter looks for the BG color of white, and selects only that color (0.01) and fully blends it. I was hoping to smooth out the edges. But doesn't work very well.
The setpts allows to set a delay in seconds. The first character will appear at delay + period seconds. 
Finally, we simply overlay the result on the video.