이전 포스트인 (링크)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파일이 있어야 한다는 것.
'Flash > AS3.0' 카테고리의 다른 글
RegExp 2 - 모든 문자 //2009/06/29 15:40 (0) | 2012.06.05 |
---|---|
4096*4096 //2009/05/29 18:01 (0) | 2012.06.05 |
SFont v1.1.1 - 런타임 폰트 공유 클래스 //2009/07/06 15:41 (0) | 2012.06.05 |
SLoader - 순차적 로더 //2009/04/19 23:07 (0) | 2012.06.05 |
navigateToURL이 팝업차단에 걸릴 때 //2009/05/08 16:00 (0) | 2012.06.05 |