Проблемы с отображением тайских символов в компонентах Flex FTE на Mac

#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