1. qt는 BDF,TTF 폰트를 지원합니다.
2. qpf 폰트는 qt가 이들 bdf, ttf 폰트를 로드해서 rendering 이라는 절차를 거치는 과정에서 qpf라는 폰트를 나름대로 만들어서 사용을 하는 폰트입니다. qt쪽에서 보다 더 빠르게 만들어 놓은 format입니다.
3. 프로그램 실행 옵션 중에 -savefonts 가 있습니다. 이 옵션을 주게 되면 내부적으로 사용하는 qpf를 디스크에 save를 해줍니다.
4. fontdir 파일의 사용방법
우선 $QTDIR/src/kernel/qfontmanager_qws.cpp 파일을 보면 자세히 나와있습니다.
<name> <file> <renderer> <italic> <weight> <size> <flags>
name - 프로그램에서 사용하는 setFont() 함수의 첫번째 인자에 해당합니다.
file - file이름
renderer - BDF or TTF
italic - 이텔릭체를 표현하겠냐? y or n
weight - 글씨의 굵기
size - 글씨의 크기
flags - 3가지 값을 가질 수 있습니다.
s - smooth anti-alias를 지원하는 폰트에 해당
u - font 체계가 unicode형식을 지원할 때
a - ascii 코드
주의할 것은 flags 중 u, a 값은 -savefonts 를 할 때 중요한 영향을 끼칩니다. 즉 사용하는 폰트가 unicode 형식을 지원한다고 해도 fontdir 에 u flag 를 써주지 않으면 savefonts 할 때 기본적으로 ascii 영역의 코드 밖에 저장되지 않습니다.
5. ttf의 한글폰트를 qpf로 바꾸는 방법
5.1 사용자가 임의로 추가한 폰트가 userfont.ttf 라고 할 때, 이 파일을 /usr/qte/etc/fonts 디렉토리에 넣습니다.
5.2 fontdir 파일을 수정합니다. 다음 줄을 추가합니다.
userfont userfont.ttf TTFM
5.3 응용프로그램에서 setFont를 해주는 부분에서 userfont 를 사용할 수 있게 수정을 합니다.
setFont("userfont",140,50)
5.4 응용프로그램을 컴파일 합니다.
5.5 응용프로그램을 컴파일 할 때, -savefonts 옵션을 줍니다.
5.6 그럼 /usr/qte/etc/fonts 에 userfont_140_50.qpf 가 생깁니다.
6. 응용프로그램 수정 없이 ttf폰트를 사용하기
원래 /usr/qte/etc/fonts/fontdir 의 내용
helvetica helvetica_80_50.qpf QPF n 80 50
helvetica helvetica_100_50.qpf QPF n 100 50
helvetica helvetica_120_50.qpf QPF n 120 50
위처럼 되어 있는 파일을 다음과 같이 고칩니다.(단 한 줄만 있는 겁니다.)
helvetica userfont.ttf TTF
그리고 응용프로그램 실행시킬때 -savefonts옵션을 줘서 실행을 시킵니다.
./aclock -qws -savefonts
한 참 후에 응용프로그램이 뜰 것입니다. 기다려야 합니다. (폰트를 디스크에 쓰느라고 오래 걸립니다.)
응용프로그램이 보이면 /usr/qte/etc/fonts/ 디렉토리에 userfont_???_???.qpf 가 생긴 것을 볼 수 있습니다.
다음부터 이 qpf를 이용하게 하려면 fontdir을 고칩니다.
helvetica userfont_???_##.qpf QPF n ??? ##
??? 와 ##은 숫자입니다.
다음부터 응용프로그램은 qpf를 사용하므로 실행속도가 빨라집니다
fontdir 에 u 옵션을 주고 savefonts 로 qpf를 만드셨을 때 u 옵션을 안 줄때의 경우와 파일 용량이 큰 차이(훨씬 크다)가 있다면 폰트(한글폰트)는 제대로 만들어진 것입니다.
TTF 폰트도 각 폰트 문자셋을 unicode base로 만들었는지 KSC5601 base로 만들었는지에 따라서 출력이 안될 수도 있습니다.
batang.ttf gulim.ttf 는 unicode base로 만들어져 있습니다.
예를 들면, 한글 '가'는 unicode 일 경우 0xac00, KSC5601일 경우는 0xb0a1 입니다.
분명 응용프로그램을 작성할 때 vi를 이용했을 것입니다. 만약 이렇게 vi에서 한글은 KSC5601입니다. 따라서 이를 unicode 값으로 바꿔줘야 합니다. 이때 이용하는 것은 codec이 있습니다.
#include
QEucKrCodec* codec = new QEucKrCodec();
char* string="한글입니다";
QString hangul = codec->toUnicode(string, strlen(string));
이렇게 유니코드로 바꿔줍니다. hangul을 리스트 박스에 넣어보면 한글이 보일 것입니다
2. qpf 폰트는 qt가 이들 bdf, ttf 폰트를 로드해서 rendering 이라는 절차를 거치는 과정에서 qpf라는 폰트를 나름대로 만들어서 사용을 하는 폰트입니다. qt쪽에서 보다 더 빠르게 만들어 놓은 format입니다.
3. 프로그램 실행 옵션 중에 -savefonts 가 있습니다. 이 옵션을 주게 되면 내부적으로 사용하는 qpf를 디스크에 save를 해줍니다.
4. fontdir 파일의 사용방법
우선 $QTDIR/src/kernel/qfontmanager_qws.cpp 파일을 보면 자세히 나와있습니다.
<name> <file> <renderer> <italic> <weight> <size> <flags>
name - 프로그램에서 사용하는 setFont() 함수의 첫번째 인자에 해당합니다.
file - file이름
renderer - BDF or TTF
italic - 이텔릭체를 표현하겠냐? y or n
weight - 글씨의 굵기
size - 글씨의 크기
flags - 3가지 값을 가질 수 있습니다.
s - smooth anti-alias를 지원하는 폰트에 해당
u - font 체계가 unicode형식을 지원할 때
a - ascii 코드
주의할 것은 flags 중 u, a 값은 -savefonts 를 할 때 중요한 영향을 끼칩니다. 즉 사용하는 폰트가 unicode 형식을 지원한다고 해도 fontdir 에 u flag 를 써주지 않으면 savefonts 할 때 기본적으로 ascii 영역의 코드 밖에 저장되지 않습니다.
5. ttf의 한글폰트를 qpf로 바꾸는 방법
5.1 사용자가 임의로 추가한 폰트가 userfont.ttf 라고 할 때, 이 파일을 /usr/qte/etc/fonts 디렉토리에 넣습니다.
5.2 fontdir 파일을 수정합니다. 다음 줄을 추가합니다.
userfont userfont.ttf TTFM
5.3 응용프로그램에서 setFont를 해주는 부분에서 userfont 를 사용할 수 있게 수정을 합니다.
setFont("userfont",140,50)
5.4 응용프로그램을 컴파일 합니다.
5.5 응용프로그램을 컴파일 할 때, -savefonts 옵션을 줍니다.
5.6 그럼 /usr/qte/etc/fonts 에 userfont_140_50.qpf 가 생깁니다.
6. 응용프로그램 수정 없이 ttf폰트를 사용하기
원래 /usr/qte/etc/fonts/fontdir 의 내용
helvetica helvetica_80_50.qpf QPF n 80 50
helvetica helvetica_100_50.qpf QPF n 100 50
helvetica helvetica_120_50.qpf QPF n 120 50
위처럼 되어 있는 파일을 다음과 같이 고칩니다.(단 한 줄만 있는 겁니다.)
helvetica userfont.ttf TTF
그리고 응용프로그램 실행시킬때 -savefonts옵션을 줘서 실행을 시킵니다.
./aclock -qws -savefonts
한 참 후에 응용프로그램이 뜰 것입니다. 기다려야 합니다. (폰트를 디스크에 쓰느라고 오래 걸립니다.)
응용프로그램이 보이면 /usr/qte/etc/fonts/ 디렉토리에 userfont_???_???.qpf 가 생긴 것을 볼 수 있습니다.
다음부터 이 qpf를 이용하게 하려면 fontdir을 고칩니다.
helvetica userfont_???_##.qpf QPF n ??? ##
??? 와 ##은 숫자입니다.
다음부터 응용프로그램은 qpf를 사용하므로 실행속도가 빨라집니다
fontdir 에 u 옵션을 주고 savefonts 로 qpf를 만드셨을 때 u 옵션을 안 줄때의 경우와 파일 용량이 큰 차이(훨씬 크다)가 있다면 폰트(한글폰트)는 제대로 만들어진 것입니다.
TTF 폰트도 각 폰트 문자셋을 unicode base로 만들었는지 KSC5601 base로 만들었는지에 따라서 출력이 안될 수도 있습니다.
batang.ttf gulim.ttf 는 unicode base로 만들어져 있습니다.
예를 들면, 한글 '가'는 unicode 일 경우 0xac00, KSC5601일 경우는 0xb0a1 입니다.
분명 응용프로그램을 작성할 때 vi를 이용했을 것입니다. 만약 이렇게 vi에서 한글은 KSC5601입니다. 따라서 이를 unicode 값으로 바꿔줘야 합니다. 이때 이용하는 것은 codec이 있습니다.
#include
QEucKrCodec* codec = new QEucKrCodec();
char* string="한글입니다";
QString hangul = codec->toUnicode(string, strlen(string));
이렇게 유니코드로 바꿔줍니다. hangul을 리스트 박스에 넣어보면 한글이 보일 것입니다