[Flash/Flex]Embedding Font 사용시 embedAsCFF를 꼭 추가하자.
2009/11/13 14:37
[공지]이미지나 링크가 깨졌다면 댓글 부탁드립니다.
프로그램상에 폰트를 포함할 때 다음과 같은 문장을 사용할 것이다.
[Embed(source='C:/WINDOWS/Fonts/ARIAL.TTF', fontName = "MyFont", mimeType = "application/x-font-truetype")] private var font:Class;
그런데 Flash Builder 4에서 작업할 때부터 위처럼 Embed한 폰트가 적용이 되지 않았다. 사용한 True Type 폰트는 언제나 테스트할때 문제없이 동작한 것이기 때문에 왜 안되는지 의문이 들었다. Flash Builder 4의 컴파일러인 mxmlc가 버그가 있거나 다른 설정이 추가되었나 싶었지만 그렇지 않았다. 그래서 열심히 구글링해봤더니 폰트를 Embed 처리할때 embedAsCFF 속성이 추가되었다는 것을 발견하고 아래처럼 테스트 코드를 작성해봤다.
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;
import flash.text.AntiAliasType;
[SWF(width = "500", height = "240", backgroundColor = "#FFFFFF", framerate = "24")]
public class FontTest extends Sprite {
[Embed(source='C:/WINDOWS/Fonts/ARIAL.TTF', embedAsCFF="false", fontName = "MyFont", mimeType = "application/x-font-truetype")]
private var font:Class;
public function FontTest() {
var format:TextFormat = new TextFormat();
format.font = "MyFont";
format.size = 30;
format.color = 0x000000;
var label:TextField = new TextField();
label.embedFonts = true;
label.autoSize = TextFieldAutoSize.LEFT;
label.antiAliasType = AntiAliasType.ADVANCED;
label.defaultTextFormat = format;
label.text = "blog.jidolstar.com";
addChild(label);
label.rotation = 5;
}
}
}
여기서 embedAsCFF 속성은 도데체 뭔가? 이 전에 CFF(Compact Font Format)가 뭔지 알아야만 했다.
폰트형태는 여러가지 종류가 있다. OTF(Open Type Font)와 TTF(True Type Font)등이 있다. OpenType은 MS와 Adobe가 TrueType의 후속작으로 Cross Platform을 지원하도록 만들 파일 포멧이라고 한다. 이 OpenType에는 Glyph Outline형식에 대한 정의는 없고 TrueType, CFF, Adobe Type 1(PostScript)를 사용한다고 한다. 이 말은 OTF중에는 TrueType으로 글자모양을 정의한 폰트도 있고 CFF 또는 PostScript Font로 정의한 폰트도 있음을 의미한다.
OpenType과 TrueType에 대한 더욱 자세한 내용은 아래 링크를 참고하자.
http://en.wikipedia.org/wiki/OpenType
http://en.wikipedia.org/wiki/TrueType
CFF는 OpenType의 하나로서 다음 링크에 더 세세하게 설명하고 있다.
http://en.wikipedia.org/wiki/Compact_Font_Format#Compact_Font_Format
CFF에 대한 스펙은 다음 파일을 참고한다.
Flash Player 10과 Adobe AIR 1.5이상부터 TTF뿐 아니라 CFF도 지원하게 되었다. 이는 PDF와 직접적인 관계가 있는 것 같다. 그래서 폰트를 포함할때 TTF인지 CFF인지 명시할 필요에 의해 생긴 것이 embededAsCFF인듯하다. 만약 TTF를 사용한다면 위 예제처럼 embededAsCFF를 false로 지정해야한다.
필자도 Font Type에 대한 지식은 거의 없어서 난감했다. CFF를 포함하면 글꼴 렌더링시에 텍스트를 보다 쉽게 읽을 수 있으며 작은 크기에서 글꼴의 표시 품질이 향상된다고 Adobe ActionScript 3.0 가이드 문서에는 나와 있을뿐 정확히 TTF와 CFF에 대한 명확한 해석을 찾지는 못했다.
Adobe ActionScript 3.0 가이드 : 글꼴을 이용한 작업
갑자기 대두된 Font 포함문제 때문에 매우 당혹스러웠지만 그나마 해결방법이라도 찾아 다행이다. 이에 대해 정확히 기술된 한글문서를 아직 찾지 못했다. 더욱 다양한 글들이 많이 올라왔으면 한다.
이 실험은 Flash Builder 4 Beta 2에서 테스트 했으며 아래 링크로부터 Flash Builder 4를 다운받을 수 있다.
http://www.adoberia.co.kr/pds/down.html?src=text&kw=000026
글쓴이 : 지돌스타(http://blog.jidolstar.com/614)
'Adobe Flash Platform' 카테고리의 다른 글
| [Flash 관련 책 추천] 액션스크립트 3.0 완벽가이드 - Essential ActionScript 3.0 (3) | 2009/11/17 |
|---|---|
| Flex 4의 Spark라는 용어는 어디서 왔을까? (9) | 2009/11/17 |
| [Flash/Flex]Embedding Font 사용시 embedAsCFF를 꼭 추가하자. (12) | 2009/11/13 |
| Flash Builder 4 beta 2의 manifest 설정 버그 (0) | 2009/11/02 |
| Flash Builder/Flex Builder의 툴바에서 Run, Debug Launch 버튼이 없어진 경우 해결법 (2) | 2009/10/21 |
| Eclipse에 Flash Builder 4 plugin 설치하기 (12) | 2009/10/21 |



cff.pdf

저도 CFF 폰트 임베드가 컴파일이 안되서 난감했던 기억이 나네요.
TLF 에 임베드 폰트 적용을 하려면 CFF 로 폰트를 컴파일 해야 하는데, SDK3 에서 에러가 나서 SDK4 를 가지고 하는데, Flash builder 가 아니면 SDK4 를 제대로 먹지도 않고해서 커맨드라인으로 쌩컴파일 한다고 삽질했었습니다.
TLF 덕분에 텍스트 처리가 여러모로 편해질것 같은데 아직 FTE 레벨에서 thickness 나 sharpness 처리도 안되고, (왜인지는 모르겠지만 작년쯤까지 있었는데 올해 버전업 하면서 빼버렸더군요. 그것때문에 TLF 코드까지 다 까보면서 쌩삽질을 했었습니다.) 현재 상황에서 치명적인 버그부터 자잘한 버그까지 너무 많고, API 변경도 beta 버전이 올라갈때마다 너무 과감하다 싶을 정도로 크게 이루어지는 상황이라 좀 애간장이 탑니다. 어서 SDK4 가 정식으로 나왔으면 하네요. 이제 나올때가 된 것 같은데 말이죠...
그런 어려움이 있었군요. 사실 이 때문에 몇일 왜 그런지 몰라 별 생쇼를 다했습니다. 빨리 정상적으로 돌아와야할텐데요.
좋은 정보 감사합니다.
저도 궁금하여 찾아 보았는데.
TTF(TrueType Font) 이고 CFF(Compact File Format)이라서 둘의 차이점이라기 보다는.
TTF와 OTF(Open Type Font)의 차이를 찾는것이 정확하다는 결론에 이르렀습니다.
OTF는 MS와 Adobe가 트루타입의 후속작으로 Cross Platform을 지원하도록 만든 파일 포맷이며 이 포멧은 Glyph Outline 형식에 대한 정의가 없고 그에 대해서는 TrueType, CFF(Compact File Format), Adobe Type 1(PostScript)을 사용합니다.
윈도우에서 폰트 아이콘이 O이 OpenType이라네요.
덕분에 엄청난 걸 배우고 공부하게 되었습니다.
좋은 정보 감사합니다. 폰트에 대해서는 정말 무지해서 그런지.. ㅎㅎ 이젠 좀 공부해둬야하나봐요.
오.. 엄청 유용한 정보군요~ 감사합니다!
ㅎㅎ 별말씀을~ ^^
ㅋㅋㅋ 깜짝 놀랐습니다. 제가 5시 블로깅한것과 같은 내용을 2시에 쓰셨다니 우린 싱크된건가요 ^^
ㅎㅎㅎ 그러게요. 같은 주제로 글을 쓰는게 우연이 아는듯~~ ㅋㅋㅋ
여기저기 폰트문제가 많이 있네요.. ㅎㅎㅎ
저도 한글표기문제를 일으키는 ColdFusion 엔진들 때문에 요새 좀 머리 아팠습니다.ㅋ
Adobe ColdFusion, Railo는 해결했는데.. 당최 외국의 개발자나, 제조사들은 2Byte문자에 대한 배려가 없나 봅니다. 원인을 찾아 해결한게 기쁘긴 한데, 사실 별거 아닌것인거 같아 씁쓸 합니다.ㅋㅋ
이래저래 한글문제는 끊이지 않네요. ㅎㅎ
좋은 글 읽고 갑니다 ^^
감사합니다.