컴퓨터공부/Embedded

[펌] Qt font How-To 문서 - korone에서.

achivenKakao 2005. 12. 4. 03:23
 
QT/Embedded Font Howto 문서

1. 개요
QT에서의 지원하는 폰트는
TTF, PFA/FPB, BDF, QPF 폰트 입니다.

2 지원 폰트
TTF폰트는 크기조정 가능한 폰트로서, MS윈도우와 애플 매킨토시에서 표준으로 체택해서 사용하고 있으며, X11에서도 많이 사용되는 폰트입니다.

PFA/FPB폰트는 주로 프린터등에서 사용하는 크기조절 가능한 폰트이며, X11에서도 많이 사용됩니다. 이 폰트는 TTF폰트와 거의 유사합니다.

BDF폰트는  크기조정을 할 수없는 폰트로서(여기서 크기조정을 할 수 없다라는 의미는, TTF나 PFA/FPB폰트처럼 기본폰트정보로서 크기조정을 할 수 없다는 의미입니다. 보통, BDF폰트의 경우 각 크기마다 제가각의 폰트를 가집니다.) X11에 있어서 표준으로 사용되고 있습니다.
보통 이 폰트의  임베디드 시스템의 특성상 너무 느 폰트 로딩속도와 많은 디스크공간을 차지해서 잘 사용되지 않습니다.
QT는 이 폰트보다는 QPF폰트로 사용하기를 권장합니다.

QPF폰트는 BDF폰트와 같이 크기조정을 할 수 없는 QT에서제공하는 폰트 포맷입니다.이 폰트의 경우 BDF폰트에 비해 엄청나게 작은 크기로 로딩속도와 디스크공간을 절약할 수 있는 이점을 가집니다.
임베디드 시스템에서 주로 사용하는 폰트입니다.

3. QT에서의 폰트 활용
QT에서 폰트 시스템의 지원은, "Qt/Embedded Features Definition." 항목에 따라 최초 QT컴파일시 결정되게 됩니다. 그러나 QPF파을은 예외적으로 항상 활성화 되어 있으므로 QPF파일 사용에 따른 추가적인 컴파일 고려 요소는 없습니다.

QT에서 여타 폰트 포맷을 사용해도 되지만, 임베디드의 경우 QPF파일이 가장 작고 빠른 속도를
보장하므로 이를 이용하는것이 가장 효율적 입니다.
이를 이용하기 위해서는 기존 QT에서 제공되는 QPF파일을 이용하거나, 적당한 폰트가 없다면
폰트를 새로 생성할 수 있습니다.

3.1 기존 폰트로부터 QPF폰트 생성
QPF폰트는 TTF, BDF등으로부터 QPF폰트로 생성할 수 있습니다.
생성 방법은 QT디렉토리인 tools/makeqpf 디렉토리의 makeqpf유틸리티 혹은 프로그램 실행시
-savefonts옵션을 통해서 프로그램 실행과 동시에 프로그램에서 사용되어지는 폰트를 QPF폰트
포맷으로 생성하는 방법입니다.

3.1.1 tools/makeqpf
makeqpf유틸리티를 이용해 QPF폰트를 생성하기 위해서는 아래와 같이 사용합니다.

makeqpf [-A] [-f spec-file] [font ...]

-A : QT의 lib/fonts/ 디렉토리에 있는 fontdir의 정보를 이용해서 생성합니다.
-f : 특정 파일의 범위내에 있는 폰트 정보를 QPF로 생성합니다. (예, "smoothtimes 0-ff,20a0-20af")
font : 특정 폰트 이름을 주어서 이 폰트를 QPF로 생성합니다.

3.1.2 -savefonts
이 옵션은 makeqpf가 아닌 실제 작성된 프로그램내에서 사용되는 폰트를 QPF파일로 변환하는
프로그램입니다. 실제 프로그램 개발시 어떠한 폰트가 어떤 크기로 사용되는지를 판단할 수
없을경우 추후 개발 완료시 사용할 수 있는 유용한 방법 입니다.
이 옵션의 사용은 아래와 같이 사용합니다.

우선, QT의 lib/fonts/ 디렉토리에 있는 fontdir에 사용될 폰트 목록을 추가합니다.
fontdir entry입력 기준?아래와 같습니다.

name file renderer italic weight size flags

name : 폰트 이름을 기술합니다. (Helvetica, Times, etc.)
file : 폰트 파일명을 기술합니다. (helvR0810.bdf, verdana.ttf, etc.)
renderer : BDF or FT (폰트 포맷이 BDF혹은 FT(FreeType형식, TTF등))
italic : y or n (이탤릭 형식)
weight : 폰트 넓이 (50은 일반, 75는 굵은폰트)
size : 폰트 크기 * 10 (만약 폰트가 12포인트 크기라면 12*10 = 120, 즉 120을 기술해야함)
flags : s or u or a (s는 smooth폰트(anti-aliased), u는 유니코드 폰트(기본은 Latin1),
        a는 아스키코드(기본은 Latin1))

만약 한국어 지원 폰트를 넣으려면
batang batang.ttf FT y 75 0 u
dotum dotum.ttf FT y 75 0 u
gulim gulim.ttf FT y 75 0 u
hline hline.ttf FT y 75 0 u
이렇게 넣으시면 됩니다, batang.ttf, dotum.ttf, gulim.ttf, hline.ttf 는 윈도우 폰트에서
가져왔습니다. 이 폰트들은 MS에서 윈도우에 기본 탑재된 폰트들로 저작권이 걸려 있는것으로
알고 있습니다.
무료로 제공하는 폰트를 사용하려면 리눅스 기본 폰트나 기타 리눅스 커뮤니티 사이트등에서
구할 수 있습니다.

QT에서는 기본적으로 유니코드 폰트를 사용합니다. 따라서 폰트를 구할때에는 유니코드 폰트인지
확인해야 합니다.

위와같이 fontsdir을 추가하고 나서
이제 일반 프로그램을 -savefonts옵션을 붙여서 실행시키면 QT디렉토리 lib/fonts/밑에 자동
생성되게 됩니다.

  1. ./hello -savefonts
  2. cd $QTDIR/lib/fonts
  3. ls -al gulim*
-rw-rw-r--  1 korone korone 10385096 10월 13 17:58 gulim.ttf
-rw-rw-r--  1 korone korone   865086 10월 13 17:58 gulim_200_50.qpf

이와같이 gulim.ttf파일에서 생성된 gulim_200_50.qpf파일이 생성됩니다.
생성된 gulim_200_50.qpf 파일에 '_'로 구분된 두개의 숫자는
size와 weight를 의미합니다.
즉 200 / 10 = 20 포인트의 폰트 크기와 일반 폰트(50)라는 의미입니다.

폰트생성시 응용프로그램에서의 지정은
m_font = QFont("gulim", 20);
setFont(m_font);

라는 부분이 존재하면 됩니다.