Как называется определение шрифтов, загруженных во время выполнения, созданных с помощью fontswf? - PullRequest
0 голосов
/ 12 апреля 2011

Я столкнулся с утилитой 'fontswf', чтобы встроить шрифты TTF в SWF, и я изо всех сил пытаюсь загрузить их из моего приложения во время выполнения.Все примеры, которые я нахожу в Интернете, относятся к загрузке шрифта с помощью [Embed], но на самом деле я загружаю их с помощью flash.display.Loader и из того, что я собираю, когда Loader.contentLoaderInfo запускает Event.INIT, мне нужно зарегистрировать шрифтПримерно так:

public function handleLoaderComplete( event:Event ):void {
  var FontClass:Class = event.target.applicationDomain.getDefinition( fontName );
  Font.registerFont( FontClass );
}

Проблема в том, что я не знаю, что передать как fontName.Я генерирую свой SWF через:

$ fontswf -a belshaw -o belshaw.swf belshaw.ttf

Но когда я пытаюсь вызвать getDefinition ('belshaw'), я получаю сообщение об ошибке 'Variable belshaw не определен'.Любые предложения о том, как это сделать?

Альтернативой является создание моих файлов SWF с помощью шаблонов .as-файлов и их компиляции, но я бы предпочел использовать встроенный инструмент, такой как fontswf, если он уже существует.

Спасибо

Руй

Ответы [ 2 ]

0 голосов
/ 12 апреля 2011

Вы можете использовать декомпилятор psoftware для декомпиляции SWF шрифта, чтобы увидеть, какие шрифты встроены.

Или ...

Вы можете циклически проходить шрифты во встроенном файле во время выполнения:1005 *

import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
import flash.events.Event;

var fontLoader:Loader = new Loader();
var fontLoaderInfo:LoaderInfo = fontLoader.contentLoaderInfo;

fontLoaderInfo.addEventListener(Event.COMPLETE, onFontLoaded);

fontLoader.load(new URLRequest("Verdana.swf"));

function onFontLoaded (e:Event):void {
   var info:LoaderInfo = e.currentTarget as LoaderInfo;
   var loader:Loader = info.content as Loader;
   var embeddedFonts:Array = Font.enumerateFonts(false);
   for(var i:Number = 0; i < embeddedFonts.length; i++){
      var item:Font = embeddedFonts[i];
      trace("[" + i + "] name:" + item.fontName + ", style: " + item.fontStyle + ", type: " + item.fontType);
   }
}

Это не проверено, я нашел его здесь

0 голосов
/ 12 апреля 2011

Я нахожусь в проекте, который должен был позволить пользователям динамически загружать свои собственные шрифты. Мы попытались заставить fontswf работать и столкнулись с проблемой после проблемы, и ужасная документация не помогла. В конце концов мы просто создали шаблон и используем скрипт bash для встраивания файла .ttf в новый файл .swf, служба возвращает URL-адрес этого файла .swf, затем основное приложение загружает этот файл .swf и регистрирует шрифт.

Я знаю, что это не совсем ответ на ваш вопрос, но я знаю, что это работает. ;)

...