在Mac上的Flex FTE组件中显示泰语字符时出现问题

时间:2011-11-14 16:24:58

标签: flex fonts flex4 thai

我遇到了在使用Flash文本引擎(FTE)的Flex组件中显示泰语字符的问题,特别是在Mac OSX 10.6.8 Snow Leopard上。

这是flex-config.xml中我的编译器字体管理器的模糊:

<flex-config>

    <target-player>10.2.0</target-player>

    <!-- Specifies the version of the compiled SWF -->
    <swf-version>11</swf-version>

    <compiler>
      <!-- Specifies the locales for internationalization. -->
      <locale>
          <locale-element>en_US</locale-element>
      </locale>

      <fonts>
          <!-- ... -->
          <!-- Compiler font manager classes, in policy resolution order-->
          <managers>
              <manager-class>flash.fonts.JREFontManager</manager-class>
              <manager-class>flash.fonts.BatikFontManager</manager-class>
              <manager-class>flash.fonts.AFEFontManager</manager-class>
              <manager-class>flash.fonts.CFFFontManager</manager-class>
          </managers>
      <!-- ... -->
        </fonts>
    </compiler>
</flex-config>

<flex-config> <target-player>10.2.0</target-player> <!-- Specifies the version of the compiled SWF --> <swf-version>11</swf-version> <compiler> <!-- Specifies the locales for internationalization. --> <locale> <locale-element>en_US</locale-element> </locale> <fonts> <!-- ... --> <!-- Compiler font manager classes, in policy resolution order--> <managers> <manager-class>flash.fonts.JREFontManager</manager-class> <manager-class>flash.fonts.BatikFontManager</manager-class> <manager-class>flash.fonts.AFEFontManager</manager-class> <manager-class>flash.fonts.CFFFontManager</manager-class> </managers> <!-- ... --> </fonts> </compiler> </flex-config>

...和另一个来自flash-unicode-table.xml:

<language-range>
    <lang>Thai</lang>
    <range>U+0E01-0E5B</range>
</language-range>

我的flex应用程序最初在其样式表中定义了以下内容: <language-range> <lang>Thai</lang> <range>U+0E01-0E5B</range> </language-range>

到目前为止,泰语字符在mx组件(如TextField)中正确呈现。但是,像TextLine这样的FTE组件会将那些看起来很糟糕的盒子作为替代品。我最初的猜测是,在flex-config.xml中声明的某个编译器字体管理器没有找到正确的系统字体来回退到泰语字符。所以,我通过转到系统偏好设置&gt;确保安装了系统字体。语言和文字&gt;编辑列表。然后我将fontFamily改为Arial,Ayuthaya。仍然看到了邪恶的盒子。

接下来我想,也许Arial字体可能为每个与泰语字符对应的unicode值分配一个框。所以它有效地覆盖了Ayuthaya系统字体。所以我再次将fontFamily更改为Ayuthaya,这也解决了一个问题 - Ayuthaya看起来与Arial在非泰语字符方面有着明显的不同。

这是我的问题 - 在FTE组件中支持泰语是否有一种侵入性较小的方式,使文本的外观更接近Arial字体?我宁愿不嵌入字体,因为我受SWF大小限制。

1 个答案:

答案 0 :(得分:0)

根据Adobe的说法,看起来根据区域设置选择字体是正确的方法。以下是我们在论坛上发帖的回复:

“传统文本字段(mx组件)使用字体后退并且刚刚发生在您之前正常工作但不一定像算法后退支持的样式。作为专业文本布局框架的FTE对字体选择更严格。简而言之,你必须根据预期的脚本区域选择合适的字体。对于泰国人来说,Arial不是一个正确的选择。请尝试像Angsana或Jasmine或者任何支持泰语的脚本。“

适合我:P