Не работает шрифт AS3 из файла ресурсов - PullRequest
0 голосов
/ 09 ноября 2010

Я провел много поисков по этому вопросу и пока не смог найти решение, я надеюсь, что совет здесь может мне помочь.

Я настроил проект (так же, как и ямногочисленные проекты до этого), который использует отдельные шрифты SWF для предоставления шрифтов для моего проекта.После загрузки я регистрирую эти шрифты в глобальном каталоге шрифтов с помощью Font.registerFont ().Мои текстовые стили взяты из внешне загруженной таблицы стилей.

По какой-то причине я не могу понять, когда я пытаюсь создать textField и использовать мои встроенные шрифты, текст исчезает с экрана.Если при создании textField я установил для embedFonts значение false, то текст будет отображаться в правильном размере и цвете (как взято из таблицы стилей), но, очевидно, с системным шрифтом по умолчанию, где мой хороший пользовательский шрифт должен быть.

Код, который я использую ниже:

TTWTextHelper.traceAvailableFonts();
TTWTextHelper.traceStyleSheet(myStyleSheet);

var myText = new TextField;
with (myText)
{
     width = 250;

     autoSize = TextFieldAutoSize.LEFT;

     selectable = false;

     antiAliasType = AntiAliasType.ADVANCED;
     styleSheet = myStyleSheet;
     embedFonts = true;
     border = true;

     multiline = true;
     wordWrap = true;

     htmlText = "<span class='body'>Test</body>";
}
myText.x = 300;
myText.y = 300;
addChild(myText);

Я знаю, что (очевидно) мои шрифты встраиваются, так как при запуске TTWTextHelper.traceAvailableFonts () я получаю два перечисленных шрифта.

public static function traceAvailableFonts():void
{
   /*
    * See what fonts we have to play with
    */

   var embeddedFonts:Array = Font.enumerateFonts(false);
   embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);

   trace("how many fonts? " + embeddedFonts.length);
   Tools.pr(embeddedFonts); 
}

приводит к:

how many fonts? 2
(array) {
 [0] => (object) [object MarkerFeltThinPlain]
 [1] => (object) [object MarkerFeltWidePlain]
}

, и я знаю, что моя таблица стилей загружена и корректно анализируется действием, как при запуске TTWTextHelper.traceStyleSheet (myStyleSheet);я получаю стили, перечисленные правильно:

public static function traceStyleSheet(_styleSheet:StyleSheet):void
{
   trace("Tracing StyleSheet: " + _styleSheet);

   var styles:Array = _styleSheet.styleNames;

   for each(var style : * in styles)
   {
     trace("Style Name: " + style);
     var thisStyle:Object = _styleSheet.getStyle(style);
     Tools.pr(thisStyle); 
   }
}

приводит к:

Tracing StyleSheet: [object StyleSheet]
Style Name: a
(object) {
    [color] => (string) #ff0000
    [leading] => (string) 2
    [fontFamily] => (string) "MarkerFeltThin-Plain"
    [fontSize] => (string) 15
    [textAlign] => (string) left
}

Style Name: .title
(object) {
    [color] => (string) #ff0000
    [leading] => (string) 2
    [fontFamily] => (string) "MarkerFeltWide-Plain"
    [fontSize] => (string) 20
    [textAlign] => (string) left
}

Style Name: .body
(object) {
    [color] => (string) #4b4b4b
    [leading] => (string) 2
    [fontFamily] => (string) "MarkerFeltThin-Plain"
    [fontSize] => (string) 15
    [textAlign] => (string) left
}

Любой совет очень ценится!Спасибо!

Ответы [ 2 ]

1 голос
/ 09 ноября 2010

Иногда встраивание файлов шрифтов с помощью [Embed] вместо swf помогает (столкнулся с этим недавно).

1 голос
/ 09 ноября 2010

Попробуйте проверить свойство fontType для шрифтов, если свойство fontType имеет значение «embeddedCFF», они не будут отображаться с TextField, поскольку для визуализации вам потребуется Flash Text Engine.

...