Отличия отрисовки шрифтов Flex от 4.1 до 4.5 - PullRequest
6 голосов
/ 11 апреля 2011

Я сейчас обновляю приложение с Flex 4.1 до 4.5

Мы заметили, что шрифт Arial отображается по-разному в двух версиях при использовании в небольших размерах.

Вот простой пример приложения:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/mx";
        @font-face { 
            src: url("/assets/fonts/ARIAL.ttf"); 
            fontFamily: arial; 
            embedAsCFF: true; 
        }
        @font-face { 
            src: url("/assets/fonts/ARIALBD.ttf"); 
            fontFamily: arial; 
            embedAsCFF: true; 
            font-weight: bold;
        }
        global
        {
            font-family: arial;
        }
    </fx:Style>
    <s:Label text="Hello world" fontWeight="bold" x="20" y="20"  />
</s:Application>

При запуске с 2 различными SDK, вот изображение рендеринга шрифта, которое мы получаем:

Example of font issues

Обратите внимание, что в 4.5 шрифт выглядит слегка сжатым.

В чем причина этого, и как мы можем это решить?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Мое лучшее предположение заключается в том, что это связано с изменениями, которые были сделаны для поддержки шрифтов на портативных устройствах.Чтобы исправить это, вам, возможно, придется немного поиграть с настройками таблицы стилей.

CSS Media Queries
Теперь вы можете использовать правила @media в своих таблицах стилей, чтобыфильтровать правила CSS на основе классификации DPI устройства.В настоящее время вы можете отфильтровать два свойства: os-platform и application-dpi.Вот пример фильтрации по ним, например, для установки шрифта кнопки (из предварительной версии Adobe):

@media (os-platform: "Android") and (application-dpi: 240) {
s|Button {
     fontSize: 10;
}
1 голос
/ 04 мая 2011

Для временного исправления просто укажите версию SWF 10 в файле flex-config.xml

look for <swf-version>11</swf-version> and make that a 10

(the "target-player" tag remains as 10.2.0)

Этот конфиг позволит вам использовать новый API 10.2, но я думаю, что он пропустит Оптимизацию аппаратного обеспечения (возможно, не StageVideo ... предупреждение: я не уверен и еще не тестировал. Единственное, что я сделал, это проверьте, что там были специфические методы 10.2, например "requestSoftKeyboard")

Полагаю, что эта проблема как-то связана с новым «субпиксельным рендерингом текста», продвигаемым Adobe в версии 10.2 ИЛИ возможно, новый плеер просто отображает текст по-другому.

Кстати, эта проблема действительно ужасна, мелкие шрифты становятся размытыми, а шрифты среднего размера заметно раздавлены!

Любое реальное исправление, позволяющее нам настроить таргетинг на SWF 11, пожалуйста, сообщите нам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...