마이컴 1993년 4월호

신기술시리즈 - 완벽한 글꼴 표현,그레이스케일 폰트




컴퓨터에 나타나는 글자 폰트

폰트(FONT)는 글자의 모양이나 크기가 통일된 1조의 활자 또는 문자의 형을 말한다. 이렇게 정형화된 글자 모양을 그대로 사용하는 것이 아니라 글자의 모양을 전산화시켜 나타내주는 것을 디지털 폰트라 하는 데, 컴퓨터의 계산 능력에 따라 다양 하게 변화가 가능하다. 


컴퓨터나 프린터에서 이용하는 글자는 디지털 폰트로 표현되는 것인데, 글자꼴을 표현하고 기억하는 방식에 따라 크게 세가지로 나누어 볼 수 있다. 


글자를 그림 또는 화상으로 간주하여 픽셀 단위로 표현하는 비트맵 폰트(BITMAP FONT, 점글자꼴), 글 자의 윤곽선을 기하학으로 표현하여 수학적인 직선이나 곡선으로 구성하는 아웃라인 폰트(OUTLINE FONT 윤곽선 폰트), 그리고 글자의 구조를 획의 위상으로 표현하는 구조적 폰트(STRUCTURAL FONT) 가 있다.



비트맵 폰트와 윤곽선 폰트 

현재 가장 많이 사용되고 있는 폰트는 비트맵 폰트인데 점을 찍어 나타내고자 하는 글자꼴을 표현하는 방

식이다. 


즉 각 픽셀에 해당하는 값을 해당 위치에 표시해 주게 되는데, 그 값은 0과 1로 되어 있다. 그래서 1 일 경우 까맣게 칠해 주고 0일 경우 하얗게 칠하게 된다. 즉 한글자에 해당하는 사각형을 글자 내부에 해당하는 부분은 1로, 외부는 0으로 표시하는 점행렬 방식으로 나타낸다. 


비트맵 폰트는 만든 글자의 모양과 출력된 모양이 동일하고 제작이 쉬우며, 출력 속도가 빠르다는 것이 장점이다. 작은 크기의 글자를 표현할 때 가장 선명하게 출력되며, 낮은 해상도의 프린터에서 많이 사용된다. 


그러나 해상도가 높은 출력기에서 고품위 글자를 출력하려면 기억된 글자꼴의 크기, 즉 점의 개수가 많아야 한다. 


보통 100x100 도트 이상의 크기를 사용하는데 최소한 글자당 1K 바이트 이상이 소요되므로 매우 많은 양의 기억 공간을 필요로 한다. 기억 용량을 줄이기 위해 연속점 길이 방식이나 방향점 방식 등과 같은 방식을 사용하기도 한다. 


비트맵의 가장 큰 단점은 기억 용량이 크다는 것외에 글자의 크기, 기울임, 회전 폭의 변화 등 여러가지 글자꼴 변형에 제약이 있다는 점이다. 


크기를 변화시킬 경우 축소할 때는 무난하지만 확대할 때는 글자의 윤곽이 거칠어지고 저장된 크기가 작 을수록 출력기의 해상도를 충분히 활용하지 못하게 된다. 


글자의 기울임이나 회전의 경우도 처리는 가능하지만 결과의 품질이 떨어지고 처리 시간이 많이 소요되므로 출력기에서 이러한 변형은 거의 사용하지 않는다.  


이러한 비트맵의 문제점을 해결하기 위해 등장한 폰트가 바로 윤곽선 폰트이다. 윤곽선 폰트란, 문자의 윤곽을 표시하는 데이터의 점들을 부드러운 곡선 등으로 연결한 폰트이다. 


윤곽선 폰트는 글자의 형태를 그린 다음 그 테두리 안에 색을 칠해넣는 방법으로 폰트의 모양을 완성하게 된다. 즉 윤곽선 폰트는 글자의 기본 모양을 이미 완성시켜 놓은 다음 그것을 데이터로 저장시켜 놓는다. 


이렇게 저장된 데이터를 축소/확대하여 화면에 출력해 주게 되므로 훨씬 선명하게 글자를 표현해 주게 된다. 특히 확대시 매끄럽게 확대되고 오히려 확대될 때 그 효과가 크다.


윤곽선 폰트를 출력하려면 직선과 곡선으로 표현된 폰트 정보를 일정한 형태의 2차원 화소 배열, 즉 비트맵 폰트로 변환해 주는 과정을 거쳐야 하는데, 이러한 과정을 래스터라이징이라고 한다. 


한편 윤곽선 폰트 데이터를 가지고 실시간에 원하는 크기의 비트맵 폰트를 만들어 주는 프로그램을 윤곽선 폰트 래스터라이저라 고 한다.  


윤곽선 폰트 방식으로는 글자의 크기나 기울기, 회전 등의 변화를 모두 표현할 수 있어서 하나의 크기에 대한 데이터만 있으면 되므로 기억 용량이 감소하고 고해상도의 출력기일 수록 글자의 품질은 더욱 정교해진다.  


이렇게 윤곽선 폰트가 기존의 비트맵 폰트에 비해 뛰어난 유연성과 품질, 기억 공간의 효율적 사용 등 장 점을 많이 갖고 있지만 비트맵 폰트에 비해 제작이 어렵고 계산량이 많아 출력 속도는 비트맵 폰트보다 느리다. 


윤곽선 폰트의 가장 큰 문제점은 바로 작은 크기의 글자를 출력하는데 있는데 글자꼴이 분명하게 나오지 않고 출력도 선명하지 않게 된다.




영문자와 한글의 차이점  

이렇게 윤곽선 폰트에서 글자꼴을 축소했을 경우 비트맵 폰트보다 그 질이 떨어지는 것은 계산 오차의 누적으로 일어나는 현상인데 16×16 정도의 크기일 때 글자 모양이 이상하게 표현된다. 계단 현상이라 하여 곧은 선이 중간에 한번 어긋나거나 획이 사라지고, 획의 굵기와 간격이 다르게 나타내지기도 한다. 


이런 문제점을 해결하기 위해 도입된 방법이 힌팅 방법이다. 힌팅이란 낮은 해상도나 작은 크기의 글자에서 보다 나은 품질의 글자를 얻기 위해 윤곽선을 교정하거나 래스터라이저에 정보를 추가하여 비트맵을 생성하는 기법이다. 


힌팅에는 여러 가지 기술이 있는데, 획이 사라지는 현상을 방지하거나, 획 굵기를 일정하게 유지하기, 사이의 간격을 조정함으로써 글자의 균형을 맞추거나 또 작은 글자에서 세리프(serif) 등을 따로 처리하는 작업 등을 들 수 있다.  


이 힌팅 기법의 도입으로 윤곽선 폰트의 문제는 대부분이 해결이 되어 현재 미국 아도베사(Adobe Syste

ms, Inc.)의 포스트스크립트 타입 1 (PostScript Type 1)이나 애플과 마이크로소프트가 공동으로 개발한 트루 타입(True Type) 등 상용화된 폰트들이 있다. 


특히 영문자의 경우 글자꼴이 단순하고 간단한 곡선과 직선으로 이루어져 있어 윤곽선 폰트로도 깨끗하고 깔끔한 글자를 연출해 낼 수 있는 것이 사실이다. 


또 글자 꼴도 많지 않아 모두 합쳐 보아도 40여종류의 폰트밖에 없어 미리 데이터를 만드는데 있어서도 그다지 큰 문제가 되지 않는다.  


하지만 동양권의 글자들은 그런 그리스 계열의 문자와 사뭇 다르다. 특히 한글의 경우 그 지원 서체만해도, 고딕체, 명조체, 샘물체 등 다양하고 그 글자도 많아 4000여 종류가 넘게 된다. 


한자의 경우는 그 상황이 더욱 심각하여 8000여 종류가 되므로 그 데이터량이 너무 방대해지게 되어 OS 상에서의 지원없이는 거의 이용이 불가능한 상태이다. 


또 한글과 한자는 그 구성이 조밀하고 획과 구부러짐이 다양해 모든 것의 상황 판단을 하기에 어려움이 많다. 그러므로 동양의 문자에는 아웃라인 폰트 방식이 적합하지 않다는 결론이다. 


이런 어려운 점을 해결하기 위해 등장한 것이 바로 그레이스케일 폰트이다.



그레이스케일이란?

그레이스케일 폰트 기술이란, 0과 1의 2진 행렬로 표현되는 비트맵 폰트 방식에서 글자를 크게 확대시켰을 때 나타나는 글자 테두리의 계단 현상을 줄여, 부드럽게 표현할 뿐만 아니라 작은 글자도 선명하게 나타냄으로써 화면상에서 고품위 글자를 볼 수 있게 해주는 기술이다. 


그레이스케일 폰트는 회색조 글꼴 또는 다계조 폰트, 퍼지 폰트 등 여러가지 명 칭으로 불리기도 하는데, 원래 그레이스케일이란 검정색에서 흰색 사이에 포함되는 단계적인 회색을 가리키는 말이다.  


비트맵 폰트 같은 경우 검정과 흰색의 양분된 색으로 글자를 표현하고 모눈 종이 위에 점을 찍는 것과 마찬가지 방식으로 나타내게 된다. 그러므로 0을 표현하고자 하면 둥그렇게 만들어지는 것이 아니라 어설픈 0을 나타내 주게 된다. 


윤곽선 폰트에서도 비트맵에 비해서는 발전된 형태의 폰트지만 작은 크기에서는 품질이 저하되고 직선이나 곡선 성분을 일정한 격자 형태의 프레임 버퍼에 구현함으 로써 생기는 계단 현상을 해결할 수 가 없다.


그렇게 양분된 색으로 표현했을 때의 문제점을 조금이나마 줄이기 위해 검정과 흰색 사이에 색의 농도를 조절해 주는 것이다. 


즉 1을 표 현하고자 할 때 가운데 부분은 가장 검게, 바깥쪽으로 갈수록 점점 여리게 처리하여 글꼴을 출력하였을 때 부드럽게 글꼴이 마무리 되게 하는것이다. 


두 단계의 색을 16~256 단계까지 색의 폭을 늘려 부드러우면서도 깨끗한 글꼴을 만들어 낼 수 있는 것이다. 


비트맵의 경우 한 픽셀당 1비트의 메모리를 차지하지만 그레이스케일은 4~8비트의 메모리를 차지하므로 비트맵보다 4~8배의 메모리를 차지하게 된다. 


또 많은 양의 메모리를 화면에 띄우려면 출력 속도도 그만큼 느려지게 된다. 하지만 메모리 가격이 크게 하락되어 메모리 향상에 의한 문제점은 해 결될 수 있을 것으로 보인다.




그레이스케일 폰트 개발 과정

그레이스케일 폰트를 만드는 과정은 크게 두 단계로 나누어 볼 수 있다. 그레이스케일 폰트는 윤곽선 폰트의 일종으로 우선 윤곽선 폰트 데이터로부터 커다란 비트맵 폰트를 만들어야 한다. 


두 번째 단계에서는 비트맵 폰트에 적절히 필터 함수를 적용시켜, 그레이스케일 폰트를 만든다.


1. 윤곽선 폰트 데이터로부터 비트맵 폰트를 만든다.  

하나의 그레이 픽셀을 얻기 위해 여러개의 비트맵 픽셀을 사용하므로, 변환에 쓰일 비트맵 글자의 크기는 최종적으로 만들어질 그레이스케일 폰트의 크기보다 커야 한다. 


비트맵 폰트의 크기가 16×16이고 필터의 크기가 2×2이면, 8×8 크기의 회색조 글자가 만들어진다. 필터의 크기가 2×2이면 그레이단계는 4단계가 되는데, 이는 필터에 통과되는 2x2크기의 비트맵 블럭 면적의 값을 0부터 3까지 가질 수 있기 때문이다. 


따라서 16단계의 그레이를 포함하는 그레이스케일 폰트를 생성하려면 4×4필터가 필요하고 따라서 96 x 96 크기의 비트맵이 필요하게 된다.


2. 비트맵 폰트를 샘플링될 가로/세로로 블럭을 나눈다.


3. 각 블럭에 적절한 필터를 이용, 샘플링함으로써 각각의 그레이픽셀을 얻는다. 이러한 샘플링 연산과정에는, 각 블럭에 필터를 적용했을 때 각 비트 픽셀이 얼마의 값으로 반영 되는지를 계산한다. 


여기서 얻어진 그레이값이 0.4만큼의 밝기로 출력 될 것이다. 필터는 크게 세가지 형태로 나누어 볼 수 있는데, 수직 단면 형태에 따라 평면 필터, 삼각 필터, 종형 필터 등이 있다. 


각 필터마다 설계 특성이 달라 어떤 필터를 사용하느냐에 따라 그레이스케일 폰트의 품질이 달라진다.


4. 이러한 샘플링 연산을 모든 블럭에 대해 반복적으로 수행하여, 하나의 완전한 그레이스케일 폰트를 만 들어낸다. 이때 인접하는 샘플링 블럭을 중첩시키지 않는 경우와 중첩되게 두는 경우 나타내는 결과가 아주 다르다. 


블럭들을 반복적으로 수행할수록 전체적으로 희미한 출력을 얻게 되는 효과가 있어 그 글꼴의 표현이 부드 러워진다.




우리 글꼴에 맞는 폰트 개발되야  

컴퓨터가 많이 보급됨에 따라 컴퓨터을 사용하는 사람들의 요구도 다양해 졌다. 일상 생활과 관련되어 컴퓨터가 많이 이용되고 있는데, 가장 많이 사용하는 예중 하나가 문서 작성일 것이다. 


처음에는 단순히 출력된 다는 것에 만족을 하였지만 점차 아름답고 깨끗한 출력물을 원하게 되었고, 그런 요구를 충족시키기 위해서 는 뛰어난 폰트의 개발이 우선되야 한다.


컴퓨터가 개발된 미국에서는 이미 그들의 글꼴에 맞는 다양한 폰트가 개발되었다. 국내에서는 다른 컴퓨터 제품들과 마찬가지로 그들이 개발한 폰트를 그대로 가져다 사용했는데, 한글과 영어는 그 구조와 모양이 확연히 달라 우리글을 제대로 표현해 주지 못했었다. 


그런 상황에서 우리 글꼴을 자연스럽게 표현해 줄 수 있는 그레이스케일 폰트의 개발은 희소식이 아닐 수 없다. 


이번 휴먼 컴퓨터의 그레이스케일 폰트 국내 개발 성공을 계기로 우리 글꼴에 맞는 다양한 폰트들이 많이 개발되었으면 하는 바램이다.








    이글은 지금은 없어진 컴퓨터 잡지, 마이컴 1993년 4월호 기사에서 발췌한 내용입니다

    







글이 마음에 드시면 아래 공감버튼 살짝 눌러주세요.

공감과 댓글은 저에게 큰 힘이 됩니다. 







728x90
반응형
Posted by 전화카드
,