Я работаю над приложением, которому необходимо динамически загружать шрифты на основе шрифтов, используемых в данном документе, который открывает пользователь. Шрифты используются в RichEditableTextControl, поэтому должны быть в формате CFF.
Если я добавлю код:
[Embed(source="/assets/fonts/AvenirLTStd Book.otf",
fontFamily="EmbedAvenir LT Std 45 Book",
mimeType="application/x-font",
embedAsCFF="true")]
public const embeddedFont:Class;
в основной SWF текст отображается правильно со встроенным шрифтом, но при перемещении кода в отдельный файл и добавлении загрузчика в соответствии с информацией, которую я нашел по следующей ссылке, шрифт не загружается - http://www.scottgmorgan.com/blog/index.php/2007/06/18/runtime-font-embedding-in-as3-there-is-no-need-to-embed-the-entire-fontset-anymore/
Код загрузчика:
private function loadFont(url:String):void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fontLoaded);
loader.load(new URLRequest(url));
}
private function fontLoaded(event:Event):void {
var FontLibrary:Class = event.target.applicationDomain.getDefinition("FontAvenirLTStd") as Class;
Font.registerFont(FontLibrary.embeddedFont);
}
В строке Font.registerFont
отображается ошибка, указывающая на то, что передаваемый параметр не может быть нулевым. Я проверил в режиме отладки, и проблема, похоже, в том, что класс существует, но не имеет содержимого. Создается экземпляр класса FontLibrary, но единственной дочерней записью в отладчике является _prototype, поэтому попытка доступа к свойству embeddedFont
возвращает значение undefined.
В настоящий момент SWF-шрифт шрифта находится в папке с ресурсами основного проекта, поэтому я не считаю, что должны быть какие-либо ограничения безопасности, и, как я уже сказал, часть загрузки SWF-файла работает.
Одна вещь, которая мешает моей диагностике, заключается в том, что я не уверен, что проблема в том, что SWF шрифта создается неправильно и не имеет содержимого, или если основное приложение не может его загрузить. Любая помощь по крайней мере в возможности сузить круг вопросов будет оценена.
Я был бы признателен за любую помощь, которую я могу получить в этом, поскольку я застрял в этой проблеме в течение некоторого времени, и это ключевая часть приложения.
Заранее всем спасибо.