AlexCooper
16.10.2013, 17:17
Здравствуйте.
Имеем отдельную swf с кодом
package me.inpictures.data {
import flash.text.Font;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.Sprite;
public class FontEmbed extends Sprite{
/* REGULAR */
[Embed(source="../../../lib/MyriadPro-Regular.otf"
,fontFamily= 'MB'
,fontStyle = 'normal'
,fontWeight = 'normal'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2Pro:Class;
/* BOLD */
[Embed(source="../../../lib/MyriadPro-Bold.otf"
,fontFamily= 'MB'
,fontStyle = 'normal'
,fontWeight = 'bold'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProBold:Class;
/* ITALIC */
[Embed(source="../../../lib/MyriadPro-It.otf"
,fontFamily='MB'
,fontStyle = 'italic'
,fontWeight = 'normal'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProIT:Class;/*!!!*/
/* BOLD + ITALIC */
[Embed(source="../../../lib/MyriadPro-BoldIt.otf"
,fontFamily= 'MB'
,fontStyle = 'italic'
,fontWeight = 'bold'
,mimeType= 'application/x-font'
,embedAsCFF = 'false'
)]
public static var Myriad2ProBoldIT:Class;
/* CONDENSED */
[Embed(source="../../../lib/MyriadPro-Cond.otf"
,fontFamily="MC"
,fontStyle = 'normal'
,fontWeight = 'normal'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProC:Class;
/* CONDENSED BOLD */
[Embed(source="../../../lib/MyriadPro-BoldCond.otf"
,fontFamily= 'MC'
,fontStyle = 'normal'
,fontWeight = 'bold'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProCondBold:Class;
/* CONDENSED ITALIC */
[Embed(source="../../../lib/MyriadPro-CondIt.otf"
,fontFamily='MC'
,fontStyle = 'italic'
,fontWeight = 'normal'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProCondIT:Class;/*!!!*/
/* CONDENSED BOLD + ITALIC */
[Embed(source="../../../lib/MyriadPro-BoldCondIt.otf"
,fontFamily= 'MC'
,fontStyle = 'italic'
,fontWeight = 'bold'
,mimeType= 'application/x-font'
,embedAsCFF = 'false'
)]
public static var Myriad2ProCondBoldIT:Class;
public function FontEmbed() {
}
public static function setStyle(textField:TextField, fontName:String, size:uint=16):void {
textField.embedFonts = true;
textField.defaultTextFormat = new TextFormat(fontName);
}
private function fontInit():void {
var _arr :Array = Font.enumerateFonts();
for each( var i:Font in _arr){
trace(i.fontName);
}
}
}
}
Здесь всё ок, шрифт подтягивается.
Пробую заатачить через загрузку
_loader = new Loader();
var urlRequest:URLRequest = new URLRequest("http:/site.dom/app/font/MyriadPro.swf?"+Math.random());
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _loader_onIoError);
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _loader_onComplete);
_loader.load(urlRequest);
}
protected function _loader_onIoError(event:IOErrorEvent):void
{
_loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, _loader_onIoError);
trace("failed to load the .swf file");
}
protected function _loader_onComplete(event:Event):void
{
_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, _loader_onComplete);
_fontLibrary = event.target.applicationDomain.getDefinition("me.inpictures.data.FontEmbed_Myriad2Pro") as Class;
traceFontRegister();
Font.registerFont(_fontLibrary);
}
Ругается
ArgumentError: Error #1508: Указано недопустимое значение для аргумента font.
at flash.text::Font$/registerFont()
at me.inpictures.data::DynamicFont/_loader_onComplete()
_fontLibrary = event.target.applicationDomain.getDefinition("me.inpictures.data.FontEmbed.Myriad2Pro") as Class;
ReferenceError: Error #1065: Переменная Myriad2Pro не определена.
at flash.system::ApplicationDomain/getDefinition()
at me.inpictures.data::DynamicFont/_loader_onComplete()
Что не так не пойму.
Добавлено через 19 минут
_fontLibrary=event.target.applicationDomain.getDefinition("me.inpictures.data.FontEmbed") as Class;
traceFontRegister();
trace( _fontLibrary.Myriad2Pro ); // [class FontEmbed_Myriad2Pro]
Font.registerFont(_fontLibrary.Myriad2Pro); // всё прежний аргумент эррор
Имеем отдельную swf с кодом
package me.inpictures.data {
import flash.text.Font;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.Sprite;
public class FontEmbed extends Sprite{
/* REGULAR */
[Embed(source="../../../lib/MyriadPro-Regular.otf"
,fontFamily= 'MB'
,fontStyle = 'normal'
,fontWeight = 'normal'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2Pro:Class;
/* BOLD */
[Embed(source="../../../lib/MyriadPro-Bold.otf"
,fontFamily= 'MB'
,fontStyle = 'normal'
,fontWeight = 'bold'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProBold:Class;
/* ITALIC */
[Embed(source="../../../lib/MyriadPro-It.otf"
,fontFamily='MB'
,fontStyle = 'italic'
,fontWeight = 'normal'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProIT:Class;/*!!!*/
/* BOLD + ITALIC */
[Embed(source="../../../lib/MyriadPro-BoldIt.otf"
,fontFamily= 'MB'
,fontStyle = 'italic'
,fontWeight = 'bold'
,mimeType= 'application/x-font'
,embedAsCFF = 'false'
)]
public static var Myriad2ProBoldIT:Class;
/* CONDENSED */
[Embed(source="../../../lib/MyriadPro-Cond.otf"
,fontFamily="MC"
,fontStyle = 'normal'
,fontWeight = 'normal'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProC:Class;
/* CONDENSED BOLD */
[Embed(source="../../../lib/MyriadPro-BoldCond.otf"
,fontFamily= 'MC'
,fontStyle = 'normal'
,fontWeight = 'bold'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProCondBold:Class;
/* CONDENSED ITALIC */
[Embed(source="../../../lib/MyriadPro-CondIt.otf"
,fontFamily='MC'
,fontStyle = 'italic'
,fontWeight = 'normal'
,mimeType="application/x-font"
,embedAsCFF = 'false'
)]
public static var Myriad2ProCondIT:Class;/*!!!*/
/* CONDENSED BOLD + ITALIC */
[Embed(source="../../../lib/MyriadPro-BoldCondIt.otf"
,fontFamily= 'MC'
,fontStyle = 'italic'
,fontWeight = 'bold'
,mimeType= 'application/x-font'
,embedAsCFF = 'false'
)]
public static var Myriad2ProCondBoldIT:Class;
public function FontEmbed() {
}
public static function setStyle(textField:TextField, fontName:String, size:uint=16):void {
textField.embedFonts = true;
textField.defaultTextFormat = new TextFormat(fontName);
}
private function fontInit():void {
var _arr :Array = Font.enumerateFonts();
for each( var i:Font in _arr){
trace(i.fontName);
}
}
}
}
Здесь всё ок, шрифт подтягивается.
Пробую заатачить через загрузку
_loader = new Loader();
var urlRequest:URLRequest = new URLRequest("http:/site.dom/app/font/MyriadPro.swf?"+Math.random());
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _loader_onIoError);
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _loader_onComplete);
_loader.load(urlRequest);
}
protected function _loader_onIoError(event:IOErrorEvent):void
{
_loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, _loader_onIoError);
trace("failed to load the .swf file");
}
protected function _loader_onComplete(event:Event):void
{
_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, _loader_onComplete);
_fontLibrary = event.target.applicationDomain.getDefinition("me.inpictures.data.FontEmbed_Myriad2Pro") as Class;
traceFontRegister();
Font.registerFont(_fontLibrary);
}
Ругается
ArgumentError: Error #1508: Указано недопустимое значение для аргумента font.
at flash.text::Font$/registerFont()
at me.inpictures.data::DynamicFont/_loader_onComplete()
_fontLibrary = event.target.applicationDomain.getDefinition("me.inpictures.data.FontEmbed.Myriad2Pro") as Class;
ReferenceError: Error #1065: Переменная Myriad2Pro не определена.
at flash.system::ApplicationDomain/getDefinition()
at me.inpictures.data::DynamicFont/_loader_onComplete()
Что не так не пойму.
Добавлено через 19 минут
_fontLibrary=event.target.applicationDomain.getDefinition("me.inpictures.data.FontEmbed") as Class;
traceFontRegister();
trace( _fontLibrary.Myriad2Pro ); // [class FontEmbed_Myriad2Pro]
Font.registerFont(_fontLibrary.Myriad2Pro); // всё прежний аргумент эррор