<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:clearspace="http://www.jivesoftware.com/xmlns/jive/rss" version="2.0">
  <channel>
    <title>Adobe Community: Message List - Reliably calculating character bounds for Right-To-Left languages using flash.text.engine.* classes?</title>
    <link>https://forums.adobe.com/community/labs/archives/flashplayer11-4?view=discussions</link>
    <description>Most recent forum messages</description>
    <language>en</language>
    <pubDate>Thu, 09 Aug 2012 13:04:55 GMT</pubDate>
    <generator>Jive Engage 7.0.0.1  (http://jivesoftware.com/products/)</generator>
    <dc:date>2012-08-09T13:04:55Z</dc:date>
    <dc:language>en</dc:language>
    <item>
      <title>Re: Reliably calculating character bounds for Right-To-Left languages using flash.text.engine.* classes?</title>
      <link>https://forums.adobe.com/message/4609561?tstart=0#4609561</link>
      <description>&lt;!-- [DocumentBodyStart:808497a9-5d89-4dd5-8b56-21ba70c36be3] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Update: I was missing something obvious! &lt;span aria-label="Happy" class="emoticon-inline emoticon_happy" style="height:16px;width:16px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;It seems like TextLine's getAtomTextBlockBeginIndex and getAtomTextBlockEndIndex methods were exactly what I was looking for. It just took me a while to find them and realize that. So to convert from a logical (unicode) character index to a display (atom) index, you can do this...&lt;/p&gt;&lt;p style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;private function getCharBounds( charIndex:int ):Rectangle {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for ( var childIndex:int = 0; childIndex &amp;lt; textContainer.numChildren; childIndex++ ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var textLine:TextLine = textContainer.getChildAt( childIndex ) as TextLine;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for ( var atomIndex:int = 0; atomIndex &amp;lt; textLine.atomCount; atomIndex++ ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var charIndexRangeStart:int = textLine.getAtomTextBlockBeginIndex( atomIndex );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var charIndexRangeStop:int = textLine.getAtomTextBlockEndIndex( atomIndex );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( charIndex &amp;gt;= charIndexRangeStart &amp;amp;&amp;amp; charIndex &amp;lt;= charIndexRangeStop ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var rectangle:Rectangle =
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;textLine.getAtomBounds(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atomIndex );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var point:Point =
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;textContainer.globalToLocal(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;textLine.localToGlobal(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Point( rectangle.x, rectangle.y ) ) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rectangle.x = point.x;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rectangle.y = point.y;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return rectangle;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;
}&lt;/pre&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:808497a9-5d89-4dd5-8b56-21ba70c36be3] --&gt;&lt;img src='/beacon?t=1415938741780' /&gt;</description>
      <pubDate>Thu, 09 Aug 2012 13:04:55 GMT</pubDate>
      <author>forums_noreply@adobe.com</author>
      <guid>https://forums.adobe.com/message/4609561?tstart=0#4609561</guid>
      <dc:date>2012-08-09T13:04:55Z</dc:date>
      <clearspace:dateToText>2 years 3 months ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Reliably calculating character bounds for Right-To-Left languages using flash.text.engine.* classes?</title>
      <link>https://forums.adobe.com/message/4609531?tstart=0#4609531</link>
      <description>&lt;!-- [DocumentBodyStart:f64ca259-2764-4138-9a2c-5447d526cb7a] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Note to myself (and others) - this post seems very promising:&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-message-small" data-containerId="4311" data-containerType="14" data-objectId="3155597" data-objectType="2" href="https://forums.adobe.com/message/3155597#3155597"&gt;http://forums.adobe.com/message/3155597&lt;/a&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;More to follow soon, hopefully!&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:f64ca259-2764-4138-9a2c-5447d526cb7a] --&gt;</description>
      <pubDate>Thu, 09 Aug 2012 12:40:44 GMT</pubDate>
      <author>forums_noreply@adobe.com</author>
      <guid>https://forums.adobe.com/message/4609531?tstart=0#4609531</guid>
      <dc:date>2012-08-09T12:40:44Z</dc:date>
      <clearspace:dateToText>2 years 3 months ago</clearspace:dateToText>
      <clearspace:replyCount>1</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Reliably calculating character bounds for Right-To-Left languages using flash.text.engine.* classes?</title>
      <link>https://forums.adobe.com/message/4607513?tstart=0#4607513</link>
      <description>&lt;!-- [DocumentBodyStart:1eb0d533-2f28-4086-b3e8-44902e79eded] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;I just &lt;a class="jive-link-external-small" href="https://bugbase.adobe.com/index.cfm?event=bug&amp;amp;id=3305863" rel="nofollow"&gt;filed a bug in the Adobe bugbase&lt;/a&gt; about this, but I thought maybe the community could help with a workaround (or point me in another direction if I'm looking at it wrong).&lt;/p&gt;&lt;p style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I don't know an elegant way to describe the defect, but it's something like this:&lt;/p&gt;&lt;p style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create a Vector of ContentElements and add a TextElement containing a right-to-left string in a language such as Hindi (ex. &lt;span style="color: #000000; font-family: Helvetica; font-size: 13px; background-color: #ffffff;"&gt;"वह बाग़ में दोपहर का खाना "&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Create a TextBlock with a GroupElement and use it to create a TextLine to display the right-to-left string&lt;/li&gt;&lt;li&gt;Walk through each character in the right-to-left string and try to calculate its boundaries using the TextLine's "getAtomBounds" method.&lt;/li&gt;&lt;/ol&gt;&lt;p class="p1" style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p1"&gt;What I'm seeing in my test project is that the number of characters (atoms?) the TextLine reports is fewer than the number of characters that were in the original string. I was under the impression that TextLine would offer some method of automatically converting from a logical character index into a display index (to keep things simpler for the end user). That doesn't seem to be the case, and I don't see any way to use TextLine's methods to do that conversion.&lt;/p&gt;&lt;p class="p1" style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="p1"&gt;Am I overlooking something obvious?&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:1eb0d533-2f28-4086-b3e8-44902e79eded] --&gt;</description>
      <pubDate>Wed, 08 Aug 2012 18:01:51 GMT</pubDate>
      <author>forums_noreply@adobe.com</author>
      <guid>https://forums.adobe.com/message/4607513?tstart=0#4607513</guid>
      <dc:date>2012-08-08T18:01:51Z</dc:date>
      <clearspace:dateToText>2 years 3 months ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
  </channel>
</rss>

