{ "type": "class",
  "qname": "mx.core.UITextFormat",
  "baseClassname": "flash.text.TextFormat"
  ,
    "description": "The UITextFormat class represents character formatting information for the UITextField class. The UITextField class defines the component used by many Flex composite components to display text.  <p>The UITextFormat class extends the flash.text.TextFormat class to add the text measurement methods <code>measureText()</code> and <code>measureHTMLText()</code> and to add properties for controlling the advanced anti-aliasing of fonts.</p>",
  "tags": [
  {  "tagName": "see",
         "values": ["mx.core.UITextField"]},
      {  "tagName": "playerversion",
         "values": ["Flash 9", "AIR 1.1"]},
      {  "tagName": "productversion",
         "values": ["Flex 3"]},
      {  "tagName": "langversion",
         "values": ["3.0"]},
      {  "tagName": "royalesuppresspublicvarwarning",
         "values": []}  ],
  "members": [
  { "type": "method",
        "qname": "mx.core.UITextFormat",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor.  The SystemManager keeps track of which fonts are embedded. Typically this is the SystemManager obtained from the <code>systemManager</code> property of UIComponent.  or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  such as 0xFF0000 for red, or <code>null</code> to indicate that is UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  hyperlinked, or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  where the hyperlinked URL is displayed. If the target window is <code>null</code> or an empty string, the hyperlinked page is displayed in the same browser window. If the <code>urlString</code> parameter is <code>null</code> or an empty string, this property has no effect. This parameter is optional, with a default value of <code>null</code>.  as a flash.text.TextFormatAlign value, or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  in pixels, or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  in pixels, or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  margin to the first character in the paragraph, in pixels, or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.  space between lines, or <code>null</code> to indicate that this UITextFormat doesn't specify this property. This parameter is optional, with a default value of <code>null</code>.",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.text.TextFormatAlign"]},
            {  "tagName": "param",
               "values": ["systemManager A SystemManager object.", "font A String specifying the name of a font,", "size A Number specifying a font size in pixels,", "color An unsigned integer specifying the RGB color of the text,", "bold A Boolean flag specifying whether the text is bold,", "italic A Boolean flag specifying whether the text is italic,", "italic A Boolean flag specifying whether the text is underlined,", "urlString A String specifying the URL to which the text is", "target A String specifying the target window", "align A String specifying the alignment of the paragraph,", "leftMargin A Number specifying the left margin of the paragraph,", "rightMargin A Number specifying the right margin of the paragraph,", "indent A Number specifying the indentation from the left", "leading A Number specifying the amount of additional vertical"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": [{ "name": "systemManager", "type": "mx.managers.ISystemManager"},
        { "name": "font", "type": "String"},
        { "name": "size", "type": "Object"},
        { "name": "color", "type": "Object"},
        { "name": "bold", "type": "Object"},
        { "name": "italic", "type": "Object"},
        { "name": "underline", "type": "Object"},
        { "name": "align", "type": "String"},
        { "name": "leftMargin", "type": "Object"},
        { "name": "rightMargin", "type": "Object"}]}
      ,
      { "type": "field",
        "qname": "antiAliasType",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Defines the anti-aliasing setting for the UITextField class. The possible values are <code>&quot;normal&quot;</code> (<code>flash.text.AntiAliasType.NORMAL</code>) and <code>&quot;advanced&quot;</code> (<code>flash.text.AntiAliasType.ADVANCED</code>).  <p>The default value is <code>&quot;advanced&quot;</code>, which enables advanced anti-aliasing for the embedded font. Set this property to <code>&quot;normal&quot;</code> to disable the advanced anti-aliasing.</p>  <p>This property has no effect for system fonts.</p>  <p>This property applies to all the text in a UITextField object; you cannot apply it to some characters and not others.</p>",
        "tags": [
        {  "tagName": "default",
               "values": [""advanced""]},
            {  "tagName": "see",
               "values": ["flash.text.AntiAliasType"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "direction",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The directionality of the text.  <p>The allowed values are <code>&quot;ltr&quot;</code> for left-to-right text, as in Latin-style scripts, and <code>&quot;rtl&quot;</code> for right-to-left text, as in Arabic and Hebrew.</p>  <p>FTE and TLF use this value in their bidirectional text layout algorithm, which maps Unicode character order to glyph order.</p>  <p>Note: This style only applies when this UITextFormat is used with a UIFTETextField rather than a UITextField.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["null"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "gridFitType",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Defines the grid-fitting setting for the UITextField class. The possible values are <code>&quot;none&quot;</code> (<code>flash.text.GridFitType.NONE</code>), <code>&quot;pixel&quot;</code> (<code>flash.text.GridFitType.PIXEL</code>), and <code>&quot;subpixel&quot;</code> (<code>flash.text.GridFitType.SUBPIXEL</code>).  <p>This property only applies when you are using an embedded font and the <code>fontAntiAliasType</code> property is set to <code>&quot;advanced&quot;</code>.</p>  <p>This property has no effect for system fonts.</p>  <p>This property applies to all the text in a UITextField object; you cannot apply it to some characters and not others.</p>",
        "tags": [
        {  "tagName": "default",
               "values": [""pixel""]},
            {  "tagName": "see",
               "values": ["flash.text.GridFitType"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "locale",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The locale of the text.  <p>FTE and TLF use this locale to map Unicode characters to font glyphs and to find fallback fonts.</p>  <p>Note: This style only applies when this UITextFormat is used with a UIFTETextField rather than a UITextField.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["null"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "sharpness",
        "return": "Number",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Defines the sharpness setting for the UITextField class. This property specifies the sharpness of the glyph edges. The possible values are Numbers from -400 through 400.  <p>This property only applies when you are using an embedded font and the <code>fontAntiAliasType</code> property is set to <code>&quot;advanced&quot;</code>.</p>  <p>This property has no effect for system fonts.</p>  <p>This property applies to all the text in a UITextField object; you cannot apply it to some characters and not others.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["0"]},
            {  "tagName": "see",
               "values": ["flash.text.TextField"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "thickness",
        "return": "Number",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Defines the thickness setting for the UITextField class. This property specifies the thickness of the glyph edges. The possible values are Numbers from -200 to 200.  <p>This property only applies when you are using an embedded font and the <code>fontAntiAliasType</code> property is set to <code>&quot;advanced&quot;</code>.</p>  <p>This property has no effect for system fonts.</p>  <p>This property applies to all the text in a UITextField object; you cannot apply it to some characters and not others.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["0"]},
            {  "tagName": "see",
               "values": ["flash.text.TextField"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "useFTE",
        "return": "Boolean",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Determines how the <code>measureText()</code> and <code>measureHTMLText()</code> methods do text measurement.  <p>If <code>true</code>, they use an offscreen instance of the FTETextField class in the Text Layout Framework. If <code>false</code>, they use an offscreen instance of the TextField class in the Flash Player.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["false"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "measureText",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Returns measurement information for the specified text, assuming that it is displayed in a single-line UITextField component, and using this UITextFormat object to define the text format.   the measured width and height to the nearest integer. Rounding up is appropriate in most circumstances.",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.text.TextLineMetrics"]},
            {  "tagName": "param",
               "values": ["text A String specifying the text to measure.", "roundUp A Boolean flag specifying whether to round up the"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["A TextLineMetrics object containing the text measurements."]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "org.apache.royale.core.TextLineMetrics",
          "params": [{ "name": "text", "type": "String"},
        { "name": "roundUp", "type": "Boolean"}]}
      ,
      { "type": "method",
        "qname": "measureHTMLText",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Returns measurement information for the specified HTML text, which may contain HTML tags such as <code>&lt;font&gt;</code> and <code>&lt;b&gt;</code>, assuming that it is displayed in a single-line UITextField, and using this UITextFormat object to define the text format.   the measured width and height to the nearest integer. Rounding up is appropriate in most circumstances.",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.text.TextLineMetrics"]},
            {  "tagName": "param",
               "values": ["text A String specifying the HTML text to measure.", "roundUp A Boolean flag specifying whether to round up the"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "return",
               "values": ["A TextLineMetrics object containing the text measurements."]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "org.apache.royale.core.TextLineMetrics",
          "params": [{ "name": "htmlText", "type": "String"},
        { "name": "roundUp", "type": "Boolean"}]}
      ]
  }
