Flex 4 встраивает шрифты для компонентов Spark

У меня проблема со встраиванием шрифтов с помощью Open Source Flex 4.5 SDK (Hero), хотя у меня те же проблемы с Flex 4 Open Source SDK. Я добавил несколько файлов ttf в каталог ресурсов структуры моего проекта и пытаюсь получить доступ к шрифтам в моем файле CSS следующим образом:

@font-face { 
src: url("../assets/DroidSans.ttf"); 
fontFamily: DroidSans;
embedAsCFF: true; 
}

Этот конкретный шрифт требуется использовать для ряда элементов управления Spark на протяжении всего проекта (поэтому для параметра embedAsCFF установлено значение true, хотя я считаю, что этот параметр в любом случае является необязательным). Однако ни один из компонентов Spark не отображает этот шрифт, если он установлен в свойстве fontFamily. Я получаю эту ошибку при компиляции для каждого компонента искры, на котором я пытаюсь установить шрифт:

предупреждение: для (controlName) указан несовместимый встроенный шрифт DroidSans. Этот компонент требует, чтобы встроенный шрифт был объявлен с помощью embedAsCff = true.

Как ни странно, указанный выше шрифт работает с компонентами mx, даже если для параметра embedAsCFF установлено значение true (из того, что я искал по этому поводу, это должно быть установлено значение false для компонентов mx и true для spark).

Приведенный выше код также работает в Flash Builder, однако этот проект необходимо разработать с использованием Open Source SDK, где он не работает.

Любые идеи? Наверняка у кого-то была такая же проблема?

При запуске следующего скрипта он показывает, что шрифты «встроены», но не как «CFFEmbedded». В документации Adobe указано, что для них нужно указать "CFFEmbedded".

var fontArray:Array = Font.enumerateFonts(false); 
trace("Fontarray length: " + fontArray.length); 
for(var j:int = 0; j < fontArray.length; j++) { 
    var thisFont:Font = fontArray[j]; 
    trace("FONT " + j + ":: name: " + thisFont.fontName + " embedded as type:" + thisFont.fontType + "."); 
} 

Спасибо

Боб

[РЕДАКТИРОВАТЬ]

ОК - наконец-то мне удалось встроить шрифт. Я пробовал SWC из CS4, SWC из Flash Builder 4, SWF из CS4 и Flash Builder ....

Возможное исправление

1) Упакуйте шрифт в SWF в Flash Builder 4 2) Ссылайтесь на скомпилированный SWF, используя следующий CSS.

    @font-face {
        cff: false;
        src: url('../bin/DroidSansFont.swf');
        fontFamily: DroidSansMX;
    }

    @font-face {
        cff: true;
        src: url('../bin/DroidSansFont.swf');
        fontFamily: DroidSans;

    }

Самое безумное - это использование директивы cff: true. Вся документация говорит об использовании "embedAsCFF". Выдает ошибку при использовании атрибута cff - вроде работает.

Понятия не имею - может ли кто-нибудь присоединиться к некоторым идеям?


person bob    schedule 06.01.2011    source источник
comment
using cff directly, спасатель !! и не требует, чтобы шрифт был упакован в файл swf   -  person gone    schedule 29.05.2016


Ответы (3)


Вероятно, вы используете более старый SDK и компилятор, cff был переименован в embedAsCFF в последних сборках SDK, начиная со сборки Flex SDK 4.0.7972, см. Это обсуждение http://forums.adobe.com/thread/36399 за комментарий инженера Flex SDK, который доказывает, что

person JabbyPanda    schedule 17.01.2011

У меня была похожая проблема, однако мне не удалось загрузить какой-либо скомпилированный файл шрифта SWF (Flex SDK 4.1). Наконец, я смог решить эту проблему с помощью этого кода:

MXML:

<fx:Style>
    @namespace s "library://ns.adobe.com/flex/spark";
    @namespace mx "library://ns.adobe.com/flex/mx";
    @font-face {
        src: url("fonts/files/HelveticaNeueLTPro-Md.otf");
        font-family: HelveticaNeueLTPro-Md;
        embed-as-cff: true;
    }

    @font-face {
        src: url("fonts/files/HelveticaNeueLTPro-Bd.otf");
        font-family: HelveticaNeueLTPro-Bd;
        embed-as-cff: true;
    }

    .helvetica {
        font-family: HelveticaNeueLTPro-Md;
        font-lookup: embeddedCFF;
    }
    .helveticaBold {
        font-family: HelveticaNeueLTPro-Bd;
        font-lookup: embeddedCFF;
    }
</fx:Style>

Как видите, это шрифт HelveticaNeue (обычный и полужирный) в формате OpenType, но я добился успеха и с TrueType. Важным атрибутом CSS был «font-lookup: embeddedCFF». Как только я не установил это, компиляция работала, но встроенный шрифт никогда не отображался. То же самое и с загрузкой SWF, созданных утилитой fontswf - у меня тоже никогда не работало.

person Jan Petzold    schedule 30.05.2011

Описанная проблема, вероятно, вызвана использованием набора менеджеров шрифтов по умолчанию. Вам необходимо использовать CFFFontManager. Обычно вы определяете всех четырех возможных менеджеров, чтобы разрешить некоторый откат. Обычно это проблема приложения MX, пытающегося использовать искровые компоненты.

см. также: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7e09.html

и, возможно,: https://docs.sonatype.org/display/FLEXMOJOS/Using+Adobe+Font+Manager+to+embed+fonts

Конфигурация для Flexmojos следующая (вы можете использовать аналогичные для файлов flex-config.xml, см. Ссылку выше):

<fonts> 
  <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> 

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

person jediz    schedule 09.09.2013