반응형

이전에 올렸던 한글 글꼴에 ClearType을 사용하는 방법은 일부 글꼴에 제한되었으나 이번에는 비트맵이 있는 EBDT가 있는 한국어 글꼴 모두에 사용이 가능합니다. 이 글은 mytheme.net에서도 다시 보실 수 있습니다.

한글 글꼴에 ClearType 사용하는 방법
Windows XP에는 화면을 보여줄 때 글자의 모서리를 부드럽게 하여 시각적으로 아름답
게 보여주는 기능이 있습니다.

사실 Windows 2000 이전에도 기본적인 안티 엘리어싱은 있었지만 매우 보통일 뿐인
화질을 보여줬을 뿐이었습니다. ClearType 효과는 Windows XP에서 액정 디스플레이에
제약을 두지만 보다 더 부드러운 화질을 기대할 수 있습니다.
글꼴에 대한 효과의 차이는 아래와 같습니다.

1) 없음

2) 표준 (일반 안티엘리어싱)

3) ClearType


사람들마다 표준이 좋을 수도 있고 ClearType이 좋을 수도 있습니다.
표준의 경우 문자열의 모서리 부분이 너무 희미하다는 느낌이 듭니다. 그에 비해
ClearType도 희미한 느낌은 있지만 표준에 비해 훨씬 그 정도가 적고 깔끔한 인상을 줍니다. LCD/PDP 모니터를 제외한 CRT 사용자는 그렇게 느껴지지 않을 수도 있습니다.

ClearType를 사용할 수 있는 환경에 제약이 있다해도 이 효과에서 우러나오는 부드러
움의 느낌은 꽤 좋다고 생각합니다.
ClearType가 글꼴을 부드럽게 해 주는 효과가 큰 까닭을 말하자면, 안티엘리어싱과
같은 픽셀 단위로 구분하지 않고, 세 개로 구분하기 때문입니다. 이렇게 되는 이유는
액정의 화소는 하나의 화소가 임의로 발색하지 않고 빨강/녹색/파랑의 세 개의 하부
화소에 의해 한 화소가 구성되기 때문입니다. 게다가 이 하위 화소는 빨강/녹색/파랑
이 한 라인에 수평 방향으로 줄지어 있습니다.

물론 각각의 하위 화소에는 빨강/녹색/파랑, 이 세 개의 색이 붙어 있으므로 해상도
를 올리게 되면 원래 보여주려는 색과 다른 색이 나타나게 됩니다. 그러나 인간의 눈
은 다행히도 밝기가 바뀌는 것에는 민감하지만 색이 바뀌는 것에는 둔하기 때문에 좁
은 범위이면 색의 바뀜은 느끼지 않을 것입니다. 이 원리를 이용한 것이 바로
ClearType의 안티엘리어싱의 원리입니다.
이 원리는 엘리어싱의 제거 처리 부분을 확대해 보면 알 수 있습니다. 아래가 「/」
의 문자의 일부분을 열 다섯배로 확대한 화면입니다.
1) 없음

2) 표준

3) ClearType


★ 한글 글꼴과 ClearType
Windows XP에서 ClearType을 사용하려면
디스플레이 등록 정보→화면 배색→효과에 들어간 뒤
화면 글꼴의 가장자리를 다듬는 데 다음 방법 사용(S) 에 체크하고 아래에 ClearType
을 선택하세요.
이렇게 하면 글꼴의 부드러움을 만끽할 수 있습니다.


그러나 이렇게 해 본 사람이라면 다 알겠지만, 이렇게 설정하면 영문 글꼴은

ClearType이 영향을 주지만 한국어 글꼴에는 아무런 영향도 미치지 않습니다.
즉 여기서 사람들은 '한국어는 ClearType은 무효야...'라고 생각할 지도 모릅니다.
그러나 사실은 그렇지 않습니다.
시험 삼아 「메모장」등으로 글꼴 크기를 20p 이상으로 하면, ClearType에 의한 부드
러운 효과가 살아나는 것을 알 수 있습니다.


사실 Microsoft가 준비한 한국어 글꼴(굴림, 돋움, 바탕, 궁서 등)에는 문자 크기가
작을 때 문자가 세세한 부분이 무너지지 않게 하기 위해 미리 Bitmap 처리된 데이터
를 묻어 두는 고정 비트맵 데이터(Embedded Bitmap Data:EBDT)를 포함하게 됩니다.
Windows는 미리 EBDT가 준비되어 있는 글꼴 크기에는 그 비트맵 데이터를 그대로 사
용하여 ClearType의 효과를 맛볼 수 없게 되는 것입니다. 굴림, 돋움, 바탕, 고딕의
경우 일부 크기에서 EBDT가 준비되어 있으므로 ClearType을 사용할 수 없습니다.

ClearType을 어떻게 하면 한국어 글꼴에 사용할 수 있을까요?
ttfmod 라고 하는 도구를 이용하는 방법이 있습니다. 이것은 TrueType 글꼴 안에 들
어있는 매개변수 테이블 가운데 하나인 ,gasp(Grid-fitting and scan conversion
procedure data) 영역의 정보를 바꾸는 도구입니다. 이 gasp는 글꼴이 표현될 때, 안
티 엘리어싱을 하는지 하지 않는지 등을 글꼴 크기마다 설정하는 테이블입니다. 특정
글꼴 크기에서 안티 엘리어싱이 무효가 되지만 이것을 사용 가능하게 해줍니.
하지만 실제로 이 방법은 안티 엘리어싱을 사용할 수 있음에도 불구하고 ClearType만
큼은 예외가 됩니다. 즉 ClearType의 경우 EBDT이 존재할 때 ,gasp의 설정 여부에 관
계 없이 언제나 안티 엘리어싱을 무효로 하여 비트맵 데이터를 그대로 보여주게 하는
것입니다.

이 까닭에 ClearType을 임의의 문자 크기로 사용하고 싶다면, 앞서 말씀드린 ttfmod
을 이용하지는 못하고, EBDT 자체를 지워버릴 수 밖에 없습니다. 그러니까 EBDT를 지
워서 ClearType을 사용할 수 있게 해야 합니다.

★ TTC 파일의 묶음을 풀어보자
실제로 글꼴의 변경을 해 봅시다. 여기에서는 예를 들어 Gulim.ttc 의 EBDT를 제거하
여 임의의 문자 크기로 언제나 ClearType이 유효하게 되는 글꼴로 만들어 볼까 합니
다.

먼저 미리 챙겨둬야 하는 것이 원본이 되는 글꼴입니다. 이것은 기본으
로 Windows\Fonts 폴더에 있습니다. 또는 제어판의 글꼴에 들어가셔도 괜찮습니다.
여기서 직접 글꼴 파일을 편집할 수는 없으므로, 먼저 이 폴더에서 굴림 글꼴을 임의
의 폴더에 복사하세요. (굴림 & 굴림체 & 돋움 & 돋움체 TrueType을 예로 듭니다)
FONTS 폴더 안에는 글꼴 파일은 파일이름이 아니라 '굴림 & 굴림체 & 돋움 & 돋움
체'와 같이 글꼴 이름으로 보여줍니다. 이것을 밖으로 복사하면「Gulim.ttc」라고 하
는 파일로 바뀌어 보이게 됩니다.


이 파일에서「트루 타입 글꼴」은 조금 다릅니다. 일반적으로 TrueType 글꼴 파일은
「ttf」라고 하는 확장자를 가지고 있지만, 이 파일의 확장자는 「ttc」입니다.
이 ttc 확장자는「TrueType Collection font file」이라고 불리며, 하나의 파일 안에
여러 개의 TrueType 글꼴 파일을 넣어둔 것입니다. 여러 개의 파일이라고는 해도,
ttf와 같은 종류를 하나로 이었다고 하는 단순한 것이 아니라, 그러한 글꼴 파일 중
에서, 일부 또는 모든 문자를 공유할 수 있다는 특징이 있습니다.
즉 gulim.ttc 안에는 굴림, 굴림체, 돋움, 돋움체 라는 글꼴 네 개가 함께 들어 있습
니다.

ttc파일에는 이 파일에 포함되는 여러 글꼴 중 공통의 문자에 대해서는 문자 데이터
를 공유할 수 있도록 만들어지고 있습니다.
그러나 이렇게 ttc로 되어 있는 파일의 경우 수정이 매우 어렵습니다. 그렇기 때문에
ttc 파일로부터 ttf 파일을 추출해야 합니다. 여기서「breakttc.exe」라고 하는 도구
을 이용하면 됩니다.

breakttc.exe는 , Microsoft가 공개하고 있는 것 TrueType SDK에 들어있는 있는 소프
트웨어로, ttc 파일을 분해한 뒤, 여러 개의 ttf 파일들을 추출해내는 기능을 가지고
있습니다. 그리고 이것과는 반대로, 여러개의 ttf파일을 하나로 합쳐서 ttc 파일을
만드는「makettc.exe」도 있습니다. 이것들은 다른 SDK 도구와 아울러 ttsdk.zip라고
하는 압축 파일로 Microsoft사의 FTP사이트에서 공개되고 있었지만, 지금은 공개하고
있지 않습니다. 그래서 따로 BREAKTTC.EXE와 MAKETTC.EXE를 첨부해 둡니다.

이것들은 아까 Gulim.ttc를 복사한 폴더에 넣으시면 됩니다.

여기까지 다 되었으면, 시작-실행-cmd를 시작하고 프롬프트 상에서 아래와 같은 명령
어를 입력하세요.

BREAKTTC gulim.ttc


명령어를 실행하면 ttc 파일에 포함되어 있는 ttf 파일(FONT00.TTF~FONT03.TTF)라는
이름으로 추출됩니다.
FONT00.TTF, FONT01.TTF, FONT02.TTF, FONT03.TTF 이 네 개의 파일은 직접 Windows 폴더 창에서 하나 하나 실행해보며 해당 글꼴의 이름을 파악할 수 있습니다.


★ EBDT를 제거하자
ttc 안에 있는 네 개의 파일이 추출되었으면, 다음에 추출된 ttf 파일들 각각에 비트
맵 데이터(EBDT)를 없애봅시다.
이것을 가능하게 하는 도구는 인터넷에서 찾아보면 여러 가지가 보이지만, 이번은
Microsoft가 공개한 sbit32.exe를 사용하겠습니다. 이 도구는 본래 기존의 ttf 파일
안의 비트맵 글꼴을 오히려 추가하기 위한 도구입니다. 즉, 이번에 ttf 파일 안의 비
트맵 글꼴을 제거하려는 목적과는 정반대이지만, 이미 추가된 비트맵 글꼴을 지우는
기능도 들어 있습니다. 하지만 앞의 ttsdk.zip는 Microsoft에서 공개하고 있지 않는
반면, sbit32.exe는 아직도 Microsoft의 사이트에서 공개하고 있습니다. 그러나 사용
자의 편의를 돕기 위해 따로 첨부했습니다.

SBIT32 -d [원본 글꼴 이름] [테스트 파일] [출력 파일 이름] 

[원본 글꼴 이름] : EBDT를 제거하려는 비트맵이 이미 포함된 글꼴 파일을 뜻합니다.
즉, 아까 추출했던 FONT00.ttf~FONT03.ttf를 지정하시면 됩니다.

[출력 파일 이름] : 비트맵 데이터가 제거된 결과물의 새로운 파일 이름을 뜻합니다.
[테스트 파일] : 처리 대상이 되는 비트맵 데이터의 정보를 말해주는 파일 이름입니
다. 앞서 말했지만 sbit32.exe는 기존의 글꼴 파일에 비트맵 데이터를 추가하는 것을
목적으로 하므로, 원래 지정하는 파일 안에, 비트 맵 글꼴의 데이터를 넣어두어야 합
니다. 그러나 우리가 하려는 것은 기존의 파일로부터 비트맵 글꼴의 데이터를 제거하
는 게 목적이므로 여기에는 제거하고 싶은 비트맵 정보를 넣어 두면 됩니다. 구체적
으로 말하자면 테스트 파일 안에 들어있는 형식은 아래와 같아야 합니다.

PPEM [크기]
END

[크기]는 비트맵 데이터의 화소 수를 뜻합니다. 이 내용을 텍스트 파일로서 저장하
여, SBIT32.EXE의 매개변수로 사용할 것이며 [크기]로 지정된 화소 크기에 맞는 비트
맵 데이터만이 제거됩니다. 하나의 글꼴에는 여러 개의 화소 크기를 가지는 비트맵
데이터가 들어있는 것이 보통이므로, 제거하려는 크기에 맞도록 하나하나 이 명령어
를 실행해 줄 필요가 있습니다.

여기서 굴림, 굴림체, 돋움, 돋움체의 크기 11~22까지 비트맵 데이터의 화소 크기로
처리되고 있습니다.
SBIT32.EXE는 이것들(11, 12, 13, 14, 15, ~, 22)을 한 번에 지우지 못하고, 하나 하
나 차례대로 지워나갈 수 밖에 없습니다. 즉 따로따로 테스트 파일을 만들어내야 한
다는 것입니다.
물론 모두 수작업으로 해줘도 상관 없지만 그렇게 하면 너무 귀찮으니까 따로 배치파
일을 만들어 보았습니다.
========================================================
@echo off
copy %1 %2 >nul
cls
echo PPEM 11 > mtemp.txt
echo END >>mtemp.txt
sbit32 -d %2 mtemp.txt ftemp.ttf
del %2
ren ftemp.ttf %2
cls
echo PPEM 12 > mtemp.txt
echo END >>mtemp.txt
sbit32 -d %2 mtemp.txt ftemp.ttf
del %2
ren ftemp.ttf %2
cls
echo PPEM 13 > mtemp.txt
echo END >>mtemp.txt
sbit32 -d %2 mtemp.txt ftemp.ttf
del %2
ren ftemp.ttf %2
.
.
.
cls
echo PPEM 22 > mtemp.txt
echo END >>mtemp.txt
sbit32 -d %2 mtemp.txt ftemp.ttf
del %2
ren ftemp.ttf %2
del mtemp.txt
cls
echo 글꼴의 비트맵 데이터가 제거되었습니다.
echo.
echo 아무키나 누르십시오.
pause >nul
========================================================
...은 생략

이 내용을 배치파일로 저장하여 BREAKER.BAT로 저장하시면 됩니다. (이미 첨부 파일에
BREAKER.BAT를 넣어 놓았습니다)

아래와 같이 원본의 글꼴 파일과 새로운 폰트 파일의 이름을 지정하세요. 이것으로
크기 11에서 크기22까지 EBDT가 모두 삭제되어 출력 글꼴 파일로 저장됩니다. 예를
들어, 배치파일 이름 BREAKER.BAT를 사용하여

BREAKER font00.ttf 0.ttf      - 굴림 
BREAKER font01.ttf 1.ttf      - 굴림체
BREAKER font02.ttf 2.ttf      - 돋움
BREAKER font03.ttf 3.ttf      - 돋움체

라고 입력해 주면,
font00.ttf에서 EBDT가 제거된 것이 0.ttf로,
font01.ttf에서 EBDT가 제거된 것이 1.ttf로,
font02.ttf에서 EBDT가 제거된 것이 2.ttf로,
font03.ttf에서 EBDT가 제거된 것이 3.ttf로,
저장되게 됩니다. 물론 다른 글꼴도 마찬가지입니다.

앞서 말씀드렸지만, EBDT을 지우는 것만으로는, 이후 이 글꼴로 ClearType을 사용할
수 있지만 일반 안티엘리어싱(표준)을 사용할 때에는 어떠한 효과도 느낄 수 없습니
다. 이것을 사용하려면 앞서 소개했던 ttfmod를 사용하는 것이 편합니다. 이 도구도
TTF 파일이 아닌 다른 파일은 지원하지 않으므로, 이 단계에서 각 글꼴에 ttfmod
사용하게 되면 일반 안티엘리어싱과 ClearType 모두 글꼴에 적용됩니다.

★ 글꼴 이름을 바꿔보자
다음 단계는 글꼴 파일 속에 들어있는 글꼴 이름을 바꾸는 것입니다. Windows 상의
글꼴은 글꼴의 파일 이름이 아니라 글꼴 자신의 이름으로 구별하게 됩니다. 즉 글꼴
파일의 이름이 달라도, 글꼴 속에 있는 글꼴 이름이 똑같다면 같은 글꼴이라고 인식
되어 보여줍니다.

지금까지는 ClearType을 사용할 수 있도록 수정만 해두었지, 글꼴 이름은 손을 대지
않아서 아직도 '굴림', '굴림체', '돋움', '돋움체'로 남아있을 것입니다.
따라서 글꼴을 구분해 주기 위해 굴림CT, 굴림체CT, 돋움CT, 돋움체CT로 이름을 바꿔
보도록 하겠습니다. (여기서 CT는 ClearType의 약자로 해보았습니다)

글꼴의 이름을 바꾸려면 ttfname.exe이라고 하는 도구를 사용하는 게 편합니다. 이미
첨부 파일에 포함해 두었습니다.

사용법) ttfname.exe [이름을 바꿀 글꼴 이름]

ttfname.exe의 화면 안에서 FontName(글꼴 이름), FamilyName(계열 이름),
UniqueIdentifier(고유 증명)은 반드시 바꾸도록 합시다. PostScriptName 쪽도 똑같
이 바꿔 주는 게 좋습니다.



FontName
FamilyName
UniqueIdentifier
PostScriptName
이 4개의 값을 원하는 이름으로 바꾸세요.

★ 기존의 4개의 TTF 파일을 TTC로 합치자
모든 TTF 글꼴의 이름을 바꿨으면, 맨 처음에 TTC에서 TTF를 추출한 것과는 반대로
새로운TTC를 만들어야 합니다. 여기서는「makettc.exe」라는 도구를 사용하겠습니다.
makettc.exe의 사용법은 아래와 같습니다.

MAKETTC [TTC 파일 이름] [TTF 파일 이름1] [TTF 파일 이름2] ...

매개변수에서 맨 처음 [TTC 파일 이름]은 새롭게 만들 TTC 파일 이름을 지정하시면
됩니다. (예를 들면 gulimct.ttc)
그 뒤에는 아까 수정했던 0.TTF, 1.TTF, 2.TTF, 3.TTF를 넣어주시면 됩니다.
즉, MAKETTC gulimct.ttc 0.ttf 1.ttf 2.ttf 3.ttf
라고 입력해 주시면 됩니다.

★ 글꼴을 등록하자
글꼴 수정은 여기서 끝났습니다. EBDT가 없는 완성된 글꼴 파일을 Windows의 FONTS
폴더에 끌어서 놓으시면 됩니다.
자신이 사용하고 싶어하는 응용 프로그램에도 ClearType이 가능하도록 수정된 자신만
의 글꼴을 사용할 수 있습니다.
예를 들어, Microsoft Internet Explorer의 경우 도구(T)-인터넷 옵션(O)-일반-글꼴
(N)로 들어가셔서 왼쪽과 오른쪽을 모두 수정된 글꼴로 바꾸시면 됩니다. 제 생각엔
굴림CT 보다는 돋움CT가 더 나은 것 같습니다.


출처 : http://www.parkoz.com/zboard/view.php?id=my_tips&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=cleartype&select_arrange=headnum&desc=asc&no=1682
반응형
Posted by Real_G