Flex 4 Updates For TLF 2.0

TLF 2.0 is not a drop-in replacement into Flex 4. To even get it running changes are needed to Flex 4.0.T wo files need to be replaced in Flex 4 and spark.swc needs to be rebuilt.  The files, FTETextField.as and CSSTextLayoutFormat.as, are available for download here.

These changes were tested with Flex 4.0 SDK build 14159. I believe the same changes will work with Flex 4.1. To rebuild Flex with these changes:
1) From http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4 download the “Open Source Flex SDK” you wish to modify.
2) replace the two files with the above modified versions.
3) run “ant -q main” in the frameworks directory
4) replace spark.swc with the one you just built.

There are other known issues. The biggest one is that TLF changed selection to permit inclusion of the final paragraph terminator in the selection from the selectAll API. This gives more consistent highlighting but caused some problems for Flex code. Fixes for this issue are not available for 4.0/4.1.

UPDATE For Flex 4.1

The changes for Flex 4.1 are to the same two files but the source files have changed in the Flex SDK.  I posted 4.1 versions here:  http://blogs.adobe.com/tlf/files/2010/08/FlexFixes41.zip

I’ve also seen the problem with building datavisualization.  I solved by copying manifest_datavisualization.xml to manifest.xml in the frameworks/projects/datavisualization directory.

55 Responses to Flex 4 Updates For TLF 2.0

  1. rob says:

    so you’re saying that tlf “2.0” isn’t in the recent 4.1 release?these tlf hacks are a pain to propagate through a large team, please make it easier. :)thanks!

  2. Richard Dermer says:

    Flex 4.1 includes the TLF 1.1 release.This is “in development” non-production code. Once various issues are resolved we will be posting each change indivdually into the sourceforge depot. The changes will have passed our automated testing but its still pre-release software.Sorry for the difficulty – these are changes necessary so that TLF can add new features.

  3. rob says:

    ah, i see. i thought this was a full release. Sorry, i get excited when I see .0 releases. 🙂

  4. harry K. says:

    Is there even a ‘hack’ to get the new floating Text (text around images) ?

  5. simple says:

    hi,I do as what you said above,but it does’t work,when i run the application with float attrubite ,it alert that it does not have the attrubite,but there is no compile error.thanks.

  6. anny says:

    when i do as the description above, (ant -q main) i got the error :

    BUILD FAILED
    D:\flex4\frameworks\build.xml:153:compc task failed.

    what’s wrong?

    • Yugandhar says:

      Hi Anny,

      Facing same problem from my side as well.

      Did you able to solve it….!!

      Thanks,
      Yugandhar.

  7. Richard Dermer says:

    See this comment: http://blogs.adobe.com/tlf/2010/07/tlf-20-lists-markup.html#comment-204

    If that’s not the problem I’ll need more information.

  8. Tim John says:

    Hi, the links to those 2 files are dead! Does anyone have an updated link? Anny, perhaps you grabbed the files using “Save link as…” as I did.

  9. myIP says:

    Richard I don’t understand these instructions.

    For step 4, I am not sure what spark.swc is to be replaced. In step 3, you instruct to run an ant build that overwrites the current spark.swc. So there is no spark.swc to be replaced since ant already did.

    Also, when I do the build using Flex 4.0 SDK build 14159 with the 2 modified files in the correct directory, I get a failed build. It fails building the datavisualization SWC. Is this expected? Is the purpose of this build is to just grab the updated spark.swc and use it in another copy of Flex SDK?

    The reason I am trying to use TLF 2.0 is to prevent InlineGraphicElements from disappearing when the content is scrolled. You mentioned (http://forums.adobe.com/message/2971076#2971076) the 2.0 fixed that bug. However if step 4 is indeed unnecessary then that bug is still alive.

    If step 4 is needed, can you please clarify? Thanks again for your time.

    • Richard Dermer says:

      I’m sorry these instructions are difficult.

      1) The idea is that the Flex SDK you are building is in a different location from the one you are using in your projects. So there are two flex sdks – one being modified and built – and one in use in your projects. The copy step is from the one being built to the one in use in your projects. Of course feel free to just point your project to the one you built and skip the copy step.

      2) I didn’t have problems with the build. Does the datavisualization swc build if you don’t make the TLF changes?

      3) I’d recommend the workaround for that bug rather than switching to the in-development TLF 2.0. There is a lot of new code here and its not production ready at this point.

    • Justin says:

      Firstly, thanks for all the effort you and your team are putting into TLF 2.0. The project we are working on we are migrating from flex 3 to 4 and the main reason is to use the new TLF. Unfortunately, a big part of the system is the use of Lists. Enter TLF 2.0!

      We’ve built TLF 2.0 into our SDK and we can get it to run however we’ve also come across the issue with content disappearing when a TextArea is scrolled.

      We followed the above steps and are running with

      – Flex SDK : 4.1.0.16076
      – TLF 2.0 : Revision 92
      – New textlayout from source
      – manifest_datavisualization renamed in manifest
      – Framework linkage : :merged into code

      Here is a really basic code sample of the issue. Do others experience the same issue?

      Any guidance would be greatly appreciated!

      Thanks,

      Justin

      test 1
      test 2
      test 3
      test 4
      test 5
      test 5
      test 6
      test 7

      • Justin says:

        My apologies, i forgot to escape the code

        <?xml version="1.0" encoding="utf-8"?>
        <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009&quot;
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
        width="500" height="200"
        xmlns:ns="library://ns.adobe.com/flashx/textLayout">
        <fx:Declarations>
        <!– Place non-visual elements (e.g., services, value objects) here –>
        </fx:Declarations>

        <s:TextArea id="testScroll"
        focusEnabled="false"
        width="450" height="100">
        <s:textFlow>
        <s:TextFlow paragraphSpaceBefore="20" >
        <ns:list paddingLeft="5" listStyleType="circle" listStylePosition="inside">
        <s:li>test 1</s:li>
        <s:li>test 2</s:li>
        <s:li>test 3</s:li>
        <s:li>test 4</s:li>
        <s:li>test 5</s:li>
        <s:li>test 5</s:li>
        <s:li>test 6</s:li>
        <s:li>test 7</s:li>
        </ns:list>
        </s:TextFlow>
        </s:textFlow>
        </s:TextArea>
        </s:WindowedApplication>

  10. landed says:

    This is all very confusing. Is there not a package SDK with this build that I can just download, I’m ok in development normally but I am confused here. My problem is that inline images are not showing, is this a known issue with TLF 1.0 ?

    • Alan Stearns says:

      You don’t need 2.0 code to show basic images. 2.0 adds the floats feature, but based on your forum post you may not even need that. I’m trying to reply to your forum thread but it’s running very slowly for me today. The issue you’re running into is the difference between HTML markup for images that uses a “src” attribute and TLF markup that uses “source.”

  11. tao says:

    sorry, i’m chinese .

    I don’t know how to compile sdk,may you tell me step by step ?

    thank you very much!!!

  12. abhishek says:

    hey frnds,
    i want to add video in tlf and want to show it,
    tell me the way in flex 4
    🙂

    • Alan Stearns says:

      The easiest way to do this is have a separate swf with the video content you want, then add an image tag to your markup with that swf as the source.

  13. Harish says:

    Hi, I am using TLF and i have seen the MyContainerController.as to create context menu, i want to know how to scroll to a particular position of the text using the singleContainerView.mxml ?
    I am using singleContainerView.mxml

  14. Tije says:

    When is TLF2.0 scheduled for a proper, stable release?

  15. Steve says:

    To anyone who is having a tough time getting this to work:

    There are a couple of other things I had to do to get things to work.
    – Copy textLayout.swc to the frameworks/libs directory.
    – Change the linkage for textLayout in the project from RSLs (default) to Merged into code.

    It’s a bummer that it has to be merged into code since it makes the SWF so big, but that’s the trade-off to get new functionality that’s not released yet.

    I’m also having trouble getting a release build of my project exported. I’m getting an error “No signed digest found in catalog.xml of the library.” for a few different other swcs. Trying to figure that out now.

  16. Bob Nolty says:

    Hi all — I downloaded SDK4.1 and am attempting to get TLF2.0 working in it. I believe I have followed all instructions successfully. The ant step created new versions of several SWC files in frameworks/libs.

    However, when I try to compile my mxml file (which works with the 4.0 release SDK), I get errors. I am using mxmlc with no command line options, and the out-of-the-box flex-config.xml, and I get the following for spark, sparkskins, framework and rpc SWCs:

    Error: No signed digest found in catalog.xml of the library, …/flexsdk/frameworks/libs/spark.swc. Compile the library with -create-digest=true and try again.

    -create-digest is not a valid parameter to compc, but compute-digest is. This is apparently in effect because when I look at catalog.xml inside spark.swc, I see an unsigned digest. Of course only adobe can sign a SWC.

    Any idea why mxmlc is insisting on a signed SWC?

    Thanks!

  17. kinetic one says:

    Hello,

    downloaded 1.1.0.16076, replaced the two files, ran the “ant -q main” in the framework folder.
    But from there the instructions are not clear.
    You say tell to replace ‘spark.swc’ , but the one that’s created by the ant command is framework.swc in the frameworks.libs folder, and no other file!
    Can you please write out some working instructions?

    Also, I’m on OSX and the terminal immediately gives me this feedback when I run the cmd:

    “Please set the environment variable ANT_OPTS to -Xmx256m”
    Any help on that is welcome.
    Thanks

  18. kinetic one says:

    Sorry ,

    I downloaded offcourse 4.1.0.16076 in stead of 1.1…..

    • Richard Dermer says:

      I can’t get it to build on mac either. Works fine on windows.

      Richard

      • Will Lin says:

        Is TLF2.0 included in Hero? If I don’t want the latest TLF2.0, can I just download the preview Hero and have it included, and have it run on both Mac and Windows?

        Will

  19. Robin Briggs says:

    TLF 2.0 is included in Hero. I’m not quite sure what you’re asking. Do you want to use Flex 4.5 with TLF 1.1? That would work if your Flex code didn’t reference TLF (doesn’t use spark components). Then you could have 4.5 halo components, and a TLF 1.1 component of your own. But if the Flex app uses spark components, then you would have to backport the spark text components to TLF 1.1, because you can’t have more than one version of TLF 1.1. That shouldn’t be too hard, but there were some new TLF 2.0 that you’d have to strip out. Lastly, if you can have a Flex 4.5 app with spark components using TLF 2.0 that loads a second application with a custom TLF component using TLF 1.1.

    • Will Lin says:

      I am interested in trying TLF 2.0, on Mac and Windows. I don’t need the latest 2.0, and, since Richard mentioned Mac isn’t working, I thought the easiest way would be to just get Burrito/Hero. Presumably later I can integrate TLF 2.0 into Flex 4.0 or 4.1 and the code that I wrote in Burrito could get ported easily (and I don’t use Hero specific things).

  20. Faisal Dilawar says:

    Hi Richard,

    I am able to use the ListItemElement & ListElement when I use Hero SDK.
    But when I use the mentioned steps I am not able to use them.
    The build.xml does not have a rule to generate a modified textlayout.swc.

    I want to use these two Items in Flex 4.0 sdk.

    Thanks Dilawar

    • Tobi Reif says:

      Try this (with the 4.1 SDK):

      $ cp projects/datavisualization/manifest_datavisualization.xml \
      > projects/datavisualization/manifest.xml

      $ ant -q main

      Replace textLayout.swc with the latest one from
      http://sourceforge.net/projects/tlf.adobe/files/ .

      Target Flash Player 10.1 .

      When using inline TLF markup, try
      TextFlow xmlns=”library://ns.adobe.com/flashx/textLayout”
      instead of
      TextFlow xmlns=”library://ns.adobe.com/flex/spark”
      .

      Tobi

  21. Waj says:

    I cannot get beyond the build stage. This is copied from command prompt in Windows 7:

    C:\Users\Waj\Adobe Flash Builder 4\SDK builds\frameworks>ant -q main
    [echo] Please set the environment variable ANT_OPTS to -Xmx256m
    [echo] Compiling frameworks/locale/en_US/spark_rb.swc

    BUILD FAILED
    C:\Users\Waj\Adobe Flash Builder 4\SDK builds\frameworks\build.xml:153: compc task failed.

    Total time: 1 minute 54 seconds

    As far as I can tell I have followed the instructions perfectly. Any advice? Thanks

    • Richard Dermer says:

      Best suggestion is to pick up the Flex hero builds which include TLF 2.0.

      • Waj says:

        Thanks, runs fine. Presumably only TLF features added before the build (October) will be available, so I’ll start with the TLF 1.1 spec and work forwards. Shame that what I really wanted was the new feature that HtmlImporter has to preserve unrecognised elements…

  22. Henry says:

    Hi,
    I’ve some issues with textAera displaying text and images within a textFlow. Inline images display is very strange when scrolling. My code is :
    editor.textFlow = TextConverter.importToFlow(markupText, TextConverter.TEXT_LAYOUT_FORMAT);

    • Richard Dermer says:

      There have been bugs fixed in this area. The pasted code doesn’t tell me much – you used the importer.

  23. Yugandhar says:

    Hi Richard,

    While building sdk using ant -q main , it getting ‘build.xml:153; compc task failed’ error.

    Any idea why it is happened.

    Thanks,
    Yugandhar.

  24. Adam says:

    I have the same issue as Yugandar, I am trying to build the 4.1 sdk with the tlf updates for a project I am working on. I get the same:

    ant -q main , it getting ‘build.xml:153; compc task failed’ error.

    Please help! I really need to use the new tlf 2.0 stuff! Maybe someone can at least share a new 4.1 spark.swc that has been compiled with the tlf 2.0 updates that I could drop in, if that is possible?

    It is really hard to find any information on tlf 2.0, let alone how to get it set up and working in the flex 4.1 sdk so I can use it.

    • Richard Dermer says:

      I haven’t experienced this error. Is it a compile error on some specific line of code or an out of memory error? Something else? I do suggest the following:

      1) The best way to get TLF 2.0 and Flex is to use the Flex 4.5 SDK from the Flex download page. It’s already all built.
      2) Try building Flex without any changes. If you still get the error then I’d suggest asking on the Flex forum.
      3) Some people have out of memory problems esp. on Mac platforms. There are many knowledgeable posts on the web describing how to increase the memory available to ant.
      4) Note that the procedure here is to build Flex 4.1 ONLY. It does not build TLF. The TLF opensource site has instructions on how to do that.

      Hope that helps.

  25. Joe says:

    <?xml version=”1.0″ encoding=”UTF-8″?>
    <xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
    <xs:annotation>
    <xs:documentation>
    The following are all of the types related to Adobe’s TLF 2.0. More (but still sketchy) details for this spec can be found at:
    http://help.adobe.com/en_US/flex/using/WS02f7d8d4857b1677-165a04e1126951a2d98-7ff6.html
    http://help.adobe.com/en_US/as3/dev/WSb2ba3b1aad8a27b0-1b8898a412218ad3df9-8000.html#WS19f279b149e7481c6944fe6612e01ed0f26-8000
    http://blogs.adobe.com/tlf/files/tlf/Lists.pdf
    http://opensource.adobe.com/wiki/display/flexsdk/FXG+2.0+Specification#FXG2.0Specification-FXGText
    </xs:documentation>
    </xs:annotation>
    <!– Specify any reusable types –>
    <xs:simpleType name=”hexColor”>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?”/>
    </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name=”listStyleTypes”>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”arabicIndic|bengali|box|check|circle|cjkEarthlyBranch|cjkEarthlyStem|decimal|decimalLeadingZero|devangari|diamond|disc|gujarati|gurmukhi|hangul|hangulConstant|hiragana|hiraganaIroha|hyphen|kannada|katakana|katakanaIroha|lowerAlpha|lowerGreek|lowerLatin|lowerRoman|none|persian|square|thai|upperAlpha|upperGreek|upperLatin|upperRoman|urdu”/>
    </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name=”paddingTypes”>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”[\d]+%?|auto|inherit”/>
    </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name=”widthOrHeight”>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”[\d]+%?|auto”/>
    </xs:restriction>
    </xs:simpleType>
    <!– Specify several simple elements –>
    <xs:element name=”a”>
    <xs:complexType mixed=”true”>
    <xs:choice minOccurs=”0″ maxOccurs=”unbounded”>
    <xs:element ref=”br” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”img” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”linkActiveFormat” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”linkHoverFormat” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”linkNormalFormat” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”span” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”tab” minOccurs=”0″ maxOccurs=”unbounded”/>
    </xs:choice>
    <xs:attribute name=”href” type=”xs:anyURI”/>
    <xs:attribute name=”target” default=”_blank”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”_self|_parent|_blank|_top”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    </xs:complexType>
    </xs:element>
    <xs:element name=”br”>
    <xs:complexType>
    <xs:complexContent>
    <xs:restriction base=”xs:anyType”/>
    </xs:complexContent>
    </xs:complexType>
    </xs:element>
    <xs:element name=”div”>
    <xs:complexType mixed=”true”>
    <xs:choice minOccurs=”0″ maxOccurs=”unbounded”>
    <xs:element ref=”a” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”br” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”div” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”img” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”linkActiveFormat” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”linkHoverFormat” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”linkNormalFormat” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”list” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”p” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”span” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”tab” minOccurs=”0″ maxOccurs=”unbounded”/>
    </xs:choice>
    </xs:complexType>
    </xs:element>
    <xs:element name=”img”>
    <xs:complexType>
    <xs:attribute name=”height” type=”widthOrHeight”/>
    <xs:attribute name=”src” type=”xs:anyURI”/>
    <xs:attribute name=”width” type=”widthOrHeight”/>
    </xs:complexType>
    </xs:element>
    <xs:element name=”li”>
    <xs:complexType mixed=”true”>
    <xs:choice minOccurs=”0″ maxOccurs=”unbounded”>
    <xs:element ref=”list” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”p” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”span” minOccurs=”0″ maxOccurs=”unbounded”/>
    </xs:choice>
    </xs:complexType>
    </xs:element>
    <xs:element name=”linkActiveFormat”>
    <xs:complexType>
    <xs:all>
    <xs:element ref=”TextLayoutFormat”/>
    </xs:all>
    </xs:complexType>
    </xs:element>
    <xs:element name=”linkHoverFormat”>
    <xs:complexType>
    <xs:all>
    <xs:element ref=”TextLayoutFormat”/>
    </xs:all>
    </xs:complexType>
    </xs:element>
    <xs:element name=”linkNormalFormat”>
    <xs:complexType>
    <xs:all>
    <xs:element ref=”TextLayoutFormat”/>
    </xs:all>
    </xs:complexType>
    </xs:element>
    <xs:element name=”list”>
    <xs:complexType>
    <xs:choice minOccurs=”1″ maxOccurs=”unbounded”>
    <xs:element ref=”li” minOccurs=”1″ maxOccurs=”unbounded”/>
    <xs:element ref=”listMarkerFormat” minOccurs=”0″ maxOccurs=”1″/>
    </xs:choice>
    <xs:attribute name=”listStylePosition”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”inside|outside”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    <xs:attribute name=”listStyleType” type=”listStyleTypes”>
    </xs:attribute>
    <xs:attribute name=”paddingLeft” type=”paddingTypes”/>
    <xs:attribute name=”paddingRight” type=”paddingTypes”/>
    <xs:attribute name=”tabStops”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”([SsEeCcDd][\d]+)( [SsEeCcDd][\d]+)*”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    </xs:complexType>
    </xs:element>
    <xs:element name=”listMarkerFormat”>
    <xs:complexType>
    <xs:all>
    <xs:element ref=”ListMarkerFormat”/>
    </xs:all>
    </xs:complexType>
    </xs:element>
    <xs:element name=”ListMarkerFormat”>
    <xs:complexType>
    <xs:attribute name=”afterContent” type=”xs:string”/>
    <xs:attribute name=”beforeContent” type=”xs:string”/>
    <xs:attribute name=”content” type=”xs:string”/>
    <xs:attribute name=”color” type=”hexColor”/>
    <xs:attribute name=”counterIncrement”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”ordered [\+-]?[\d]+”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    <xs:attribute name=”counterReset”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”ordered [\+-]?[\d]+”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    <xs:attribute name=”fontSize” type=”xs:unsignedShort”/>
    <xs:attribute name=”paragraphEndIndent” type=”xs:unsignedShort”/>
    <xs:attribute name=”suffix”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”auto|none”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    </xs:complexType>
    </xs:element>
    <xs:element name=”p”>
    <xs:complexType mixed=”true”>
    <xs:choice minOccurs=”0″ maxOccurs=”unbounded”>
    <xs:element ref=”a” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”br” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”img” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”linkActiveFormat” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”linkHoverFormat” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”linkNormalFormat” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”span” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”tab” minOccurs=”0″ maxOccurs=”unbounded”/>
    </xs:choice>
    <xs:attribute name=”fontFamily” type=”xs:string”/>
    <xs:attribute name=”fontSize” type=”xs:unsignedShort”/>
    <xs:attribute name=”textAlign” default=”left”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”center|end|justify|left|right|start”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    <!– many more possible attributes: ??? – Can’t find enough detail–>
    </xs:complexType>
    </xs:element>
    <xs:element name=”span”>
    <xs:complexType mixed=”true”>
    <xs:choice minOccurs=”0″ maxOccurs=”unbounded”>
    <xs:element ref=”br” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”tab” minOccurs=”0″ maxOccurs=”unbounded”/>
    </xs:choice>
    <xs:attribute name=”baselineShift” default=”0″>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”[\+-]?[\d]+|superscript|subscript”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    <xs:attribute name=”color” type=”hexColor”/>
    <xs:attribute name=”fontSize” type=”xs:unsignedShort”/>
    <xs:attribute name=”fontStyle”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”bold|boldItalic|italic|regular”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    <xs:attribute name=”fontWeight”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”bold|normal”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    <xs:attribute name=”lineThrough” type=”xs:boolean”/>
    <xs:attribute name=”textDecoration”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”underline|none”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    </xs:complexType>
    </xs:element>
    <xs:element name=”tab”>
    <xs:complexType>
    <xs:complexContent>
    <xs:restriction base=”xs:anyType”/>
    </xs:complexContent>
    </xs:complexType>
    </xs:element>
    <xs:element name=”TextFlow”>
    <xs:complexType mixed=”true”>
    <xs:choice minOccurs=”0″ maxOccurs=”unbounded”>
    <xs:element ref=”a” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”br” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”div” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”img” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”list” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”p” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”span” minOccurs=”0″ maxOccurs=”unbounded”/>
    <xs:element ref=”tab” minOccurs=”0″ maxOccurs=”unbounded”/>
    </xs:choice>
    <xs:attribute name=”fontFamily” type=”xs:string”/>
    <xs:attribute name=”fontSize” type=”xs:unsignedShort”/>
    <xs:attribute name=”listAutoPadding” type=”xs:unsignedShort”/>
    <xs:attribute name=”paddingTop” type=”paddingTypes”/>
    <xs:attribute name=”paddingLeft” type=”paddingTypes”/>
    <xs:attribute name=”textIndent” type=”xs:unsignedShort”/>
    <xs:attribute name=”whiteSpaceCollapse”>
    <xs:simpleType>
    <xs:restriction base=”xs:string”>
    <xs:pattern value=”collapse|preserve”/>
    </xs:restriction>
    </xs:simpleType>
    </xs:attribute>
    <xs:attribute name=”version” type=”xs:string”/>
    <!– Auto-generated stuff also lists xmlns=”http://ns.adobe.com/textLayout/2008″ as an attribute, but this breaks validation. We filter it out before we validate. –>
    </xs:complexType>
    </xs:element>
    <xs:element name=”TextLayoutFormat”>
    <xs:complexType>
    <xs:attribute name=”color” type=”hexColor”/>
    <!– many more possible attributes: see http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flashx/textLayout/formats/TextLayoutFormat.html –>
    </xs:complexType>
    </xs:element>
    </xs:schema>

  26. Bogdan says:

    Can anyone tell me how to integrate the new TLF 3.0 into the flex 4.5.1 sdk?
    Any information will be appreciated.

    Thanks.

  27. Madhusudan says:

    we also can not get the drag & drop property on TLF for images.. is there any way to resolve the probelm?

  28. FlexMad says:

    We are facing some problem with TLF framework. We need to add component(any UI component) in selected textflow. But we cant do that. We need any UI element (just like inlinegraphicElement for images) for UI components. Please reply ASAP.