Я работаю над приложением, которое должно динамически загружать шрифты на основе шрифтов, используемых в данном документе, который открывает пользователь.Шрифты используются в 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 не создается правильно и не имеет содержимого, или если основное приложение не может его загрузить.Буду признателен за любую помощь по крайней мере, чтобы сузить это.
Я был бы признателен за любую помощь, которую я могу получить по этому вопросу, так как я застрял в этой проблеме в течение некоторого времени, и это ключевая частьприложение.
Спасибо всем заранее.