Rotated ASCII characters overlap in Text Layout Framework with specific Japanese/Chinese fonts

I am trying to layout rotated text with Text Layout Framework. Mostly okay, but when it comes to specific Japanese/Chinese fonts, problem happens - "hankaku" alphanumeric characters(in other words, ASCII characters) overlap in those fonts. (Full-width "zenkaku" characters have no problem, though)
When "HG丸ゴシックM-PRO" or "HG正楷書体-PRO" are specified as fontFamily(both come with Office - common fonts in Japanese Windows environment), characters are wholly overlapped.
When "SimSun", "NSimSun" or "SimHei" are specified as fontFamily(Chinese fonts, all come with Japanese Windows XP), characters are slightly overlapped.
If anyone knows a solution or a workaround to this, please let me know.
Sample code:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initapp();">
    <mx:Script>
        <![CDATA[
            import flashx.textLayout.container.ContainerController;
            import flashx.textLayout.elements.ParagraphElement;
            import flashx.textLayout.elements.SpanElement;
            import flashx.textLayout.elements.TextFlow;
            import flash.text.engine.TextRotation;
            import mx.core.UIComponent;
            private function initapp():void
                var container:UIComponent           = new UIComponent();
                var textflow:TextFlow               = new TextFlow();
                var controller:ContainerController  = new ContainerController(container);
                var paragraph:ParagraphElement      = new ParagraphElement();
                var span:SpanElement                = new SpanElement();
                textflow.fontFamily          = "HG丸ゴシックM-PRO";
                textflow.textRotation        = TextRotation.ROTATE_270;
                textflow.fontSize            = 72;
                textflow.color               = 0;
                span.text                    = "abcdefg";
                controller.setCompositionSize(this.unscaledWidth, this.unscaledHeight);
                paragraph.addChild(span);
                textflow.addChild(paragraph);
                textflow.flowComposer.addController(controller);
                textflow.flowComposer.updateAllControllers();
                this.addChild(container);
        ]]>
    </mx:Script>
</mx:WindowedApplication>
Warm regards,
Yuushima

malachite00 wrote:
> Thanks David. So is there any way around having to embed
the font when
> rotating text?
Not that I know of. Your problem is that you're loading the
content
dynamically, so you have no idea what it will contain.
There's normally
no need to embed Japanese fonts for a Japanese audience,
because they
already have the main fonts, such as Mincho, Gothic, or Osaka
on their
machine. Perhaps you'll just have to give up the idea of
rotation.
David Powers
Adobe Community Expert
Author, "Foundation PHP for Dreamweaver 8" (friends of ED)
http://foundationphp.com/

Similar Messages

  • Can I use Text Layout Framework with Flex 3 SDK?

    Greetings,
    I have to develop a complex custom widget, with custom text wrapping behaviour. Text Layout framework seem to offer fine level of control, but we are trying to keep our project in Flash player 9, and therefore we are using Flex 3 sdk.
    Can I use the framework with flex sdk 3 and therefore flash player 9?
    Best Regards
    Seref

    For that you need to install flex sdk 3.5 framework and choose your defauls framework to flex 3.5 it will work and as well instal flash player 10

  • Text Layout Framework Bold & Italic don't work on Linux

    Hi,
    The bold and Italic in Text Layout Framework is not working on Linux with Flash Player 10.1.85.3. Please verify at this link http://labs.adobe.com/technologies/textlayout/demos/ on Linux, by trying to do bold & italic to some text.
    is this a problem with Flash Player 10 ?
    Any help is appreciated.
    Thanks,
    Avi

    Thanks Richard,
    The Bold/Italic variant of the font should be present on the client's machine. Now I am finding solution to how to display the fonts which Bold/Italic variant are not present on the client's machine. One way can be embedding the fonts. Anythings else?
    Avi

  • [svn] 4634: First part of glue code for allowing Halo components to use the new Text Layout Framework , in order to get functionality such as bidirectional text.

    Revision: 4634
    Author:   [email protected]
    Date:     2009-01-22 17:38:56 -0800 (Thu, 22 Jan 2009)
    Log Message:
    First part of glue code for allowing Halo components to use the new Text Layout Framework, in order to get functionality such as bidirectional text.
    Background:
    TLF is making this possible by implementing a TLFTextField class. It is a Sprite that uses TLF to implement the same properties and methods as the legacy TextField class in the Player. Thanks to the createInFontContext() bottleneck method in UIComponent, it can be used by a properly-written Halo component (such as those in Flex 3) without any modifications to the component.
    Note: Text should render similarly -- but is unlikely to render identically -- when a component uses TLFTextField vs. TextField. The width and height may be different, affecting layout; text could wrap differently; etc. This is a fact-of-life based on the fact that TLF/FTE and TextField are completely different text engines.
    Whether a Halo component uses TLF or not to render text will be determined in Flex 4 by a new style, textFieldClass. (Gumbo components always use TLF.)
    TLFTextField is currently only partially implemented. It does not yet support scrolling, selection, editing, multiple formats, or htmlText. Therefore it can only be used for simple display text, such as a Button label.
    Details:
    The TextStyles.as bucket 'o text styles now includes a non-inheriting textFieldClass style. It can be set to either mx.core.UITextField or mx.core.UITLFTextField. These are the Flex framework's wrapper classes around the lower-level classes flash.text.TextField (in the Player) and its TLF-based workalike, flashx.textLayout.controls.TLFTextField.
    The global selector in defaults.css currently sets it to mx.core.UITextField using a ClassReference directive. For the time being, all Halo components will continue to use the "real" TextField.
    The new UITLFTextField is a copy of UITextField, except that it extends TLFTextField instead of TextField. This class has been added to FrameworkClasses.as because no classes in framework.swc have a dependency on it. It will get soft-linked into applcations via the textFieldClass style.
    The TLFTextField class currently lives in a fourth TLF SWC, textLayout_textField.swc. This SWC has been added to various build scripts. The external-library-path for building framework.swc now includes all four TLF SWCs, because UITLFTextField can't be compiled and linked without them. However, since they are external they aren't linked into framework.swc.
    Properly-written Halo UIComponents access their text fields only through the IUITextField interface, and they create text fields like this:
    textField = IUITextField(createInFontContext(UITextField));
    (The reason for using createInFontContext() is to support embedded fonts that are embedded in a different SWF.)
    The createInFontContext() method of UIComponent has been modified to use the textFieldClass style to determine whether to create a UITextField or a UITLFTextField.
    With these changes, you can now write code like
    to get two Buttons, the first of which uses UITextField (because this is the value of textFieldClass in the global selector) and the second of which uses UITLFTextField. They look very similar, which is good!
    Currently, both Buttons are being measured by using an offscreen TextField. A subsequent checkin will make components rendering using UITLFTextField measure themselves using an offscreen TLFTextField so that measurement and rendering are consistent.
    QE Notes: None
    Doc Notes: None
    Bugs: None
    Reviewer: Deepa
    Modified Paths:
        flex/sdk/trunk/asdoc/build.xml
        flex/sdk/trunk/build.xml
        flex/sdk/trunk/frameworks/projects/framework/build.xml
        flex/sdk/trunk/frameworks/projects/framework/defaults.css
        flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/TextStyles.as
    Added Paths:
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITLFTextField.as

    Many of your points are totally legitimate.
    This one, however, is not:
    …To put it another way, the design of the site seems to be geared much more towards its regular users than those the site is supposedly trying to "help"…
    The design and management of the forums for more than five years have driven literally dozens of the most valuable contributors and "regulars" away from the forums—permanently.
    The only conclusion a prudent, reasonable person can draw from this state of affairs is that Adobe consciously and deliberately want to kill these forums by attrition—without a the PR hit they would otherwise take if they suddenly just shut them down.

  • InDesign export Text Layout Framework Markup

    hi there
    as described in title, i'm having troubles exporting an InDesign comp in a decent way
    my quesitons are:
    1 - It exists a DTD for Text Layout Framework Markup Language ?
    2 - Is there an export module that make me able to do it automatically? because tagging all the elements is a pain, and there is just a little documentation about the markup language
    If not, are there any plans to do it?
    I personally think that an export module will be very helpful and will score another goal on products' integration
    Thanx for your time

    Regarding a DTD see this post http://forums.adobe.com/message/2221283#2221283
    I can't comment on any plans for ID to export TLF markup.  Definitely a good idea.
    Thanks,
    Richard

  • Text Layout Framework columncount Undo problem

    Text Layout Framework columncount Undo problem ::
        The number of times columncount is changed it gets applied to textflow
    and those number of operation is stored in undoStack(UndoManger).But when i
    undo it, it comes back to intial state, without undoin step by step.
    I have given my source code..
    Y so or any other alternative to achieve this..
    Thanx in advance..  
    <?xml version="1.0" encoding="utf-8"?>
    <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init()">
        <fx:Script>
            <![CDATA[
                import flashx.textLayout.container.ContainerController;
                import flashx.textLayout.conversion.ITextImporter;
                import flashx.textLayout.conversion.TextConverter;
                import flashx.textLayout.edit.EditManager;
                import flashx.textLayout.edit.IEditManager;
                import flashx.textLayout.edit.ISelectionManager;
                import flashx.textLayout.edit.SelectionState;
                import flashx.textLayout.elements.InlineGraphicElement;
                import flashx.textLayout.elements.ParagraphElement;
                import flashx.textLayout.elements.TextFlow;
                import flashx.textLayout.events.SelectionEvent;
                import flashx.textLayout.events.StatusChangeEvent;
                import flashx.textLayout.formats.Direction;
                import flashx.textLayout.formats.TextLayoutFormat;
                import flashx.undo.UndoManager;
                import mx.collections.ArrayCollection;
                import mx.controls.Alert;
                import mx.controls.CheckBox;
                import mx.events.FlexEvent;
                import mx.events.SliderEvent;
                import spark.components.Group;
                import spark.components.TextArea;
                import spark.core.SpriteVisualElement;
                public var directions:ArrayCollection = new
    ArrayCollection(
                        {label:"Left-to-Right",
    data:Direction.LTR},
                        {label:"Right-to-Left",
    data:Direction.RTL}
                private var _textContainer:SpriteVisualElement = null;
                private static const textInput:XML = <TextFlow
    xmlns="http://ns.adobe.com/textLayout/2008">
                    <div>
                        <p><span>The Text Layout Framework is
    an extensible library, built on the new text engine in Adobe Flash Player 10,
    which delivers advanced, easy-to-integrate typographic and text layout features
    for rich, sophisticated and innovative typography on the web.
                    Some benefits provided by this framework
    include: 1) rich typographical controls, including kerning, ligatures,
    typographic case, digit case, digit width and discretionary hyphens
                    2) cut, copy, paste, undo and standard keyboard
    and mouse gestures for editing 3) selection, editing and flowing text across
    multiple columns and linked containers
                    4) bidirectional text, vertical text and over
    30 writing scripts including Arabic, Hebrew, Chinese, Japanese, Korean, Thai,
    Lao, Vietnamese, and others
                    5) vertical text, Tate-Chu-Yoko (horizontal
    within vertical text) and justifier for East Asian typography. Try editing this
    text and playing with the options below! Notice an inline image is also
    included.</span></p>
                    </div>
                    </TextFlow>;
                private var _textFlow:TextFlow;
                private function init():void {
                    _textContainer = new SpriteVisualElement();
                    canvas.addElement(_textContainer);
                    var importer:ITextImporter =
    TextConverter.getImporter(TextConverter.TEXT_LAYOUT_FORMAT);
                    _textFlow = importer.importToFlow(textInput);
                    _textFlow.flowComposer.addController(new
    ContainerController(_textContainer, canvas.width-40, canvas.height));
                    _textFlow.interactionManager = new
    EditManager(new UndoManager());
                    _textFlow.flowComposer.updateAllControllers();
                private function changeNoColumns(event:Event):void {
                    var tlf:TextLayoutFormat = new
    TextLayoutFormat();
                    tlf.columnCount = cols.value;
                    tlf.columnGap = 15;
                    tlf.direction = direction.selectedItem.data;
                    var em:EditManager =
    _textFlow.interactionManager as EditManager;
                    em.selectAll();
                    (_textFlow.interactionManager as
    EditManager).applyFormat(tlf,tlf,tlf);
                    _textFlow.flowComposer.updateAllControllers();
                protected function
    undo_clickHandler(event:MouseEvent):void
                    var em:EditManager =
    _textFlow.interactionManager as EditManager;
                    trace("Can undo " + em.undoManager.canUndo() +
    " can redo " + em.undoManager.canRedo());
                    em.undo();
                protected function
    redo_clickHandler(event:MouseEvent):void
                    var em:EditManager =
    _textFlow.interactionManager as EditManager;
                    trace("Can undo " + em.undoManager.canUndo() +
    " can redo " + em.undoManager.canRedo());
                    em.redo();
            ]]>
        </fx:Script>
        <s:Panel title="Text Layout Framework Sample" width="100%"
    height="100%">
            <s:layout>
                <s:VerticalLayout paddingTop="8" paddingLeft="8"/>
            </s:layout>
            <s:VGroup>
                <s:Group id="canvas" width="600" height="200" />
                <s:HGroup width="100%" verticalAlign="middle">
                    <s:Label text="# Columns:"/>
                    <s:NumericStepper id="cols"  minimum="1"
    maximum="20" snapInterval="1" change="changeNoColumns(event)" />
                    <s:Label text="Text Direction:"/>
                    <s:DropDownList id="direction"
    change="changeTextDirection(event)" dataProvider="{directions}"
    selectedItem="{directions[0]}"/>
                    <s:Button label="Undo"
    click="undo_clickHandler(event)"/>
                    <s:Button label="Redo"
    click="redo_clickHandler(event)"/>
                </s:HGroup>
            </s:VGroup>
        </s:Panel>
    </s:WindowedApplication>

    It cannot be reproduced with TLF 3.0 + SDK 4.5.

  • How to create a table using Text Layout Framework?

    How to create a table using Text Layout Framework? I meen real tables - like in HTML.

    Cell as indipendant TLF should work, I have created my table using same approach and works fine for me ... this is where it is
    http://apps.live-documents.com/docs/openWebDoc.do?docId=1480607
    Regards
    Raf

  • Problem in running Text Layout Framework online demo

    Hi
             I am running textlayout_example but while compile itself showing error
    1.1061: Call to a possibly undefined method selectRange through a reference with static type flashx.textLayout.edit:ISelectionManager
    2.1120: Access of undefined property TextConverter.
    3.Could not resolve <s:Application> to a component implementation
    4.1119: Access of possibly undefined property INLINE_GRAPHIC_STATUS_CHANGE through a reference with static type Class.
    Am using flexbuilder 3 with flexsdk4.0 and flashplayer 10.0.32. I dono what was d problem... Could anyone know about to fix.

    From a distance it sounds like there is more than one version of the textLayout swc in your compile path.  Looks like you have the spark components so there is one version included with the Flex SDK.
    Either that or your examples are out of date with respect to the textLayout swc you have.  The releasenotes have details on the API changes.
    The most recent examples are available here:
    http://opensource.adobe.com/wiki/display/tlf/Text+Layout+Framework
    Hope that helps,
    Richard

  • Unable to apply embedded font swf to text in text layout framework

    Hello,
    We have created a swf for a given font (for e.g., Calibri.swf) which contains all the styles (Regular, Italic, Bold, BoldItalic).
    We have created a xml which lists the name of the font and the corresponding swf file path. The names from the xml are loaded into a combo box in the application.
    When we try to apply the selected font to a text in the text layout framework, it does not apply the same. It sets the font to default "Times" font.
    Following is a snippet of code to apply the font to the text:
    private function selectFont(fontXML:XML):void {               
                    var path:String = fontXML.@source;
                    var myEvent:IEventDispatcher = styleManager.loadStyleDeclarations(FlexGlobals.topLevelApplication.url.substring(0,FlexGl obals.topLevelApplication.url.lastIndexOf("/"))+"/"+path);
                    myEvent.addEventListener(StyleEvent.COMPLETE, function(event:StyleEvent):void{
                        var editManager:EditManager = textFlow.interactionManager as EditManager;
                        var itextLayout:TextLayoutFormat = new TextLayoutFormat();
                        itextLayout.fontSize = 20;
                        var fontName:String = fontXML.@name;
                        Alert.show(fontName);
                        itextLayout.fontFamily = fontName;   
                        Alert.show( "itext = " + itextLayout.fontFamily);
                        editManager.applyFormat(itextLayout,itextLayout,itextLayout);
                        var flowLeafElement:FlowElement = textFlow.findLeaf(editManager.anchorPosition) as FlowElement;
                        editManager.changeStyleName(fontName,flowLeafElement);
    Can anyone please let us know what is missing in the implementation?
    Thanks in advance.
    Vikram

    My recommendation: unless you really care about ISWFContext implementations and the application domain issues, ignore Alex's post about embedded fonts.
    It is a nice discussion about the inner workings of the domain and security of how this works but it is imho broken and is an insane concept to require an ISWFContext to just use an embedded font. It also breaks runtime CSS loading that has fonts embedded in it because the Flex compiler (last I checked) was also busted – it doesn't include the function necessary to create within context the font embed so that it may be applied. You can't create an ISWFContext with a compiled CSS file.
    These issues were introduced in the last Flex SDK beta before FB4 was released in final form. There are multiple bugs logged against the issue of applying loaded font files to TLF text (in short, SWFContext is broken and you have to override GlobalSettings.resolveFontLookupFunction to return embedded or null, all the time).
    Here's some more details to get you started - with links to at least one of the SDK bugs that were filed:
    http://forums.adobe.com/message/2656152
    For example:
    import flashx.textLayout.elements.GlobalSettings;
    import flash.text.engine.FontLookup;
    GlobalSettings.resolveFontLookupFunction = function makeValid():String { return FontLookup.EMBEDDED_CFF };
    And you may need to do this after your font is loaded:
    yourTextBlock.textFlow.invalidateAllFormats();
    Disclaimer: I haven't seen the latest Flex SDK release to see if this was fixed. I have an AIR application with native process that builds embedded font SWF files for use and stub code for FB4 usage but haven't updated to the latest SDK yet to see if it's working properly.
    Anyhow, your best bet is to look at the Flash Builder forums. I think this is/was a Flex team issue, not TLF.

  • Errors in implementing Text Layout Framework text flow- selection event not found

    please help me i have implemented the same project givan at adobe open source code site.
    This is my code
    <?xml version="1.0" encoding="utf-8"?>
    <!--
    ADOBE SYSTEMS INCORPORATED
    Copyright 2008 Adobe Systems Incorporated
    All Rights Reserved.
    NOTICE:  Adobe permits you to use, modify, and distribute this file
    in accordance with the terms of the Adobe license agreement
    accompanying it.  If you have received this file from a source
    other than Adobe, then your use, modification, or distribution
    of it requires the prior written permission of Adobe.
    -->
    <!-- Demonstrate some example controls.  This example does not attempt to create a control for every property in the TextLayoutFramework -->
    <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" label="Text Editor Example" initialize="init()" backgroundColor="#FFFFFF" horizontalScrollPolicy="off" verticalScrollPolicy="off">
    <mx:Script>
    <![CDATA[
    import flashx.textLayout.container.ContainerController;
    import flashx.textLayout.conversion.TextConverter;
    import flashx.textLayout.edit.EditManager;
    import flashx.textLayout.edit.IEditManager;
    import flashx.textLayout.edit.ElementRange;
    import flashx.textLayout.edit.SelectionState;
    import flashx.textLayout.elements.Configuration;
    import flashx.textLayout.elements.TextFlow;
    import flashx.textLayout.events.StatusChangeEvent;
    import flashx.textLayout.events.SelectionEvent;
    import flashx.textLayout.formats.ITextLayoutFormat;
    import flashx.textLayout.formats.TextLayoutFormat;
    import flashx.textLayout.formats.TextAlign;
    import flashx.textLayout.formats.VerticalAlign;
    import flashx.textLayout.formats.BlockProgression;
    import flashx.textLayout.formats.Direction;
    import flashx.textLayout.tlf_internal;
    import flashx.undo.UndoManager;
    import flash.display.Sprite;
    import flash.system.Capabilities;
    // the textFlow being worked on
    private var _textFlow:TextFlow = null;
    // container to hold the text
    private var _container:Sprite = null;
    // data providers for enumerated list boxes
    static private const textAlignData:Array = [
    { label:"Justify", data:TextAlign.JUSTIFY},
    { label:"Left", data:TextAlign.LEFT},
    { label:"Right", data:TextAlign.RIGHT},
    { label:"Center", data:TextAlign.CENTER},
    { label:"End", data:TextAlign.END},
    { label:"Start", data:TextAlign.START}
    static private const verticalAlignData:Array = [
    { label:"Bottom", data:VerticalAlign.BOTTOM },
    { label:"Justify", data:VerticalAlign.JUSTIFY },
    { label:"Middle", data:VerticalAlign.MIDDLE },
    { label:"Top", data:VerticalAlign.TOP }
    static private const blockProgressionData:Array = [
    { label:"TopToBottom", data:BlockProgression.TB },
    { label:"RightToleft", data:BlockProgression.RL }
    static private const directionData:Array = [
    { label:"LeftToRight", data:Direction.LTR },
    { label:"RightToleft", data:Direction.RTL }
    * initialization
    private function init():void
    // create a sprite to hold the TextLines
    _container = new Sprite();
    textArea.rawChildren.addChild(_container);
    fontFamily.dataProvider = populateFontFamily();
    versionInfo.text = "Vellum: " + flashx.textLayout.BuildInfo.kBuildNumber + (Configuration.tlf_internal::debugCodeEnabled ? " Debug" : " Release")
    + ", Flex: " + mx_internal::VERSION
    + ", Player: " + Capabilities.version;
    * Create an array of available font families
    static private function populateFontFamily():Array
    // really this returns an array of fonts - would be nice to strip it down to just the families
    var fonts:Array = Font.enumerateFonts(true);
    var fontfamily:Array = new Array();
    fonts.sortOn("fontName", Array.CASEINSENSITIVE);
    for(var i:int = 0; i< fonts.length; i++)
    // trace(fonts[i].fontName);
    fontfamily.push({label: fonts[i].fontName, data: fonts[i].fontName});
    return fontfamily;
    /** called to set the size of this panel */
    public function setSize(w:int,h:int):void
    this.width = w;
    this.height = h;
    textArea.width = width;
    textArea.height = height > bottomTabs.height ? this.height-bottomTabs.height : 0;
    if (_textFlow)
    _textFlow.flowComposer.getControllerAt(0).setCompositionSize(textArea.width,textArea.heigh t);
    _textFlow.flowComposer.updateAllControllers();
    /** called when the bottom tabs finally gets sized. */
    private function bottomTabsResize():void
    setSize(width,height);
    /** The TextFlow to edit. */
    public function get textFlow():TextFlow
    { return _textFlow; }
    public function set textFlow(newFlow:TextFlow):void
    // clear any old flow if present
    if (_textFlow)
    _textFlow.flowComposer = null;
    _textFlow = null;
    _textFlow = newFlow;
    if (_textFlow)
    _textFlow.flowComposer.addController(new ContainerController(_container,textArea.width,textArea.height));
    // setup event listeners for selection changed and ILG loaded
    _textFlow.addEventListener(SelectionEvent.SELECTION_CHANGE,selectionChangeListener,false,0 ,true);
    _textFlow.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,graphicStatusCha ngeEvent,false,0,true);
    // make _textFlow editable with undo
    _textFlow.interactionManager = new EditManager(new UndoManager());
    // initialize with a selection before the first character
    _textFlow.interactionManager.selectRange(0,0);
    // compose the new textFlow and give it focus
    _textFlow.flowComposer.updateAllControllers();
    _textFlow.interactionManager.setFocus();
    /** Receives an event any time an ILG with a computed size finishes loading. */
    private function graphicStatusChangeEvent(evt:StatusChangeEvent):void
    // recompose if the evt is from an element in this textFlow
    if (_textFlow && evt.element.getTextFlow() == _textFlow)
    _textFlow.flowComposer.updateAllControllers();
    /** Receives an event any time the selection is changed.  Update the UI */
    private function selectionChangeListener(e:SelectionEvent):void
    var selectionState:SelectionState = e.selectionState;
    var selectedElementRange:ElementRange = ElementRange.createElementRange(selectionState.textFlow, selectionState.absoluteStart, selectionState.absoluteEnd);
    // set display according to the values at the beginning of the selection range.  For point selection/characterFormat use getCommonCharacterFormat as that tracks pending attributes waiting for the next character
    var characterFormat:ITextLayoutFormat = _textFlow.interactionManager.activePosition == _textFlow.interactionManager.anchorPosition ? _textFlow.interactionManager.getCommonCharacterFormat() : selectedElementRange.characterFormat;
    var paragraphFormat:ITextLayoutFormat = selectedElementRange.paragraphFormat;
    var containerFormat:ITextLayoutFormat = selectedElementRange.containerFormat;
    updateComboBox(fontFamily,characterFormat.fontFamily);
    fontSize.text = characterFormat.fontSize.toString();
    lineHeight.text = characterFormat.lineHeight.toString();
    updateComboBox(textAlign,paragraphFormat.textAlign);
    textIndent.text = paragraphFormat.textIndent.toString();
    columnCount.text = containerFormat.columnCount.toString();
    columnGap.text = containerFormat.columnGap.toString();
    updateComboBox(verticalAlign,containerFormat.verticalAlign);
    updateComboBox(blockProgression,_textFlow.computedFormat.blockProgression);
    updateComboBox(directionBox,_textFlow.computedFormat.direction);
    /** Helper function to update a comboBox in the UI */
    private function updateComboBox(box:ComboBox,val:String):void
    for (var i:int = 0; i < box.dataProvider.length; i++)
    if (box.dataProvider[i].data == val)
    box.selectedIndex = i;
    return;
    box.text = val;
    * These functions are helpers for the various widgets to actually perform the operations on the TextFlow
    private function changeFontFamily(newFontFamily:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.fontFamily = newFontFamily;
    IEditManager(_textFlow.interactionManager).applyLeafFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeFontSize(newFontSize:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.fontSize = newFontSize;
    IEditManager(_textFlow.interactionManager).applyLeafFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeLeading(newLeading:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.lineHeight = newLeading;
    IEditManager(_textFlow.interactionManager).applyLeafFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeTextAlign(newAlign:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var pf:TextLayoutFormat = new TextLayoutFormat();
    pf.textAlign = newAlign;
    IEditManager(_textFlow.interactionManager).applyParagraphFormat(pf);
    _textFlow.interactionManager.setFocus();
    private function changeTextIndent(newIndent:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var pf:TextLayoutFormat = new TextLayoutFormat();
    pf.textIndent = newIndent;
    IEditManager(_textFlow.interactionManager).applyParagraphFormat(pf);
    _textFlow.interactionManager.setFocus();
    private function changeColumnCount(newCount:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.columnCount = newCount;
    IEditManager(_textFlow.interactionManager).applyContainerFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeColumnGap(newGap:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.columnGap = newGap;
    IEditManager(_textFlow.interactionManager).applyContainerFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeVerticalAlign(newAlign:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.verticalAlign = newAlign;
    IEditManager(_textFlow.interactionManager).applyContainerFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeBlockProgression(newProgression:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.blockProgression = newProgression;
    IEditManager(_textFlow.interactionManager).applyFormatToElement(_textFlow,cf);
    _textFlow.interactionManager.setFocus();
    /** Set direction on the rootElement.  This effects both columnDirection and default reading order. */
    private function changeDirection(newDirection:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var pf:TextLayoutFormat = new TextLayoutFormat();
    pf.direction = newDirection;
    IEditManager(_textFlow.interactionManager).applyFormatToElement(_textFlow,pf);
    _textFlow.interactionManager.setFocus();
    ]]>
    </mx:Script>
    <!-- <mx:VBox horizontalScrollPolicy="off" verticalScrollPolicy="off" width="100%" height="100%"> -->
    <mx:Canvas id="textArea" width="520" height="400"/>
    <mx:TabNavigator id="bottomTabs" width="100%" creationPolicy="all" paddingLeft="4" paddingBottom="8" backgroundColor="#D9D9D9" color="#202020" horizontalScrollPolicy="off" verticalScrollPolicy="off" resize="bottomTabsResize()">
    <mx:HBox label="Text" backgroundColor="#D9D9D9" width="496" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
    <mx:Label text="Font:"/>
    <mx:ComboBox id="fontFamily" editable="true" enter="changeFontFamily(fontFamily.text)"  close="changeFontFamily(fontFamily.text)" width="200"/>
    <mx:Label text="Size:"/>
    <mx:TextInput id="fontSize" enter="changeFontSize(fontSize.text)" width="40"/>
    <mx:Label text="LineHeight:"/>
    <mx:TextInput id="lineHeight" enter="changeLeading(lineHeight.text)" width="40"/>
    </mx:HBox>
    <mx:HBox label="Para" backgroundColor="#D9D9D9" width="496">
    <mx:Label text="Alignment:"/>
    <mx:ComboBox id="textAlign" close="changeTextAlign(textAlign.selectedItem.data)" dataProvider="{textAlignData}"/>
    <mx:Label text="FirstLineIdent:"/>
    <mx:TextInput id="textIndent" enter="changeTextIndent(textIndent.text)" width="40"/>
    </mx:HBox>
    <mx:HBox label="Container" backgroundColor="#D9D9D9" width="496">
    <mx:Label text="Columns:"/>
    <mx:TextInput id="columnCount" toolTip="auto or a number" enter="changeColumnCount(columnCount.text)" width="40"/>
    <mx:Label text="Gap:"/>
    <mx:TextInput id="columnGap" toolTip="a number" enter="changeColumnGap(columnGap.text)" width="40"/>
    <mx:Label text="VerticalAlignment:"/>
    <mx:ComboBox id="verticalAlign" close="changeVerticalAlign(verticalAlign.selectedItem.data)" dataProvider="{verticalAlignData}"/>
    </mx:HBox>
    <mx:HBox label="Flow" backgroundColor="#D9D9D9" width="496">
    <mx:Label text="Progression:"/>
    <mx:ComboBox id="blockProgression" close="changeBlockProgression(blockProgression.selectedItem.data)" dataProvider="{blockProgressionData}"/>
    <mx:Label text="Direction:"/>
    <mx:ComboBox id="directionBox" close="changeDirection(directionBox.selectedItem.data)" dataProvider="{directionData}"/>
    </mx:HBox>
    <mx:HBox label="Version" backgroundColor="#D9D9D9" width="496">
    <mx:TextInput id="versionInfo" editable="false" width="100%"/>
    </mx:HBox>
    </mx:TabNavigator>
    <!-- </mx:VBox> -->
    </mx:VBox>

    Probably something is going wrong when the application is being built, and textLayout.SWC is not found. Are you using Flex or Flash Pro to build it? What version? Does this error come up when you build the project, or when you run it?
    Thanks,
    - robin

  • How to use Text Layout Framework in Flash CS3?

    Hi,
    I perferctly now how to get TLF to work in CS4.
    As far as I know, the the base code is in AS3 so I should be able to locate the classes in CS3 and use it in Flash CS3.
    I appreciate if there is anyone who can help me with this?

    I'm not that knowledgeable about Flash Pro, however, I'd be quite surprised if you could make this work.  CS4 added Flash Player 10 support.  That includes a compiler update for Vector - a new AS3 feature.  Minimally you'll have to get Flash CS3 to generate FP10 level content and compile with the playerglobals.swc from FP10.  If you can get that far than adding textLayout.swc to your project should be straightforward.
    Maybe someone else has an idea.
    Hope that helps,
    Richard

  • Can we specifies the border sides in Text Layout Framework?

    I am apply boder .. it is working but i am not able to specifies the border sides like left and right only.
    Thanx in advanced...

    What border you are setting?
    I don't think TLF currently got a border attribute in current version. Can you make sure you are setting the attribute for TLF?

  • How about a 'Text Layout Framwork' category on Adobe Labs Ideas in the Flex SDK section?

    I like 'Adobe Labs Ideas', it's far more accessible/inviting then "Adobe Bugs and Issues" (JIRA).
    Therefor I would like to suggest a new category 'Text Layout Framework' under the Flex SDK section or even it's own section (after all TLF isn't Flex only).

    Am I right, that this is a tricky question? No hints or attempts so far. Really no-one out there?
    I guess I am not the only one who would like to extend the Importer (Exporter) by new tags, FlowElement's and FlowLeafElement's.
    Best regards
    Masteradi

  • Chinese font characters disappearing in CS6

    I need to redesign an InDesign file that is in Chinese and originally created in CS5. When I open the document in CS6 some characters disappear (no pink box). When I substitute the font with another Simplified Chinese font, some of the missing characters appear but then I lose other characters. Is this a CS6 issue? Any solutions?

    Chinese fonts can vary dramatically in character count, whether simplified or traditional, but older simplified fonts are particularly small (GB vs. GBK, etc.): the ChineseMac site has a handy list showing character counts for a bunch of fonts.  And sometimes ID doesn't show a pink box, just a blank.
    Differences can be really subtle.  Several years ago I worked on a job using Adobe Fangsong, if I recall correctly.  Some stuff disappeared on a colleague's machine, and it turned out he was using a version of the font bundled with an earlier version of InDesign and hadn't installed the revised font when upgrading ID.  (The older one lacked some of the vertical punctuation symbols I'd added to the files.)
    Good luck!
    David

  • Interactive pdf form with text fields. Chinese fonts

    Hi All
    We have designed an interactive pdf with text fields. We need the text fields to be in a Chinese font. I understand that this cant be done in Indesign (change the inputting font to Chinese) I have moved the file over to Acrobat Pro and used the text property to amend the font to Simsun but when we try it out the font is still in English. Any ideas on how to remedy the problem??
    Thank you in advance
    Paul

    Basically, you need to create a pdf form.
    Add a text field to your form.
    There you can choose which font your want the text to appear in.
    The trick is, when you export from InDesign, in the "Advanced Tab" — set "Subset fonts when percentage…" to 0%, so the whole font embeds.'
    I believe there's an option in Acrobat to embed the font as well, but I'm not recalling what it it.
    But that will ensure the font appears correctly.
    d

Maybe you are looking for

  • Closing command window after applic starts...help

    hi, i have a java application which i run from my command prompt by typing java -jar {JAR_NAME}..... i wanna know if there is any way I can close the command window once the application has started.... Thanks Sudarshan

  • How to get rid of feedback in logic pro x!?

    I am using Logic Pro X, and bought a Behringer small USB Audio Interface to record guitar through it's 1/4 input. However whenever I assign one of the amp configuration presets in Logic, I get crazy feedback. I didn't have this issue at home with my

  • Conditon record for  condition type

    Hi i create my condition  record for my condition type( pr00, MWST,) in pricing in vk11  but when i  create my condition type for output type, account determination and text determination  i don't create the condition record in vk11 so how is   itpos

  • HT201240 how to reset password on ipod

    how to reset password

  • Need to switch off Mac during TM backup

    What would happen if TM was in the middle of a backup but I had to switch off my Mac (for whatever reason)? Would anything get seriously messed up anywhere or is TM so clever that it'd just pick up where it left off next time I switched the Mac back