Полученный Rectangle имеет координаты относительно TextLine. Т.е. надо скорректировать x и y. Вот проверенный код. Обратите внимание на номер символа, они отсчитываются с 0.

Код:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="100" minHeight="100">
<fx:Script>
<![CDATA[
import flash.text.engine.TextLine;
import flashx.textLayout.compose.TextFlowLine;
import flashx.textLayout.elements.TextFlow;
import mx.events.FlexEvent;
import mx.graphics.SolidColor;
import spark.primitives.Rect;
protected function area_creationCompleteHandler(event:FlexEvent):void
{
var flow:TextFlow = area.textFlow;
var flowLine:TextFlowLine = flow.flowComposer.findLineAtPosition(4);
var textLine:TextLine = flowLine.getTextLine();
var atomInd:int = textLine.getAtomIndexAtCharIndex(4);
var rect:Rectangle = textLine.getAtomBounds(atomInd);
rect.x += textLine.x;
rect.y += textLine.y;
trace(rect);
var rectItem:Rect = new Rect();
rectItem.x = rect.x;
rectItem.y = rect.y;
rectItem.width = rect.width;
rectItem.height = rect.height;
rectItem.fill = new SolidColor(0xFF0000);
addElement(rectItem);
}
]]>
</fx:Script>
<s:TextArea id="area" text="Hello world" creationComplete="area_creationCompleteHandler(event)"/>
</s:Application>