sfont120605.rar



이전 포스트인 (링크)SFont에서의 폰트.swf파일 만들기로는 사용자가 원하는 범위의 문자만을 포함할 수 없다.

 

Flash CS3 단독으로는 이를 수행 할 수 없고,(내가 알기론...) Flex3 SDK를 이용해서 폰트.swf파일을 생성한다면 가능하다.

 

(참고 http://blog.jidolstar.com/414)

(참고 http://blog.naver.com/synchrong/110005825131)

(참고 http://www.action-scripter.com/blog/1092)

 


- Flex3 SDK를 이용해 문자범위를 지정할 수 있는  폰트.swf파일 만들기

 

SDK 설치 (http://blog.naver.com/moviel0ve?Redirect=Log&logNo=130034438959)

 

- SDK로 컴파일 할 폰트.as 파일

package {
        import flash.display.Sprite;
        import flash.text.Font;
       
        public class DinmedRegular extends Sprite       {              
               
                [Embed( mimeType='application/x-font', source='DinmedRegular.ttf', fontName='DinmedRegular', embedAsCFF="false", unicodeRange='U+0041-U+005A')] // 영문 대문자만 임베드
                protected var font:Class;
               
                function DinmedRegular(){
                        Font.registerFont(font);
                }
        }
}

unicodeRange에 임베드할 문자의 유니코드를 입력하면된다.

(유니코드는 (flex3sdk)\frameworks\flash-unicode-table.xml 또는 첨부한 파일을 참고)

위 처럼 폰트를 직접 등록(Font.registerFont(font);)하기 때문에 FontAsset에서는 등록작업을 별도로 하지 않는다.


flex sdk 4.6은 아래 옵션(-static-link-runtime-shared-libraries)을 추가해야 제대로 컴파일 된다.(아마 4버젼 부터 필요한 것으로 추측한다.)

mxmlc -static-link-runtime-shared-libraries DinmedRegular.as


그리고, 현재(2012.06.05) sdk에서는 폰트 임베드시 embedAsCFF="false" 옵션을 반드시 추가해야한다. 

(이것도 sdk 4부터 필요한 것으로 보인다.)

(http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f5f.html)



- 사용법은 SFont와 같다. 단, Font Class 인자는 공백("")으로 입력한다.

import com.showjean.net.*;
import flash.net.*;
 
var sl:SFont = new SFont();
sl.addEventListener(Event.COMPLETE,completeHandler);
sl.addEventListener(IOErrorEvent.IO_ERROR,__eventHandler);
sl.addEventListener(ProgressEvent.PROGRESS, progressHandler);
sl.load("assets/DinmedRegular.swf", "");
 
 
function completeHandler(event:Event):void {
        trace(event);
 
        var tf:TextFormat=txt.getTextFormat();
        var fn:String=sl.name;
        if (fn == null) {
        } else {
                tf.font=fn;
                txt.embedFonts=true;
                txt.defaultTextFormat=tf;
                txt.text="ABCDEFG12345 "+fn;
        }
}
 
function __eventHandler(event:Event):void {
        trace(event);
}
 
function progressHandler(event:ProgressEvent):void {
        trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
}




Flash CS4에는 지원한다고 한다. (직접 확인은 하지 않았다.)

-> 확인 결과 CS4에서는 Flex SDK를 직접 연결해서 컴파일 가능하다. SDK로 직접 컴파일 하는 것과 다른 점이라면 fla파일이 있어야 한다는 것.