한글 공유 폰트 제작시 한자 및 특수문자 포함하기
- Posted at 2008/08/05 12:06
http://www.action-scripter.com/blog/trackback/1092
ActionScript 3.0에는 Font 클래스가 있습니다.
이 Font 클래스는 특정 폰트 클래스를 담고 있는 SWF를 로드했을 때 해당 폰트 클래스를 등록해서 원하는 유형으로 제어해서 사용할 수 있게 해주는 편리한 클래스입니다. 폰트 클래스를 담고 있는 SWF를 만들려면 라이브러리에 New Font 버튼을 클릭한 후 추가하려는 폰트를 선택하고 이름을 지정해줍니다.

이름을 지정할 때는 실제 폰트 파일의 이름(제어판에서 폰트 파일을 열었을 때 이름)을 사용해 주는 것이 좋습니다. 이렇게 폰트를 등록한 후 Linkage 패널을 열어서 사용할 Class이름을 등록한 후 Base class에는 flash.text.Font를 선택해 줍니다.

그럼 라이브러리에 HYGothic-Extra 폰트가 등록됩니다.

이런식으로 프로젝트에 사용할 폰트를 하나의 SWF에 모두 등록을 해서 퍼블리쉬하면 폰트 정보를 가진 SWF가 생성되는데요. 이 SWF를 로드한후 Font.registerFont() 메서드를 통해 폰트 클래스를 등록해서 사용할 수 있습니다. Font 클래스에 대한 사용방법은 도움말에 자세히 설명이 되어 있고 예제도 있기 때문에 참고를 해 주시고요. 한상훈 형님의 블로그에 있는 Runtime font sharing 포스트를 참고해 보시면 됩니다.
하지만 문제는 이런식으로 폰트를 등록해서 사용할 때 Embed 속성에 있는 All, Uppercase, Lowercase, Korean Basic Hangul, Korean Hangul (All) 등의 옵션을 지정하거나 설정하는 방법을 아직 찾지 못했습니다. 쉽게 말하자면 한글 폰트를 등록해서 사용할 때 한자 또는 특수 문자들까지 모두 포함되는 줄 알았는데 기본 값이 Basic인지 한자가 보이지 않는 문제가 있더군요.
그래서 이 문제를 우회적으로 처리할 수 있는 편법을 소개하고자 합니다.
C:\Documents and Settings\{사용자}\Local Settings\Application Data\Adobe\Flash CS3\en\Configuration\FontEmbedding
폴더에 보면 UnicodeTable.xml 파일이 있습니다. 이 파일을 열어보면 Properties 패널에 있는 Character Embedding 옵션에서 사용되는 각 폰트의 Embed 조건 정보를 담고 있는 노드를 볼 수 있을 것입니다.

이 XML파일을 에디터 프로그램으로 열고 다음의 순서대로 처리한 후 저장을 합니다.
1. Korean Basic Hangul 노드 안에 있는 내용 제거 (2000여 줄)
2. Korean Hangul (All)에 있는 노드 내용을 복사
3. 복사된 내용을 Korean Basic Hangul 노드 안에 붙여 넣기
이렇게 모든 폰트 정보를 가지고 있는 노드를 기본 폰트 노드에 붙여 넣기 한 후 플래시를 다시 다시 실행해서 폰트 SWF 파일을 퍼블리쉬해서 사용하면 한자는 물론 모든 폰트 정보가 포함되는 것을 확인할 수 있을 것입니다.
여기서 주의할 점은 폰트 SWF 파일을 생성한 후에는 UnicodeTable.xml 파일을 원래 값으로 되돌려 줘야 한다는 점입니다. 이 방법이 제대로 된 방법이라고는 말할 수 없지만 아직 잘 모르기 때문에 혹시나 제대로 된 방법을 알고 있는 분이 있다면 알려주시면 감사하겠습니다.
Comments List
-
꽤 유용한 팁이군 ㅎㅎ
CS4에서는 폰트 심벌 속성창에서 텍스트필드 임베드 옵션에 있는 것 처럼 세세하게 임베드할 문자를 선택할 수 있는 기능이 추가되었으면 하는 바람이...-
응 내가 몰라서 그런거지 아니면 원래 세세한 옵션이 없는건지 잘 모르겠지만 크크. 형 말처럼 없었다면 기능이 추가되었으면 좋겠다.
-
-
새로운 방법을 찾았습니다.
http://blog.naver.com/showjean?Redirect=Log&logNo=130024529773
속성에서 임베딩한 swf를 이용해서 출력하네요.
그런데 파일을 3개를 이용하는데...이거 어떻게 더 쉽게 바꿀 수 없을까요?.....
링크타고 가시면 첨부파일도 있습니다.-
방법의 차이는 있을 수 있겠지만 무엇이 가장 좋은 방법인지는 직접 경험해 보는 것이 좋을 것 같아요. 뭔가 더 최적화된 방법이 있을 것 같다는 생각이.
-










