[폰트 관련 특집] 3. 제작한 폰트를 응용프로그램에 적용하자.

유니코드와 폰트와의 관계 그리고 폰트 제작에 대해서 이전 포스팅에서 알아 보았습니다. 링크는 아래의 링크를 참고하시면 됩니다.



     ① 유니코드와 폰트와의 관계


     ② 폰트를 제작학기 위한 툴



이번 시간에는 폰트를 어떻게 개발에 이용할 것인가에 대해서 좀더 프로그래밍적인 부분에 대해서 이야기 해보고자
합니다
. 일단, 폰트를 이용하는 부분은 다양하겠지만 레이블, 텍스트박스, 콤보 박스, 리스트박스
등의 텍스트 데이터가 쓰여지는 컨트롤에서 광범위하게 적용 할 수 있다고 봅니다
.


그렇다면, 어떻게 그러한 컨트롤들에 폰트를 적용시킬 수 있을까요?



먼저 폰트를 윈도우 시스템에 등록을 해야 합니다. 물론 시스템에 등록하지
않고 사용할 수 있는 방법도 있는데
, 그 방법에 대해서는 차후에 설명하도록 하겠습니다. 시스템에 등록한다는 것은 어렵게 설명한 것이지만, 쉽게 설명하면
만들어진 폰트를
Windows/Fonts 폴더에 추가하면 되는 것입니다.



이렇게 Windows 시스템에 폰트를 추가하면, 자연스럽게 MS 워드 혹은 한글(hwp)
폰트 창에서 확인 할 수가 있습니다
. 왜냐하면 해당 오피스 프로그램들의 폰트는 윈도우 시스템에 추가된
폰트들을 기반으로 하고 있기 때문입니다
.



 



개발자가 개발하는 프로그램의 컨트롤에 폰트를 적용하기 위해서는 다음의 코드를 사용해야 합니다.

 



위의 코드를 보시면, Font 클래스의 객체를 만들어서 “AppleGothic” 폰트를 24pt 의 크기로 하여 텍스트 박스에
해당 폰트정보를 적용하는 것을 나타내고 있습니다
. 이 과정에서의 전제 조건은 윈도우 시스템에 등록되어
있어야 한다는 것이겠지요
.



 



그렇다면, 앞에서 언급한대로 윈도우 시스템에 등록하지 않으면 쓸 수
없을까요
?



닷넷에서는 Font 외에도 FontCollection
이라는 추상 클래스(abstract class)를 가지고 있는데, msdn을 살펴보면, 설치된 글꼴 컬렉션과 전용 글꼴 컬렉션의 기본
클래스를 제공한다고 나와 있습니다
. 좀 말이 어렵지요. 간단히
설명하자면
,



 




FontCollection (Abstract Class)



 – InstalledFontCollection



 
PrivateFontCollection




 



InstalledFontCollection 은 시스템에 설치된 폰트를
나타내는 클래스입니다
. 실질적으로 Font 클래스와 별반
다를 게 없다고 보시면 될 것 같습니다
. Families 속성을 통해서 시스템에 있는 폰트를 이름기반으로
검색할 수가 있습니다
.



PrivateFontCollection 은 한마디로 시스템에 설치하지
않고 응용프로그램에서 쓸 경우
, 폰트를 적용할 때 사용할 수 있는 클래스 입니다. MSDN에 보면 시스템에 있는 Arial 글꼴을 전용버전으로 만들
수 있다고 하는데
, 그 부분에 대해서는 좀더 MSDN을 참고하시고, 설치 안 해도 되는 폰트를 적용하는 법에 대해서 설명하도록 하겠습니다.

 

기존의 Font 클래스를 사용하는 것은 마찬가지이나, Font 클래스의 객체를 만들 때에는 Family 이름을 넣어야
하기 때문에
PrivateFontCollection 객체를 이용해서 그 작업을 해주는 것입니다. 객체를 일단 만드신 후에 AddFontFile() 함수를 통해 해당
폰트파일의 주소
(File Path)를 넣어주시고Font 객체에
생성자에 해당
Family 이름을 전달해 주시면 됩니다.



 



참고로, 이러한 개발에 적용 가능한 폰트의 형태는 트루타입의 폰트
가능합니다
.



 


![](http://ash84.net/wp-content/uploads/1/cfile30.uf.116244054C80BA27510685.jpg)
최근 타이포그라피에 관심이 가는 필자.



이번 포스팅에서는, 시스템에 폰트를 등록하는 방법과 등록된 폰트를
개발 프로그램에 적용하는 방법 그리고 등록되지 않은 폰트를 개발 프로그램에 적용하는 방법에 대해서 알아보았습니다
.
사실 저 역시 이번 과제를 통해서 폰트와 유니코드와의 관계 그리고 실제 폰트를 개발한다는 것에 대해서 또한 개발된 폰트를 프로그램에
적용하는 과정에 대해서 공부하게 되었던 계기였습니다
.


폰트에 대해서는 타이포그래피(Typography) 하시는 분들이 더
잘 알거라 생각됩니다
. 아랍어 같은 경우에는 가운데 혹은 마지막에 글자가 위치하면 변형되기도 하고 글자끼리
필기체처럼 이어지는 부분이 있어서
, 폰트를 만들기 어렵더군요. 새삼
폰트디자이너 분들의 수고를 알게 되었습니다