 	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 fontDescription:FontDescription = new FontDescription();
+		fontDescription.cffHinting = getStyle("cffHinting");
+		fontDescription.fontLookup = getStyle("fontLookup");
+		fontDescription.fontName = getStyle("fontFamily");
+		fontDescription.fontPosture = getStyle("fontStyle");
+		fontDescription.fontWeight = getStyle("fontWeight");
+		fontDescription.renderingMode = getStyle("renderingMode");
 		
 		var elementFormat:ElementFormat = new ElementFormat();
-		elementFormat.alpha = textAlpha;
-        elementFormat.color = color;
+		elementFormat.alignmentBaseline = getStyle("alignmentBaseline");
+		elementFormat.alpha = getStyle("textAlpha");
+        elementFormat.baselineShift = getStyle("baselineShift");
+        elementFormat.color = getStyle("color");
+        elementFormat.digitCase = getStyle("digitCase");
+        elementFormat.digitWidth = getStyle("digitWidth");
+        elementFormat.dominantBaseline = getStyle("dominantBaseline");
 		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));
+		elementFormat.fontSize = getStyle("fontSize");
+        setKerning(elementFormat);
+		elementFormat.ligatureLevel = getStyle("ligatureLevel");
+		elementFormat.locale = getStyle("locale");
+		elementFormat.textRotation = getStyle("textRotation");
+        setTracking(elementFormat);
+		elementFormat.typographicCase = getStyle("typographicCase");
+        
+		textBlockComposer.removeTextLines(
+            DisplayObjectContainer(displayObject));
 		
 		var bounds:Rectangle = textBlockComposer.requestedBounds;
 		bounds.x = 0;


	//--------------------------------------------------------------------------
	//
	//  Constructor
	//
	//--------------------------------------------------------------------------

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.
