特に Mac OSX 10.6.8 Snow Leopard で、Flash Text Engine (FTE) を使用する Flex コンポーネントでタイ文字を表示する際に問題が発生しています。
これは、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>
...そして flash-unicode-table.xml からの別のもの:
<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;
}
これまでのところ、タイ語の文字は TextField などの mx コンポーネントで正しくレンダリングされます。ただし、TextLine などの FTE コンポーネントは、見栄えの悪いボックスを代替として表示します。私の最初の推測では、flex-config.xml で宣言されたコンパイラ フォント マネージャの 1 つが、タイ語の文字にフォールバックする適切なシステム フォントを見つけられなかったということでした。そこで、[システム環境設定] > [言語とテキスト] > [リストの編集] に移動して、システム フォントがインストールされていることを確認しました。次に、fontFamily を Arial、Ayuthaya に変更しました。まだ悪の箱を見ていました。
次に、おそらく Arial フォントが、タイ文字に対応する各 Unicode 値にボックスを割り当てているのではないかと考えました。そのため、Ayuthaya システム フォントを効果的にオーバーライドしていました。そこで、fontFamily をもう一度 Ayuthaya だけに変更すると、これで 1 つの問題が解決しました。
これが私の質問です。テキストの外観が Arial フォントに近づくように、FTE コンポーネントでタイ語をサポートする侵襲性の少ない方法はありますか? SWF のサイズに制約があるため、フォントを埋め込まないほうがよいでしょう。