 		bounds.width = width;
 		bounds.height = height;
 
-		textBlockComposer.lineHeight = lineHeight;
-		textBlockComposer.paddingLeft = paddingLeft;
-		textBlockComposer.paddingTop = paddingTop;
-		textBlockComposer.paddingRight = paddingRight;
-		textBlockComposer.paddingBottom = paddingBottom;
-		textBlockComposer.textAlign = textAlign;
-		textBlockComposer.verticalAlign = verticalAlign;
+		textBlockComposer.lineHeight = getStyle("lineHeight");
+		textBlockComposer.paddingBottom = getStyle("paddingBottom");
+		textBlockComposer.paddingLeft = getStyle("paddingLeft");
+		textBlockComposer.paddingRight = getStyle("paddingRight");
+		textBlockComposer.paddingTop = getStyle("paddingTop");
+		textBlockComposer.textAlign = getStyle("textAlign");
+		textBlockComposer.verticalAlign = getStyle("verticalAlign");
 
 		textBlockComposer.composeText(text, elementFormat);
 				
 		textBlockComposer.addTextLines(DisplayObjectContainer(displayObject));
 	}
+
+	/**
+	 *  @private
+	 */
+    private function setKerning(elementFormat:ElementFormat):void
+    {
+        var kerning:Object = getStyle("kerning");
+        
+        if (kerning === true)
+            kerning = Kerning.ON;
+        else if (kerning === false)
+            kerning = Kerning.OFF;
+        
+        elementFormat.kerning = String(kerning);
+    }
+
+	/**
+	 *  @private
+	 */
+    private function setTracking(elementFormat:ElementFormat):void
+    {
+        var trackingLeft:Object = getStyle("trackingLeft");
+        var trackingRight:Object = getStyle("trackingRight");
+        
+        if (trackingRight == null)
+            trackingRight = getStyle("tracking");
+
+        var value:Number;
+        var fontSize:Number = elementFormat.fontSize;
+       
+        value = getNumberOrPercentOf(trackingLeft, fontSize);
+        if (!isNaN(value))
+            elementFormat.trackingLeft = value;
+
+        value = getNumberOrPercentOf(trackingRight, fontSize);
+        if (!isNaN(value))
+            elementFormat.trackingRight = value;
+    }
 }
 
 }

	private function compose(width:Number = Infinity,
							 height:Number = Infinity):void
	{
		var fontDescription:FontDescription = new FontDescription();
		fontDescription.fontName = fontFamily;
		fontDescription.fontPosture = fontStyle;
		fontDescription.fontWeight = fontWeight;
		
		var elementFormat:ElementFormat = new ElementFormat();
		elementFormat.alpha = textAlpha;
        elementFormat.color = color;
		elementFormat.fontDescription = fontDescription;
		elementFormat.fontSize = fontSize;
		elementFormat.kerning = kerning;
        if (tracking is Number)
        {
            elementFormat.trackingRight = Number(tracking);
        }
        else if (tracking is String) 
        {
            var len:int = String(tracking).length;
            if (tracking.charAt(len - 1) == "%")
            {
                var percent:Number = Number(tracking.substring(0, len - 1));
                elementFormat.trackingRight = percent / 100 * fontSize;
            }
        }

		textBlockComposer.removeTextLines(DisplayObjectContainer(displayObject));
		
		var bounds:Rectangle = textBlockComposer.requestedBounds;
		bounds.x = 0;

import flash.geom.Rectangle;
import flash.text.engine.ElementFormat;
import flash.text.engine.FontDescription;
import flash.text.engine.Kerning;

import flex.graphics.graphicsClasses.TextBlockComposer;
import flex.graphics.graphicsClasses.TextGraphicElement;

[DefaultProperty("text")]

//--------------------------------------
//  Styles
//--------------------------------------

include "../styles/metadata/BasicContainerFormatTextStyles.as"
include "../styles/metadata/BasicParagraphFormatTextStyles.as"
include "../styles/metadata/BasicCharacterFormatTextStyles.as"

/**
 *  Documentation is not currently available.
