본문 바로가기

Flex

폰트 임베드시에 Unicode Range 설정하기

AS3 에서 폰트를 동적으로 embed 하기 위해서 폰트 SWF파일을 만들게 되는데 용량을 줄이기 위해서 필요한 설정이 unicodeRange이다.

 

숫자나 영문 한글 라틴 지원한다면 중국어 일어등 필요한 범위만을 embed하게 되므로 용량이 줄어들지만 범위 이외의 문자는 표시 되지 않기 때문에 그 범위를 벗어나는 텍스트는 절대 나오지 않는다 라는 확신이 있을때 지정해서 사용하는편이 좋다.

 

 괜히 개발 해놨다가 글이 안올라가는거 같아요 이런 소리 듣고 나면 버그가 있는줄 알고 검내 찾다가.. 범위 이외라서 올라간 글이 단지 안보이는 것뿐이라는 것을 알고나면 허탈해질수도 있다.

package
{
	import flash.display.Sprite;

	public class Default extends Sprite
	{
		[Embed(systemFont='나눔고딕 Bold', fontName='나눔고딕 Bold', mimeType = "application/x-font"
		 , unicodeRange = "U+0020-U+007E,U+1100-U+11F9,U+3000-U+303F,U+3131-U+318E,U+327F-U+327F,U+AC00-U+D7A3,U+FF01-U+FF60,U+0020-U+0020,U+0041-U+005A,U+0061-U+007A,U+0030-U+0039,U+002E-U+002E,U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E")]
		public static var embedFont:Class;
	}
}

 

나눔고딕을 포함하는 SWF를 만드는 코드이다.

 

Embed 할때 source로 ttf 폰트파일 주소를 쓰지 않고 systemFont를 써서 만들었는데 ttf를 직접 주소를 주고 만들었을때 cs4 문제인지 fp10의 문제인지 폰트가 보이지 않는 문제가 있다.

 

- 이부분은 정확한 문제를 찾아서 포스팅을 작성해야할것 같다.

외국 포럼에서도 CS4 사용해서 embed Font를 만들때 Bold, Italic 이 보이지 않는다는 말들이 있는데 해결방법을 아직 못찾았다.

 

 ****** Unicode Range **********

영문 : U+0020-U+0020,U+0041-U+005A,U+0061-U+007A

숫자 : U+0030-U+0039,U+002E-U+002E

한글 : U+0020-U+007E,U+1100-U+11F9,U+3000-U+303F,U+3131-U+318E,U+327F-U+327F,U+AC00-U+D7A3,U+FF01-U+FF60

라틴 : U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E

 

이외에 일어나 중국어 등은.. -ㅅ-;; 너무 길어서 패스..