brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Jan 06. 2018

조합형 코드, 완성형 코드.
조합폰트, 완성형 폰트

한글 글꼴의 구성

유니코드(Unicode)


한글은 초성, 중성, 종성의 모임이 하나의 글자를 만들어, 거의 대부분의 소리를 표현할 수 있는 과학적인 문자이다. 

현대 한글이 글자 수는 

초성 19자,

중성 21자,

종성 27자 이고 

받침이 없는 경우를 따져서 조합의 숫자를 따져보면

19  X  21  X  28  =  11,172자가 된다.

해당 글자들은 유니코드(Unicode)의 문자코드를 부여받아서 0 xac00("가")부터 0xD7A3("힣")까지의 코드로 표현될 수 있다. 코드표는 (http://www.unicode.org)에서 확인 및 다운로드가 가능하며, 해당 사이트에서는 세계 모든 나라 문자의 코드표를 확인할 수 있다.

유니코드 테이블 보기 - 각 글자의 코드 값이 표시되어 있다.


2바이트(byte)인 유니코드를 사용하면 65,536자의 글자가 표현 가능하므로 대부분의 국가의 문자를 표현하는 것이 가능해졌다.


완성형 코드


영문 키보드의 알파벳과 숫자의 합은 94자이고, 컴퓨터를 최초로 만든 사람들이 알파벳 사용 문화권의 사람들이다 보니, 컴퓨터가 최초로 만들어진 당시에는 1 byte(8개의 1 또는 0을 조합하여 최대 256자 표현 가능) 형태의 코드만이 존재했고, 영문에서는 그나마 256자가 모두 필요하지 않아서 그중 128자 만을 사용했다. 



컴퓨터가 많은 국가에 퍼져나가고 영문뿐 아니라 아시아 및 중동 국가의 문자를 표현하는 것이 필요해졌을 때 세계 표준을 만드는 사람들이 256자 중 128자 만을 사용(첫 번째 bit를 0으로 고정)하는 그들의 1 byte 코드의 영역 하나를 사용(첫 번째 bit를 1로 고정)하여, 이 영역이 표시되어 있을 경우 다음 byte까지를 하나의 문자로 생각하여 외국 문자를 표현하는 방식을 개발했다. 영미 문화권의 기존 데이터는 손을 대지 않아도 된다는 생각 때문이었을 것이고, 힘없는 대한민국의 한글은 그 당시에 2,350자의 영역을 부여받는다.(추가 자리도 있기는 하였으나 한글의 표현은 2,350자에 한정하였다.)


표현해야 하는 글자는 11,172자인데 이용할 수 있는 영역은 2,350자였으므로 여러 학자들이 모여서 2,350자에 넣을 한글을 추려 냈다고 한다. 물론 그분들의 노력이 있어서 일상생활에 사용하는 대부분의 한글은 그 2,350자에서 추출하여 사용하는 것이 가능했다. 이때 만들어진 코드가 국가 표준이 되었던 KSC5601 기반의 한글 완성형 코드이다. 

영역이 가지는 한계가 있었으므로 당연히 황당한 경우도 발생하게 되었다. 오래전에 방영되었던 TV 드라마 "똠방각하"의 제호의 첫 글자 "똠"자는 완성형 코드에 들어 있지 않았다. 또한 영화 자막을 입력할 때에 필름의 길이 때문에 말을 줄여서 표현하는 경우가 많은데, "여기있어"를 "여깄어"라고 줄이면 "깄"이라는 글자가 나타나지 않았다. 그 역시 완성형 코드의 글자가 아니었기 때문이다. 


그리고 한글의 영역이 하나의 영역에 붙어있지 않고 

0xB0A1~0xB0FE, 0xB1A1~B1FE, ~~~~, 0xC8A1~0xC8FE 와 같이 25개 영역에 각각 94자 씩의 글자 그룹으로 나누어져 있어서 코드의 연속성 역시 부여되지 못하였다.

차후에 부족한 글자를 별도의 코드로 보완한 확장완성형 코드가 만들어지기는 하나, 코드의 불합리성 때문에 코드만으로는 정렬이 되지 않고 코드의 연속성에 더 큰 혼란을 야기하였다.


조합형 코드


그래서 모든 한글을 표현하기 위하여 국가 표준이 아닌 다양한 방법으로 11,172자를 구현하는 방식이 만들어졌다. 그런데 표현은 가능하였을지라도 그 코드값은 통일되지 않았었다.

그때 가장 많이 사용된 조합형 코드는 상용 조합형, 삼보조합형, KSSM 조합형 등으로 불린 코드로 2개의 바이트 (8비트 X 2 = 16비트)의 16자리 중 첫 번째 비트를 1로 세팅하고 나머지 15개를 각각 초, 중, 종성 용 5개 비트로 나누어 한글을 표현하는 방식이었다. 이 코드는 국가 표준 완성형 코드가 제정되기 이전부터 사용된 코드로 차후에 정부가 제정한 나름의 조합형 코드와 매우 유사하다.


이 코드를 통하여 현대 한글 모두를 표현할 수는 있었지만, 대부분의 컴퓨터 업체들이 국가 표준인 완성형 코드를 채택하여, 응용프로그램 내부에서 모든 한글을 처리하는 코드로 사용되게 된다.


폰트 제작


국가 표준이 완성형 코드만을 사용하도록 만들어져, 초창기 한글 폰트 대부분은 2,350자의 글자들로만 구성되었다. 앞서 말한 바와 같이 25개 영역으로 분산된 완성형 글자를 해당 코드에 맞추어 94개씩 디자인하고 별도의 프로그램으로 이 글자들를 하나의 폰트로 합쳐서 개발하는 형태로 폰트를 제작하였다.

그런데 모든 한글의 사용에 대한 요구가 계속되고, 유니코드를 지원하는 소프트웨어가 많이 만들어지면서 한글 폰트 역시 11,172자를 모두 지원해야 하는 상황이 오게 되었다. 

영문의 경우 키보드의 문자를 지원하는데 필요한 글자의 숫자는 94자이다. 한글은 완성형 글자만을 만들어도 2,350자와 낱자 등등을 만들어야 한다. 한글 폰트의 다양성이 영문에 비하여 상대적으로 떨어지는 이유가 이러한 이유이다. 하나의 글꼴 디자인을 완성하는데 걸리는 시간이 최소한 2개월이 걸리기 때문인 것이다.

따라서 11,172자의 글자를 모두 하나하나씩 완성자로 만드는 것은 불가능에 가까운 일이라고 생각되었다. 

더욱이 글꼴이 발매되고 몇 개월만 지나면 복제한 폰트 파일이 인터넷에 퍼지고, 나의 업계 동업자 정신을 가져야 할 다른 폰트 업체에서 비슷한 글꼴에 비슷한 이름을 붙여서 발매하는 현실에서 글꼴 하나에 2~3개월을 추가로 투입하는 것은 난감한 일이었다. 

그러나 한글은 창제 당시부터 지니고 있는 과학적 특성 즉 초성, 중성, 종성의 조합이 하나의 글자를 이루는 원리를 사용하여, 많은 폰트 제작 업체에서 조합을 통해 모든 글자를 구현하는 방식을 사용하고 있다.


자주 사용하는 글자는 완성자로 만들되 그렇지 않은 글자들은 조합을 통하여 표현을 할 수 있도록 하는 방식이다. 

태-빅B 글꼴 : 조합이 불가능한 형태를 가진다.

물론 모든 글자가 조합을 통하여 구현되는 것은 아니다. "태-빅"체과 같이 자소가 서로를 침범하는 글자의 경우는 조합이 불가능한 형태이다. 이럴 경우에도 최소한 2,350자 글자는 표현해야 한글 폰트로서의 가치를 가지게 되는 것이다.


조합을 구현하는 디자인과 프로그램의 방식은 차후의 글에서 좀 더 자세히 설명하도록 하겠다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari