2011-11-14 15 views
0

我遇到了在使用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大小。

+0

我最終根據Flex應用程序中的區域設置動態設置了此樣式。對於特定語言環境字體不完全匹配Arial,我很好。 不要以爲這是一個真正的答案,但我相信如果Arial無法正確顯示它們,應該有一種方法可以回退到支持泰文字形的其他字體:P。 – P4ndaman

回答

0

看起來像根據語言環境選擇字體是根據Adobe的正確方法。這裏有一個回覆我的帖子在他們的論壇上:

「遺留文本字段(mx組件)使用字體後退,只是發生在你以前工作正常,但不一定是像算法回退支持的風格。文字佈局框架對字體選擇的要求更爲嚴格,簡而言之,您必須根據您期望的腳本區域選擇適當的字體,Arial不是泰國字符的正確選擇,請嘗試像Angsana或Jasmine或anythig支持泰國腳本。

適用於我:P