2010년 3월 16일 화요일

flash에서 임베드한 폰트 flash빌더나 , Flex에서 사용하기


 

폰트 임베드에는 아리송한 문제들이 참 많다

용량 때문에 Flex에서 임베드할 때 필요한 문자들의 유니코드를 별도 선언해서 용량을 줄이는 방법도 있지만

오늘 정리할 내용은 flash에서 임베드한 폰트를 사용 하는 법이다.


 

일단 임베드

텍스트 필드 하나 만들고 임베드를 한다 ALL하면 용량 너무 많이 차지하니 꼭 필요한 텍스트 만 선택



 

텍스트 필드를 선택후 F8꽝 눌러서 MovieClip 생성하고 링크 걸어 준다



 

플래시 빌더를 위해 SWC로 내보내기



 

플래시 빌더에서 lib폴더에 swc 저장 해주고 로드해서 사용해 보았다.

플래시에서 선언해준 링키지 클래스(fontMC)를 선언하고 enumerateFonts로 임베드된 폰트 확인 해본다.

mx패키지의 textInput에는 setStyle로 적용하거나

mx_internal::getTextField로 텍스트 필드에 직접 임베드 셋팅 해주면 된다!


 

spark패키지의 인풋텍스트에도 setStyle로 하면 되나TextField를 참조 하려고 봤더니 mx랑은 많이 다르다 .

textDisplay.textFlow 에다가 fontFamily 설정!


 

임베드 적용된 모습(세번째는 일반 텍스트 인풋)

첫번째 mx :: TextInput

두번째 s::TextInput



 

mx텍스트 필드는 임베드 안된 글자를 입력하면 backspace누른듯 입력된 글자가 지워지지만

Spark 텍스트에는 임베드 안된 한글 같은 문자를 입력해도 이쁘게 입력 된다 참 착하다 ~


 

추가 팁 : Flash에서 폰트 임베드할 때 custom anti-Aliasing은

mx_internal::getTextField로 받은 TextField에 설정 해주면 설정 된다

tf.sharpness = 100;

tf.thickness = 100;



 

소스

    <fx:Script>

        <![CDATA[

            import mx.core.mx_internal;

            import mx.events.FlexEvent;

            import mx.events.SliderEvent;

            

            import spark.components.RichEditableText;

            

            private
var tf:TextField;

            protected
function application1_creationCompleteHandler(event:FlexEvent):void

            {

                

                var fontTF:fontMC = new fontMC();

                var arr:Array = Font.enumerateFonts(false);

                for(var i in arr)

                {

                    trace(arr[i].fontName);

                }

                

                var fm:TextFormat = new TextFormat(arr[0].fontName);

                tf = TextField(txtIn.mx_internal::getTextField());

                tf.embedFonts = true;

                tf.defaultTextFormat = fm;

                

                //txtIn.setStyle("fontFamily",arr[0].fontName);

                

                sTxtInput.textDisplay.textFlow.fontFamily = arr[0].fontName;

            }

        ]]>

    </fx:Script>

    <mx:TextInput id="txtIn" fontSize="20"/>

    <s:TextInput id="sTxtInput" fontSize="20"/>

    <s:TextInput fontSize="20"/>

    
 


 


 

댓글 없음:

댓글 쓰기