Встраивание шрифтов Flex / Flash - PullRequest
       26

Встраивание шрифтов Flex / Flash

0 голосов
/ 11 сентября 2010

У меня есть проект Flex 4, который существует в гибридном состоянии Flex / Flash AS3. Я объявил таблицу стилей в базовом компоненте окна:

<fx:Style source="styles/styles.css" />

И все мои компоненты Flex могут отображать этот шрифт. Таблица стилей выглядит следующим образом:

@font-face {
    src: url("../fonts/Whitney-Light-Pro.otf");
    fontFamily: WhitneyLight;
    advancedAntiAliasing: true;
}

...

.subBranding {
    fontFamily: WhitneyLight;
    fontSize: 20;
    color: #000000;
}

И Flex может отображать указанный шрифт с заданным styleName subBranding. Проблема возникает, когда я пытаюсь ссылаться на эти шрифты в объекте TextFormat. Я могу ссылаться на них по их правильному имени шрифта («Whitney Light»), и он будет отображаться, пока для embedFonts не установлено значение true в TextField, который содержит текст / шрифт. Это вероятно потому, что у меня на самом деле установлены шрифты. Когда я называю их WhitneyLight:

new TextFormat("WhitneyLight", 18, 0x000000);

В итоге я получаю Times или что-то в этом роде с embedFonts = false и ничего с embedFonts = true, потому что «WhitneyLight» не существует согласно TextFormat. Затем я перечислил шрифты в том, что касается объекта Font:

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 + ".");
}

И вывод, который я получаю:

Fontarray length: 1
FONT 0:: name: WhitneyLight is embedded as type: embeddedCFF.

Насколько я понимаю, мой шрифт встроен. Какого черта?

Есть идеи?

1 Ответ

1 голос
/ 12 сентября 2010

В таблицу стилей мне нужно встроить отдельный набор шрифтов со стилем "embedAsCFF: false;" задавать. При трассировке шрифт отображается как внедренный как тип «внедренный» вместо «внедренный CFF» и функционирует в объекте TextFormat. Хотя точного ответа там не было, я нашел подсказку в некоторых слайдах из презентации, в которой Колин Мок дебютировал с интерактивностью Flash CS3 / Flex Builder 3, где он использовал метатег [Embed] для встраивания с embedAsCFF со значением false. Я догадался, что был соответствующий стиль CSS, и вышел победителем.

Так что теперь у меня есть WhitneyLight и WhitneyLightFlash, один для использования с метками Spark / Halo, а другой для спаривания объектов TextFormat / TextField.

...