>> как бороться с \n и html тегами
можно и не бороться, а взять все getTextFormat-ом
в textField.text хранится обычный текст с соответствующим html-ной разметке форматом

Код AS3:
public class Main extends Sprite
{
private var srcTF:TextField = new TextField();
private var resTF:TextField = new TextField();
private var timer:Timer = new Timer(100);
public function Main():void
{
srcTF.multiline = true;
srcTF.htmlText = "<b>bold</b> <i><font color='#FF0000' size='16'>red</font></i><br>next line";
srcTF.autoSize = TextFieldAutoSize.LEFT;
resTF.multiline = true;
resTF.autoSize = TextFieldAutoSize.LEFT;
resTF.y = 50;
addChild(srcTF);
addChild(resTF);
timer.addEventListener(TimerEvent.TIMER, timer_timer);
timer.start();
}
private function timer_timer(e:TimerEvent):void
{
resTF.text = srcTF.text.substr(0, resTF.text.length + 1);
for (var i:int = 0; i < resTF.text.length; i++)
resTF.setTextFormat(srcTF.getTextFormat(i, i + 1), i, i + 1);
if (srcTF.text.length == resTF.text.length)
timer.stop();
}
}