У меня есть проект 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.
Насколько я понимаю, мой шрифт встроен. Какого черта?
Есть идеи?