PDA

Просмотр полной версии : Внедрение шрифта во flex из swf


SomeWater
09.09.2009, 19:58
Прочитал статью про внедрение шрифта во flex из swf, которая, в свою очередь, скомпилирована Flash Professional:
http://racer242.blogspot.com/2009/02/bitmap-antialiasing-flex.html
(в статье говорится про bitmap text, однако я внедряю с anti-alias)
Компилирую флешку во Flash Professional, проверяю внедрение шрифтов:
var fontList:Array = Font.enumerateFonts(false);
for (var i:uint=0; i<fontList.length; i++) {
trace("font: "+fontList[i].fontName+' style:'+fontList[i].fontStyle+' type:'+fontList[i].fontType);
}
Выдает:

font: Tahoma style:regular type:embedded
font: Tahoma style:bold type:embedded
Т.е. всё ок, swf готова.
Добавляю шрифты во флекс:
@font-face {
src: url("/assets/fonts/fonts.swf");
fontFamily: "Tahoma";
font-style:normal;
font-weight:normal;
}
@font-face {
src: url("/assets/fonts/fonts.swf");
fontFamily: "Tahoma";
fontStyle:normal;
fontWeight:bold;
}
Делаю при запуске flex-приложения трейс Font.enumerateFonts(false) и вижу, что внедрился почему-то только bold:
font: Tahoma style:bold type:embedded
Все варианты уже перепробовал, и без внедрения bold, и даже писать font-style:regular;
Все равно нормальный (не bold) шрифт Tahoma не хочет внедряться

kutuzov
12.09.2009, 13:20
Внедрение через swf имеет смысл если вам нужен шрифт без антиалайсинга, или если вы хотите подгружать шрифты в рантайме.

Для обычных проектов подходит такой вариант:
@font-face {
src: local("Trebuchet MS");
fontFamily: trebuchet;
}
@font-face {
src: local("Trebuchet MS");
fontFamily: trebuchet;
fontWeight: bold;
}

SomeWater
16.09.2009, 20:12
Ну да, ради гладкости букв и внедряю. На самом деле в вышеприведенном мною коде я для краткости не дописал тег, ради которого и внедряю шрифт:

font-anti-alias-type: advanced;

Но это не суть. К тому же нужный мне шрифт (Tahoma), как оказалось, не в каждой операционной системе установлен.