Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在Mac上的Flex FTE组件中显示泰语字符时出现问题_Apache Flex_Fonts_Flex4_Thai - Fatal编程技术网

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

Apache flex 在Mac上的Flex FTE组件中显示泰语字符时出现问题,apache-flex,fonts,flex4,thai,Apache Flex,Fonts,Flex4,Thai,我遇到了在使用Flash文本引擎(FTE)的Flex组件中显示泰国字符的问题,特别是在Mac OSX 10.6.8 Snow Leopard上 以下是我在flex-config.xml中的编译器字体管理器简介: 到目前为止,泰国字符在mx组件(如TextField)中正确呈现。然而,FTE组件(如TextLine)将这些外观糟糕的框显示为替代。我最初的猜测是,flex-config.xml中声明的一个编译器字体管理器没有找到适合泰国字符的系统字体。因此,我通过进入系统首选项>语言和文本>编辑

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

以下是我在flex-config.xml中的编译器字体管理器简介:

到目前为止,泰国字符在mx组件(如TextField)中正确呈现。然而,FTE组件(如TextLine)将这些外观糟糕的框显示为替代。我最初的猜测是,flex-config.xml中声明的一个编译器字体管理器没有找到适合泰国字符的系统字体。因此,我通过进入系统首选项>语言和文本>编辑列表来确保安装了系统字体。然后我把fontFamily改成了Arial,Ayuthaya。我仍然看到了邪恶的盒子

接下来,我想可能是Arial字体为对应于泰国字符的每个unicode值分配了一个框。因此,它实际上覆盖了Ayuthaya系统字体。所以我再次将fontFamily改为Ayuthaya,这解决了一个问题——Ayuthaya看起来与非泰国字符的Arial有本质的不同


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

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

“传统文本字段(mx组件)使用字体回退和刚刚发生的工作很好,但不一定像算法回退那样受支持的样式。FTE作为专业文本布局框架,在字体选择方面更严格。简而言之,您必须根据预期脚本的区域选择适当的字体。Arial不仅仅是泰国字符的正确选择。请尝试像Angsana或Jasmine或任何支持泰国文字的东西。”


适用于我:p

我最终根据flex应用程序中的区域设置动态设置了此样式。我对字体与特定地区的Arial不完全匹配感到满意。不过,不要认为这是一个真正的答案——我相信如果Arial无法正确显示泰国字形,应该有办法退回到支持泰国字形的其他字体:P。
<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>
<language-range>
    <lang>Thai</lang>
    <range>U+0E01-0E5B</range>
</language-range>
Application {
    fontSize: 12px;
    fontFamily: Arial;
    font-sharpness:0;
    font-anti-alias-type:advanced;
}