Apache flex 在Mac上的Flex FTE组件中显示泰语字符时出现问题
我遇到了在使用Flash文本引擎(FTE)的Flex组件中显示泰国字符的问题,特别是在Mac OSX 10.6.8 Snow Leopard上 以下是我在flex-config.xml中的编译器字体管理器简介: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中声明的一个编译器字体管理器没有找到适合泰国字符的系统字体。因此,我通过进入系统首选项>语言和文本>编辑
到目前为止,泰国字符在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;
}