<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Text Layout Framework Team</title>
	<atom:link href="http://blogs.adobe.com/tlf/feed" rel="self" type="application/rss+xml" />
	<link>http://blogs.adobe.com/tlf</link>
	<description>Typography and Text Layout in Flash Player</description>
	<lastBuildDate>Tue, 02 Aug 2011 02:52:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>TLF Branch 3.0 is available on SourceForge.net</title>
		<link>http://blogs.adobe.com/tlf/2011/08/tlf-branch-3-0-is-available-on-sourceforge-net.html</link>
		<comments>http://blogs.adobe.com/tlf/2011/08/tlf-branch-3-0-is-available-on-sourceforge-net.html#comments</comments>
		<pubDate>Tue, 02 Aug 2011 02:52:00 +0000</pubDate>
		<dc:creator>Mao Liang</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=238</guid>
		<description><![CDATA[TLF branch 3.0 has been posted on the source forge, http://sourceforge.net/projects/tlf.adobe/files/3.0/ There are performance improvements and new features in TLF 3.0 branch. TLF team is still working on the new features of TLF 3.0. In the ContainerBreaks and ColumnBreaks feature, we have added a way for users to force the text to break and continue [...]]]></description>
			<content:encoded><![CDATA[<p align="left">TLF branch 3.0 has been posted on the source forge, <a href="http://sourceforge.net/projects/tlf.adobe/files/3.0/">http://sourceforge.net/projects/tlf.adobe/files/3.0/</a></p>
<p align="left">There are performance improvements and new features in TLF 3.0 branch. TLF team is still working on the new features of TLF 3.0.</p>
<p>In the ContainerBreaks and ColumnBreaks feature, we have added a way for users to force the text to break and continue on the next column or container. There are two ways for us to choose, the attribute way and the content way. We chose the first one at last for two reasons. First, it have much better compatibility and flexibility with the CSS definition. And the second is it makes the client easier to use this feature which has no effect on the content.</p>
<p>The W3C also got a draft document to define the column break. We bought in some kind of their definition and expand them to be the column break and container break. We got the following attributes:</p>
<ol>
<li>ColumnBreakBefore</li>
<li>ColumnBreakAfter</li>
<li>ContainerBreakBefore</li>
<li>ContainerBreakAfter</li>
</ol>
<p>Each of the attributes can be set as following two values:</p>
<p>AUTO: Neither force nor forbid a container break/column break before(after) the generated box.</p>
<p>ALWAYS: Always force a container break/column break before(after) the generated box.</p>
<p align="left">BTW, in order to fix some bugs, some API are changed in TLF 3.0,</p>
<ol>
<li>[API changed]when linebreak=”toFit”, the contentBounds will include the tailing whitespaces.</li>
<li>[API added]add color=’red’ or [black, blue, green, gray, silver, lime, olive, white, yellow, maroon, navy, purple, teal, fuchsia, aqua, magenta, cyan] property support in paragraph element.</li>
<li>[API added]add custom cursor support for FP10.2, users could have custom cursor by override Configuration:cursorFunction.</li>
</ol>
<p>You can get more details from the release notes of TLF 3.0.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2011/08/tlf-branch-3-0-is-available-on-sourceforge-net.html/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>TLF branch 2.1 is available on SourceForge.net</title>
		<link>http://blogs.adobe.com/tlf/2011/08/tlf-branch-2-1-is-available-on-sourceforge-net.html</link>
		<comments>http://blogs.adobe.com/tlf/2011/08/tlf-branch-2-1-is-available-on-sourceforge-net.html#comments</comments>
		<pubDate>Tue, 02 Aug 2011 02:44:04 +0000</pubDate>
		<dc:creator>Mao Liang</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=236</guid>
		<description><![CDATA[TLF branch 2.1 has been posted on the source forge http://sourceforge.net/projects/tlf.adobe/files/2.1/.  In Branch 2.1, four high servility bugs are fixed, Fix unreported crash that happens when composeToContainer is followed by updateToContainer. Fix a crash using floats, Also fixed a bug where an inline graphic was stopped, but not removed from the display list. Fix when [...]]]></description>
			<content:encoded><![CDATA[<p align="left">TLF branch 2.1 has been posted on the source forge http://sourceforge.net/projects/tlf.adobe/files/2.1/.</p>
<p> In Branch 2.1, four high servility bugs are fixed,</p>
<ol>
<li>Fix unreported crash that happens when composeToContainer is followed by updateToContainer.</li>
<li>Fix a crash using floats, Also fixed a bug where an inline graphic was stopped, but not removed from the display list.</li>
<li>Fix when lineBreak=&#8221;toFit&#8221; the contentBounds width does not include the trailing whitespace.</li>
<li>Fix when the TextLine is INVALID and cannot be used to access the current state of the TextBlock.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2011/08/tlf-branch-2-1-is-available-on-sourceforge-net.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TLF Samples Now On SourceForge</title>
		<link>http://blogs.adobe.com/tlf/2011/03/tlf-samples-now-on-sourceforge.html</link>
		<comments>http://blogs.adobe.com/tlf/2011/03/tlf-samples-now-on-sourceforge.html#comments</comments>
		<pubDate>Wed, 09 Mar 2011 01:51:25 +0000</pubDate>
		<dc:creator>Robin Briggs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=175</guid>
		<description><![CDATA[Our SourceForge site now has code and projects for TLF example applications. These were previously only posted here on the TLF blog, now there will be a samples set for every build. The &#8220;sdk&#8221; folder contains most of these examples, and they are available as a download. The sdk folder is divided into two main [...]]]></description>
			<content:encoded><![CDATA[<p>Our SourceForge site now has code and projects for TLF example applications. These were previously only posted here on the TLF blog, now there will be a samples set for every build. The &#8220;sdk&#8221; folder contains most of these examples, and they are available as a download.</p>
<p>The sdk folder is divided into two main sections, one for applications that only rely on TLF and the Flash Player, and one for applications that use the Flex Framework for their user interface, but otherwise call into TLF directly. The first group are in the &#8220;actionscript&#8221; folder, and the second group are in the &#8220;flex&#8221; folder.</p>
<p>The actionscript folder has these applications:<br />
- <strong>FTE</strong> applications FTEHelloWorld and FTEParagraph. These are very simple applications that create and display simple text content using only the Flash Player (no use of TLF).<br />
- <strong>Pagination</strong>. This application uses TLF to display a book-length text that is divided into chapters, and allows the user to page through the text, advance or backup by chapters, and resize the window.<br />
- <strong>TextLayout</strong>. This is a set of applications that use TLF, each illustrating different aspects of the framework:</p>
<ul>
<li>ContextMenuText shows how to make custom context menus.</li>
<li>CustomImportMarkup shows simple import and customization using the Configuration class.</li>
<li>CustomLinkEventHandler shows how to customize clicks on links.</li>
<li>EditText shows setting up an editable text component.</li>
<li>EventMirrorExample shows setting up event handlers on group elements.</li>
<li>ExplicitFormField shows how to set up form-field style text that doesn&#8217;t wrap lines.</li>
<li>HelloWorld shows setting up a read-only text component based on static text.</li>
<li>ImportMarkup shows setting up a read-only text component based on markup.</li>
<li>InlineGraphic creates a graphic that appears inline with the text, and shows how to handle the asynchronous load process and automatic sizing.</li>
<li>LinkedContainers shows how to flow text from one container to another, for when you want a single text stream to appear in a sequence of rectangular areas.</li>
<li>LinkEventExample shows how to set up a link to send custom events.</li>
<li>MultipleColumns has a text with a headline and body text that appears in multiple columns.</li>
<li>ParagraphBorder shows how to draw an ornament around a paragraph, which requires figuring out the area on the stage that is occupied by the paragraph.</li>
<li>ParagraphBounds shows how to figure out how much vertical space is required to display a paragraph.</li>
<li>SelectText shows how to make a very simple read-only selectable text component.</li>
<li>StaticHelloWorld shows how to use the StringTextLineFactory to display some static text in a string. This is more efficient than the HelloWorld example.</li>
<li>StaticTextFlow shows how to use the TextFlowTextLineFactory to display a static TextFlow object.</li>
</ul>
<p>The flex folder has applications that use Flex for the user interface, but call into TLF directly:</p>
<ul>
<li>SimpleEditor is an editable text component with simple buttons for setting the font family, font size, text alignment,indent, line spacing, and similar attributes.</li>
<li>SimpleEditorWithCSS is similar to SimpleEditor, but it also allows setting of the styleName and id, and mapping of these with a CSS stylesheet.</li>
<li>TextLayoutEditor is a text editor that allows editing of text and almost all attributes you can set in TLF. It uses swcs that are in the other two folders, textLayout_editBar and textLayout_ui.</li>
</ul>
<p><strong>Building the Sample Code</strong><br />
The code is available as a download, but you can also build it yourself if you prefer. Each folder has a build file in it that you can run from Ant.</p>
<p>So try out these samples, and let us know what you think! If there are additional samples you’d like to see, please let us know what they are.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2011/03/tlf-samples-now-on-sourceforge.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Spell Checking TLF with Squiggly</title>
		<link>http://blogs.adobe.com/tlf/2011/02/spell-checking-tlf-with-squiggly.html</link>
		<comments>http://blogs.adobe.com/tlf/2011/02/spell-checking-tlf-with-squiggly.html#comments</comments>
		<pubDate>Fri, 11 Feb 2011 19:33:55 +0000</pubDate>
		<dc:creator>Robin Briggs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=216</guid>
		<description><![CDATA[There&#8217;s a new prerelease version of the Squiggly spell checking library available on Adobe Labs. This new version of Squiggly (0.5) has support for spell checking in TLF applications. Check it out!]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a new prerelease version of the Squiggly spell checking library available on <a href="http://labs.adobe.com/technologies/squiggly/releasenotes.html">Adobe Labs</a>. This new version of Squiggly (0.5) has support for spell checking in TLF applications. Check it out!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2011/02/spell-checking-tlf-with-squiggly.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TLF 2.0 Changes: SubParagraphGroupElements and typeName applied to TextFieldHTMLImporter and CSSFormatResolver</title>
		<link>http://blogs.adobe.com/tlf/2011/01/tlf-2-0-changes-subparagraphgroupelements-and-typename-applied-to-textfieldhtmlimporter-and-cssformatresolver.html</link>
		<comments>http://blogs.adobe.com/tlf/2011/01/tlf-2-0-changes-subparagraphgroupelements-and-typename-applied-to-textfieldhtmlimporter-and-cssformatresolver.html#comments</comments>
		<pubDate>Tue, 25 Jan 2011 21:26:44 +0000</pubDate>
		<dc:creator>Richard Dermer</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[TLF]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=177</guid>
		<description><![CDATA[Changes made to the TLF 2.0 are being used to improve theTextFieldHTML importer. First note that this importer is intended for compatibility with the TextField.htmlText property. It&#8217;s not intended to be a general purpose HTML importer. The SubParagraphGroupElement In TLF 1.1 and earlier There was no equivalent of HTML&#8217;s nested spans. TLF 2.0 adds the [...]]]></description>
			<content:encoded><![CDATA[<p>Changes made to the TLF 2.0 are being used to improve theTextFieldHTML importer.  First note that this importer is intended for compatibility with the TextField.htmlText property.  It&#8217;s not intended to be a general purpose HTML importer.</p>
<h2>The SubParagraphGroupElement</h2>
<p>In TLF 1.1 and earlier  There was no equivalent of HTML&#8217;s nested spans.  TLF 2.0 adds the SubPargraphGroupElement (in markup &lt;g&gt;).  SubParagraphGroupElements can be a child of a ParagraphElement, LinkElement, TCYElement or another SubParagraphGroupElement.  These are useful for creating nested text elements that share some formatting.</p>
<h2>The FlowElement typeName property</h2>
<p>All TLF elements now have a typeName property.  This property is initialized to the string used when exporting TLF markup.  This table shows the default class names and default typeNames for new instances of that class.  Note that typeName is a read/write property and clients may manipulate it.</p>
<table>
<tr>
<td>DivElement</td>
<td>div</td>
</tr>
<tr>
<td>InlineGraphicElement</td>
<td>img</td>
</tr>
<tr>
<td>LinkElement</td>
<td>a</td>
</tr>
<tr>
<td>ListElement</td>
<td>list</td>
</tr>
<tr>
<td>ListItemElement</td>
<td>li</td>
</tr>
<tr>
<td>ParagraphElement</td>
<td>p</td>
</tr>
<tr>
<td>SpanElement</td>
<td>span</td>
</tr>
<tr>
<td>SubParagraphGroupElement</td>
<td>g</td>
</tr>
<tr>
<td>TabElement</td>
<td>tab</td>
</tr>
<tr>
<td>TextFlow</td>
<td>TextFlow</td>
</tr>
</table>
<p>Note that TLF always converts TabElement and BreakElement elements into the tab and newline character so normally they disappear from the TextFlow and are left off this table.</p>
<h2>HTMLImporter Changes to Support Unknown Tags</h2>
<p>The HTML importer now preserves unrecognized element tags, for example &lt;foo&gt;Text&lt;/foo&gt;, by creating a TLF element and setting its typeName to be an element of that tag.  The goal of this is to allow importing of HTML with custom tags and connecting a stylesheet with typename selectors that match through an IFormatResolver.  When the importer encounters an unknown tag the rule it uses is if the unknown tag has one child element that child gets its typeName set to the unknown tag.  If two or more elements are created than a &lt;div&gt; or a &lt;g&gt; as the parent of the children with its typeName set.</p>
<p>For example :</p>
<p>Import this HTML:<br />
&lt;foo&gt;Text&lt;foo&gt;<br />
to create TLFMarkup:<br />
&lt;p typeName=&#8221;foo&#8221;&gt;&lt;span&gt;Text&lt;/span&gt;&lt;/p&gt;</p>
<p>Import this HTML:<br />
&lt;foo&gt;&lt;p&gt;Hello&lt;/p&gt;World&lt;/foo&gt;<br />
to create TLFMarkup:<br />
&lt;div typeName=&#8221;foo&#8221;&gt;&lt;p&gt;&lt;span&gt;Hello&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;World&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</p>
<p>Import this HTML:<br />
&lt;p&gt;&lt;foo&gt;&lt;b&gt;bold&lt;/b&gt;normal&lt;/foo&gt;&lt;/p&gt;<br />
to create TLFMarkup::<br />
&lt;p&gt;&lt;g typeName=&#8221;foo&#8221;&gt;&lt;span fontWeight=&#8221;bold&#8221;&gt;bold&lt;/span&gt;&lt;span&gt;normal&lt;/span&gt;&lt;/g&gt;&lt;/p&gt;</p>
<p>Import this HTML:<br />
&lt;p&gt;&lt;foo&gt;asdf&lt;/foo&gt;&lt;/p&gt;<br />
to create TLFMarkup::<br />
&lt;p&gt;&lt;span typeName=&#8221;foo&#8221;&gt;asdf&lt;/span&gt;&lt;/p&gt;</p>
<p>Warning:  TLF&#8217;s HTMLExporter converts all tag names to uppercase.  So typeName=&#8221;foo&#8221; exports to &lt;FOO&gt;.  The TLF markup exporter preserves case as shown above.</p>
<h2>SubPargraphGroupElement and the HTML Importer</h2>
<p>Previously the importer was unable to preserve nested span elements with formatting.  For example:<br />
&lt;font size=&#8221;18&#8243;&gt;&lt;span&gt;Normal &lt;font color=&#8221;#0000ff&#8221;&gt;BLUE&lt;/font&gt; Normal&lt;/span&gt;&lt;/font&gt; </p>
<p>In 1.0 this content created 3 spans with different formatting like this:<br />
&lt;p&gt;&lt;span fontSize=&#8221;18&#8243;&gt;Normal &lt;/span&gt;&lt;span color=&#8221;#0000ff&#8221; fontSize=&#8221;18&#8243;&gt;BLUE&lt;/span&gt;&lt;span fontSize=&#8221;18&#8243;&gt; Normal&lt;/span&gt;&lt;/p&gt;</p>
<p>In 2.0 this content creates a group with three span elements:<br />
&lt;p&gt;&lt;g fontSize=&#8221;18&#8243; typeName=&#8221;span&#8221;&gt;&lt;span&gt;Normal &lt;/span&gt;&lt;span color=&#8221;#0000ff&#8221;&gt;BLUE&lt;/span&gt;&lt;span&gt; Normal&lt;/span&gt;&lt;/g&gt;&lt;/p&gt;</p>
<p>This example becomes even more interesting if the &lt;span&gt; is changed to a &lt;foo&gt; and CSS formatting is connected.</p>
<h2>typeName and CSSFormatResolver</h2>
<p>This can all be used to improve the connection of CSS stylesheets to a TextFlow using the IFormatResolver interface.  This was originally described in an <a href="http://blogs.adobe.com/tlf/2009/02/iformatresolver-and-using-css-1.html">older blog post</a>.</p>
<p>I&#8217;ve updated the Flex based CSSFormatResolver example to leverage the typeName property as well as including a demonstration of a styled &#8220;foo&#8221; tag.  It&#8217;s attached <a href="http://blogs.adobe.com/tlf/files/2011/01/SimpleEditorWithCSS.zip">here</a>.  Note:  You will have to adjust the library paths.</p>
<p>For those requesting a non-Flex version of CSSFormatResolver I attached a sample <a href="http://blogs.adobe.com/tlf/files/2011/01/AS3CSSSample.zip">here</a>.  Note:  You will have to adjust the library paths.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2011/01/tlf-2-0-changes-subparagraphgroupelements-and-typename-applied-to-textfieldhtmlimporter-and-cssformatresolver.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Decoration Example</title>
		<link>http://blogs.adobe.com/tlf/2011/01/decoration-example.html</link>
		<comments>http://blogs.adobe.com/tlf/2011/01/decoration-example.html#comments</comments>
		<pubDate>Sat, 22 Jan 2011 00:59:28 +0000</pubDate>
		<dc:creator>Robin Briggs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=159</guid>
		<description><![CDATA[There are a lot of cases where you might want to add additional DisplayObjects to the line when it is displayed. Sometimes these are called decorations or ornaments. We got this example from one of our users, Will Lin of Silicon Publishing. Will wanted to have a bulleted list, but he needed his list to [...]]]></description>
			<content:encoded><![CDATA[<p>There are a lot of cases where you might want to add additional DisplayObjects to the line when it is displayed. Sometimes these are called decorations or ornaments. We got this example from one of our users, Will Lin of Silicon Publishing. Will wanted to have a bulleted list, but he needed his list to work with TLF 1.1, which doesn&#8217;t have list support. So he added a decoration to the lines that adds the bullet at the start of the paragraph. Here&#8217;s how it works.</p>
<p>TLF&#8217;s ContainerController class takes the TextLines generated from composition and adds them to the container. To do this, it has a function, addTextLine, that is called on each TextLine as it is added. Will made a new class, BulletsContainerController, that inherits from ContainerController and overrides the addTextLine method. For each line that is added, he checks to see if the line is at the beginning of the paragraph. If it is, he generates a new DisplayObject for the bullet and makes it a child of the TextLine.</p>
<p>In the main body of his application, when he creates the TextFlow, instead of adding a controller that is a ContainerController instance he adds a BulletContainerController instead.</p>
<p>That&#8217;s pretty much all there is to it. Thanks to Will and to Silicon Publishing for making this example public!</p>
<p><a href="http://blogs.adobe.com/tlf/files/2011/01/BulletsExample.zip">BulletsExample</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2011/01/decoration-example.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>TLF 1.0 Markup Specification</title>
		<link>http://blogs.adobe.com/tlf/2010/12/tlf-1-0-markup-specification.html</link>
		<comments>http://blogs.adobe.com/tlf/2010/12/tlf-1-0-markup-specification.html#comments</comments>
		<pubDate>Wed, 22 Dec 2010 21:42:32 +0000</pubDate>
		<dc:creator>Robin Briggs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=147</guid>
		<description><![CDATA[TLF_Specification_1.1 We now have a standalone specification of the Text Layout Framework markup for TLF 1.0 and TLF 1.1. This should be helpful to anyone who is trying to figure out what the XML format is for serializing and deserializing TLF text content.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.adobe.com/tlf/files/2010/12/TLF_Specification_1.11.pdf">TLF_Specification_1.1</a></p>
<p>We now have a standalone specification of the Text Layout Framework markup for TLF 1.0 and TLF 1.1. This should be helpful to anyone who is trying to figure out what the XML format is for serializing and deserializing TLF text content.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2010/12/tlf-1-0-markup-specification.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TLF FlowElement LinkElement Events and EventMirrors</title>
		<link>http://blogs.adobe.com/tlf/2010/12/tlf-flowelement-linkelement-events-and-eventmirrors.html</link>
		<comments>http://blogs.adobe.com/tlf/2010/12/tlf-flowelement-linkelement-events-and-eventmirrors.html#comments</comments>
		<pubDate>Thu, 02 Dec 2010 19:50:22 +0000</pubDate>
		<dc:creator>Richard Dermer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=133</guid>
		<description><![CDATA[Examples are posted here: LinkElements TLF includes support for LinkElements. A LinkElement similar to an html &#60;a&#62; element can have a URL and respond to hover events and click events. The URL is invoked on click. The rendering of the LinkElement will change if a linkHoverFormat or linkActiveFormat is specified. This markup will turn the [...]]]></description>
			<content:encoded><![CDATA[<p><em>Examples are posted <a href="http://blogs.adobe.com/tlf/files/2010/12/EventExamples.zip">here</a>:</em></p>
<h1>LinkElements</h1>
<p>TLF includes support for LinkElements.  A LinkElement similar to an html &lt;a&gt; element can have a URL and respond to hover events and click events.  The URL is invoked on click.  The rendering of the LinkElement will change if a linkHoverFormat or linkActiveFormat is specified.  This markup will turn the link red on hover and green on click:</p>
<p><code>&lt;TextFlow version=&quot;2.0.0&quot; xmlns=&quot;http://ns.adobe.com/textLayout/2008&quot;&gt;<br />
&lt;p&gt;&lt;a href=&quot;http://www.google.com&quot;&gt;<br />
&lt;linkActiveFormat&gt;&lt;TextLayoutFormat color=&quot;0xff00&quot;/&gt;&lt;/linkActiveFormat&gt;<br />
&lt;linkHoverFormat&gt;&lt;TextLayoutFormat color=&quot;0xff0000&quot;/&gt;&lt;/linkHoverFormat&gt;<br />
TestLink&lt;/a&gt;&lt;/p&gt;<br />
&lt;/TextFlow&gt;</code></p>
<h1>LinkElements and event: syntax</h1>
<p>LinkElements can also be used to generate events on the click that a client can intercept.  This is done by specifying the <code>LinkElement.href</code> property as <code>"event:<i>eventName</i>"</code>.  Client code can then attach a listener to the textFlow for eventName.</p>
<p>In the examples zip LinkEventExample.as demonstrates changing the color of the text when a link is clicked.</p>
<p>Note that if an <code>EditManager</code> is attached to the textFlow then LinkElements only respond if the CTRL key (on windows) or Command key (on Mac) is pressed.</p>
<h1>EventMirrors</h1>
<p>Several TLF elements also support event mirrors.  This allows a client to attach listeners directly to FlowElements for various events defined in the FlowElementMouseEvent class.  These events events are generated by TLF by observing the MouseEvents that occur over the TextLines and mapped to the FlowElements.  The events that can be listened for are defined in <code>FlowElementMouseEvent</code>.  These events are: <code>MOUSE_DOWN, MOUSE_UP, ROLL_OVER, ROLL_OUT and CLICK.</code>  Listeners are attached by calling <code>getEventMirror</code> on a FlowElement with support.  <code>getEventMirror</code> returns an IEventDispatcher on which the listener can be attached.  Only the following FlowElements support <code>getEventMirror</code>: LinkElement, TCYElement, SubParagraphGroupElement, SpanElement and InlineGraphicElement.</p>
<p>In the examples zip EventMirrorExample.as file demonstrates the use of event mirrors.</p>
<p>Note that <code>getEventMirror</code> is a <code>tlf_internal</code> function.  Event mirror support is still experimental in TLF 2.0 though there are no known bugs with dispatching events.  Less well tested is how event mirrors withstand editing operations as well as cut, copy and paste.  Copy, for example will not have event mirrors on the new copy.  Splitting a FlowElement will only preserve the mirrors on one of the elements.  Unlike the event: syntax on <code>LinkElements</code> event mirrors are not imported and exported in XML. </p>
<p>For various reasons TLF does not use FTE eventMirrors.  The main one is that an eventual goal of TLF is to permit data binding to a <code>TextFlow</code> so that a single <code>TextFlow</code> can be displayed in multiple views.   This event mirror architecture is a necessary step in that direction.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2010/12/tlf-flowelement-linkelement-events-and-eventmirrors.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Padding Changes in TLF 2.0</title>
		<link>http://blogs.adobe.com/tlf/2010/11/padding-changes-in-tlf-2-0.html</link>
		<comments>http://blogs.adobe.com/tlf/2010/11/padding-changes-in-tlf-2-0.html#comments</comments>
		<pubDate>Wed, 24 Nov 2010 00:17:24 +0000</pubDate>
		<dc:creator>Richard Dermer</dc:creator>
				<category><![CDATA[TLF]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=114</guid>
		<description><![CDATA[TLF has 4 padding properties: paddingLeft, paddingRight, paddingTop and paddingBottom. In TLF 1.0 the padding properties only applied to TextFlow and ContainerController objects. The effective padding on each side of each container is the sum of the two paddings. TLF 2.0 adds additional support for padding on DivElements, ParagraphElements, InlineGraphicElements as well as the new [...]]]></description>
			<content:encoded><![CDATA[<p>TLF has 4 padding properties: <code>paddingLeft</code>, <code>paddingRight</code>, <code>paddingTop</code> and <code>paddingBottom</code>.  In TLF 1.0 the padding properties only applied to <code>TextFlow</code> and <code>ContainerController</code> objects.  The effective padding on each side of each container is the sum of the two paddings.</p>
<p>TLF 2.0 adds additional support for padding on <code>DivElements</code>, <code>ParagraphElements</code>, <code>InlineGraphicElements</code> as well as the new list related elements <code>ListElement</code> and <code>ListItemElement</code>.  Each element will have a padding specified inset around it.</p>
<p>During import of TLF markup padding properties are ignored on these additional classes unless the attribute <code>version="2.0.0"</code> is specified on the <code>TextFlow</code> tag.  The goal is that existing markup won&#8217;t render differently if padding properties were specified on elements that didn&#8217;t implement padding in 1.0.</p>
<p>The padding properties don&#8217;t inherit by default.  If not specified they have their default value.  In 1.0 and 1.1 the default value was <code>"0"</code>.  In TLF 2.0 this default value is <code>"auto"</code>.  For all elements except <code>ListElement</code> <code>"auto"</code> is interpreted as <code>"0"</code>.  </p>
<p>For <code>ListElements "auto"</code> is <code>"0"</code> except on the start side of the list where the value of the new <code>listAutoPadding</code> property is used.  The default value of <code>listAutoPadding</code> is 40.  This was done to give lists a default indent.  </p>
<p>The following markup creates a list with the marker placed outside the box of the ListItem.</p>
<p><code>&lt;TextFlow&gt;&lt;list&gt;&lt;li&gt;First list item&lt;/li&gt;&lt;/list&gt;&lt;/TextFlow&gt;</code></p>
<p>Without <code> listAutoPadding</code> the list item would have no padding and the marker would be to the left of the clip and would not be visible.  TLF 2.0 applies the <code> listAutoPadding</code> to the start side and indents the list 40 pixels and places the outside marker in the visible area to the left side of the indentation. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2010/11/padding-changes-in-tlf-2-0.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Word spacing</title>
		<link>http://blogs.adobe.com/tlf/2010/11/word-spacing.html</link>
		<comments>http://blogs.adobe.com/tlf/2010/11/word-spacing.html#comments</comments>
		<pubDate>Tue, 16 Nov 2010 06:19:52 +0000</pubDate>
		<dc:creator>Robin Briggs</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/tlf/?p=64</guid>
		<description><![CDATA[Word spacing is a new feature that allows you to better control the how much space is left between words. In unjustified text, the space between words is set by the size of the space character in the font. Different fonts may look better with more or less space, and so the font designer specifies [...]]]></description>
			<content:encoded><![CDATA[<p>Word spacing is a new feature that allows you to better control the how much space is left between words. In unjustified text, the space between words is set by the size of the space character in the font. Different fonts may look better with more or less space, and so the font designer specifies a preferred width for the space the font is created. But you can choose to have your text set looser or tighter by adjusting the space between the words as a percentage of what is defined in the font.</p>
<p>In justified text, the text is aligned on both edges to the margin, and the width of the spaces is adjusted to make this happen. Spaces may be compressed or expanded so that the text may best fit the column. Now you can control the minimum and maximum size of the spaces in justified text, as a percentage of the size of the space in the font.</p>
<p>The new property is called wordSpacing. It goes on paragraphs (or it can be inherited from the TextFlow, div or list that the paragraph is in) and it is an array of three percentages. The first is the desired or optimal space width. The second is the minimum space width, and the last is the maximum space width.<span id="more-64"></span></p>
<p>Here&#8217;s an example with default settings (wordSpacing=&#8221;100%,50%,150%&#8221;):</p>
<p><a class="lightbox" title="wordSpace10050150ragged" href="http://blogs.adobe.com/tlf/files/2010/11/wordSpace10050150ragged.jpg"><img class="alignnone size-full wp-image-80" title="wordSpace10050150ragged" src="http://blogs.adobe.com/tlf/files/2010/11/wordSpace10050150ragged.jpg" alt="" width="751" height="97" /></a></p>
<p>This is the same text, but with the optimal wordSpacing set to 80% (wordSpacing=&#8221;80%,50%,150%&#8221;). It is slightly tighter, and manages to fit the text in one less line:</p>
<p><a class="lightbox" title="wordSpace8050150" href="http://blogs.adobe.com/tlf/files/2010/11/wordSpace8050150.jpg"><img class="alignnone size-full wp-image-81" title="wordSpace8050150" src="http://blogs.adobe.com/tlf/files/2010/11/wordSpace8050150.jpg" alt="" width="751" height="87" /></a></p>
<p>This is the same text again, but set looser, with wordSpacing=&#8221;140%,50%,150%&#8221;</p>
<p><a class="lightbox" title="wordSpace14050150" href="http://blogs.adobe.com/tlf/files/2010/11/wordSpace14050150.jpg"><img class="alignnone size-full wp-image-82" title="wordSpace14050150" src="http://blogs.adobe.com/tlf/files/2010/11/wordSpace14050150.jpg" alt="" width="751" height="99" /></a></p>
<p>You can also get changes to justified text just by changing the minimum and maximum spacing values. These are more subtle differences, but can be very useful. Here&#8217;s an example using default wordSpacing (100%,50%,150%) with justified text:</p>
<p><a class="lightbox" title="wordSpace10050150" href="http://blogs.adobe.com/tlf/files/2010/11/wordSpace10050150.jpg"><img class="alignnone size-full wp-image-83" title="wordSpace10050150" src="http://blogs.adobe.com/tlf/files/2010/11/wordSpace10050150.jpg" alt="" width="751" height="80" /></a></p>
<p>Here&#8217;s the same text set very slighly tighter by adjusting minimum &amp; maximum (wordSpace=&#8221;100%,30%,130%&#8221;):</p>
<p><a class="lightbox" title="wordSpace10030130" href="http://blogs.adobe.com/tlf/files/2010/11/wordSpace10030130.jpg"><img class="alignnone size-full wp-image-84" title="wordSpace10030130" src="http://blogs.adobe.com/tlf/files/2010/11/wordSpace10030130.jpg" alt="" width="751" height="79" /></a></p>
<p>And this is the same again set a little more loosely (wordSpace=&#8221;100%,80%,200%&#8221;):</p>
<p><a class="lightbox" title="wordSpace10080200" href="http://blogs.adobe.com/tlf/files/2010/11/wordSpace10080200.jpg"><img class="alignnone size-full wp-image-85" title="wordSpace10080200" src="http://blogs.adobe.com/tlf/files/2010/11/wordSpace10080200.jpg" alt="" width="754" height="95" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/tlf/2010/11/word-spacing.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

