2010-05-16 8 views
0

Flex에 동적으로 글꼴을 포함시킬 수 있는지 궁금합니다. 다른 사용자를 위해 다른 글꼴을 포함하고자하므로 모든 가능한 글꼴을 동일한 Flex 파일에 포함하고 싶지 않습니다. 가능한 경우 샘플 코드를 게시하십시오.Flex에 동적으로 글꼴을 포함 할 수 있습니까?

+0

:

mxmlc fontlib.as 

당신은 다음과 같은 응용 프로그램에서 사용할 수 있습니다 플랫폼에? winxp.swf가 Windows XP에는없는 글꼴을로드합니다. xp, osx.swf는 osx가없는 글꼴을로드합니다. 클라이언트가 응용 프로그램을로드하면 올바른 플랫폼에 맞는 글꼴 swf를로드하십시오. –

답변

2

Actionscript에서이 작업을 수행 할 수 있습니다. 이 트릭은 주로 Flash IDE에서 컴파일러에서 지원되지 않는 opentype 글꼴을 사용하고 느리게로드 될 수있는 글꼴 라이브러리를 만드는 데 사용되었습니다 (필요할 때만).하지만이 옵션을 사용하여 글꼴을 선택적으로로드 할 수도 있습니다. 서버에 mxmlc 컴파일러가 있으면 fontlib.as 파일을 생성하여 명령으로 컴파일 할 수도 있습니다.

// fontlib.as 
// font library file 
package { 
    import flash.display.Sprite; 

    public class fontlib extends Sprite { 
     [Embed(source = 'font/path/FontFile.otf', fontName = 'FontFile', unicodeRange = 'U+0020-U+007E,U+00AB,etc...')] 
     public static var FontFile:Class; 
     public static const FontFile_name:String = "FontFile"; // matches 'fontName' in embed 

     public function fontlib() { 
     } 
    } 
} 

은과 같이 컴파일 할 수 있습니다 : 글꼴을 기반으로 포함 일부 SWF를 가지고 쉽게되지 않을 것

// Main.as 
// document class 
package { 
    import flash.text.Font; 
    import flash.display.Loader; 
    import flash.events.Event; 
    import flash.system.ApplicationDomain; 
    import flash.text.StyleSheet; 

    public var fontsLoader:Loader; 
    public var fontFile:String = ""; 
    public var ss:StyleSheet; 

    public function Main() { 
     fontsLoader = new Loader(); 
     fontsLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onFontsLoadComplete); 
    } 

    private function _onFontsLoadComplete(e:Event):void { 
     var fontlib:Class = e.target.applicationDomain.getDefinition('fontlib'); 

     Font.registerFont(fontlib.FontFile); // registers font 
     fontFile = fontlib.FontFile_name;  // name the font was loaded as 

     // actually using the font looks like this: 
     ss = new StyleSheet(); 
     ss.parseCSS("div { fontFamily: " + fontFile + "; }"); 
    } 
} 
관련 문제