我遇到了在使用Flash文本引擎(FTE)的Flex組件中顯示泰文字符的問題,特別是在Mac OSX 10.6.8 Snow Leopard中。在Mac上的Flex FTE組件中顯示泰文字符的問題
這裏是我的編譯器字體管理器的柔性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>
...和另一名來自閃存的Unicode的table.xml:
<language-range>
<lang>Thai</lang>
<range>U+0E01-0E5B</range>
</language-range>
我的Flex應用最初在其樣式表中定義了以下內容:
Application {
fontSize: 12px;
fontFamily: Arial;
font-sharpness:0;
font-anti-alias-type:advanced;
}
到目前爲止,泰文字符在mx組件(如TextField)中正確呈現。但是,FTE組件(如TextLine)會將那些蹩腳外觀的盒子顯示爲替代品。我最初的猜測是,在flex-config.xml中聲明的某個編譯器字體管理器找不到適合泰語字符的正確系統字體。所以,我通過進入系統首選項>語言和文本>編輯列表來確保安裝了系統字體。然後我把fontFamily改成了Arial,Ayuthaya。仍然看到邪惡的箱子。
接下來我想,也許Arial字體可能會爲每個對應於泰文字符的unicode值分配一個框。所以它實際上覆蓋了Ayuthaya系統字體。所以我再次將fontFamily更改爲Ayuthaya,這與一個問題有關 - Ayuthaya對於非泰國字符看起來與Arial本質上不同。
這裏是我的問題 - 是否有一種侵略性較小的方式來支持泰語在FTE組件中,使得文本的外觀更接近Arial字體?我寧願不嵌入字體,因爲我受限於SWF大小。
我最終根據Flex應用程序中的區域設置動態設置了此樣式。對於特定語言環境字體不完全匹配Arial,我很好。 不要以爲這是一個真正的答案,但我相信如果Arial無法正確顯示它們,應該有一種方法可以回退到支持泰文字形的其他字體:P。 – P4ndaman