#apache-flex #fonts #flex4 #thai
#apache-flex #шрифты #flex4 #Тайский
Вопрос:
Я сталкиваюсь с проблемами отображения тайских символов в компонентах Flex, которые используют Flash Text Engine (FTE), в частности, в Mac OSX 10.6.8 Snow Leopard.
Вот краткое описание моего компилятора font manager в 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>
В таблице стилей моего приложения 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.
Комментарии:
1. В итоге я установил этот стиль динамически на основе настроек локали в моем приложении flex. Меня устраивает, что шрифт не совсем соответствует Arial для определенной локали. Не думаю, что это реальный ответ, хотя я считаю, что должен быть способ вернуться к какому-либо другому шрифту, поддерживающему тайские глифы, если Arial не может отобразить их должным образом: P.
Ответ №1:
Похоже, что выбор шрифта на основе локали является правильным подходом в соответствии с Adobe. Вот ответ на мой пост на их форумах:
"В устаревшем текстовом поле (компонент mx) используется font fall back, и раньше у вас все работало нормально, но не обязательно поддерживался такой стиль, как алгоритмический fall back. FTE как профессиональная платформа верстки текста более строго относится к выбору шрифта. Короче говоря, вы должны выбрать подходящий шрифт для ожидаемого региона вашего скрипта. Arial - это не просто правильный выбор для тайских символов. Пожалуйста, попробуйте что-нибудь вроде Angsana или Jasmine или что-нибудь, поддерживающее тайский скрипт ".
У меня работает: P