한국어정보처리개요 한국어정보의전산처리 2017. 3. 8.
컴퓨터의기본속성 컴퓨터에서모든데이터와명령은 2 진수로표상됨. 컴퓨터의핵심구성요소인저장장치와연산장치는모두반도체임. 반도체는기억소자를매우작게하여좁은공간안에수많은기억소자들을집적해놓은것. 하나의기억소자는 on( 켜져있는상태 ) 과 off( 꺼져있는상태 ) 의두가지상태에만있을수있음. 하나의기억소자가 3 가지상태를가질수있는반도체에대한연구가진행되고있음. ( 상용화되려면시간이꽤걸릴듯 ) 편의상 on 상태를 1 로, off 상태를 0 으로간주함. 컴퓨터에서행해지는연산은궁극적으로 어떤위치의기억소자의상태를 0 에서 1 로, 또는 1 에서 0 으로바꿔라 라는가장기초적인연산으로구성되어있음.
X 정보처리란? X 를컴퓨터에서구현 / 표현할수있는방안을모색 X 를컴퓨터에서더효율적으로구현 / 표현하고유통시킬수있는방안을모색 X 를컴퓨터에서구현하는데에는입력, 내부처리, 출력의세단계를생각할수있음. 내부처리, 입력, 출력의순서로살펴봄.
X 가음악인경우 입력 공기중에서음파의형태로구현되는소리정보 ( 아날로그사운드 ) 를마이크등의입력장치를통해흡수 내부처리 아날로그사운드에포함된여러정보 ( 파형, 주파수, 세기등 ) 를일정한규약에따라디지털화 (2 진수로표현 ). 디지털파일의형태 (wave, mp3 등 ) 로저장하고유통. 출력 디지털음악파일을스피커, 이어폰등의출력장치를통해아날로그사운드 ( 음파 ) 로재현
X 가이미지 / 사진인경우 입력 이미지가갖고있는시각정보 ( 아날로그이미지 ) 를스캐너, 카메라등의입력장치를통해흡수 내부처리 아날로그이미지에포함된여러정보를일정한규약에따라디지털화. 예컨대아날로그이미지가펼쳐져있는공간을일정한수의격자 ( 화소 ) 로분해하고각격자의색채를디지털형태로표현. 예컨대 R G B 의세차원각각을 0~255 사이의정수로표현. 이들정수도궁극적으로는 2 진수로표현. bmp, jpg, gif 등의파일포맷으로저장하고유통. 출력 디지털이미지파일을모니터, 프린터등의출력장치를통해아날로그이미지로재현
X 가한국어인경우 한국어정보처리란, 한국어라는언어및이를사용하여생산되는수많은발화, 문장, 담화, 텍스트들을컴퓨터로적절히처리하여, 이로부터사용자가원하는정보를추출하는것. 언어행위, 언어생활은음성언어를사용하여이루어지기도하고문자를사용하여이루어지기도함. 음성언어보다는문자가, 컴퓨터가처리하기에적합하므로, 음성언어를사용하여이루어진언어행위의산물도문자로변환하여컴퓨터로처리하는것이일반적임. 음성언어 문자변환을흔히음성인식 (speech recognition) 이라함. 따라서한국어정보처리는, 음성언어로서의한국어를한글, 로마자등의문자로변환하여처리하는것이보통임.
X 가문자인경우 입력 키보드나터치패드상의가상키보드등의입력장치를통해, ( 일정한규약에따라정해진 ) 키스트로크연쇄와문자간의매핑관계에따라문자정보를입력함. 내부처리 미리정해진규약에따라문자를 2 진수형태로변환하여기억장치 (CPU 캐시, RAM, 하드디스크 ) 에저장. 텍스트 (txt) 파일포맷으로저장하고유통. 출력 2 진수형태로저장된정보를정해진규약에따라문자로매핑하여, 각문자를모니터, 프린터등의출력장치에시각적형태의문자로재현. 하나의문자가폰트에따라다양한시각적형태로드러날수있음.
문자코드 (character code) 의기본개념 문자코드 : 문자의내부처리에서, 각문자와 2 진수사이의매핑관계를정해놓은것 0 또는 1( 즉 on or off) 의 1 자리 2 진수에해당하는정보를저장할수있는단위를비트 (bit, binary digit) 라고한다. 하드웨어적으로말하면, 최소의기억소자. 즉 1 비트의저장공간에는 2 가지기호밖에저장할수없다. 8 비트의묶음을 1 바이트 (byte) 라고한다. 1 바이트에저장될수있는기호의수 = 2 8 = 256 연산장치가한번에읽을수있는단위를워드 (word) 라고한다. 워드의크기는하드웨어에따라다르다. 8 비트컴퓨터 : 1 워드 =8 비트 =1 바이트 64 비트컴퓨터 : 1 워드 =64 비트 =8 바이트
아스키코드 컴퓨터기술은미국에서가장먼저발달했음. 미국에서사용되는문자는로마자 ( 속칭영문자 ). 영문자대문자 26 개, 소문자 26 개, 아라비아숫자, 기타기호등을모두합쳐도 100 개남짓. 따라서하나의문자를 1 바이트로표현할수있음. 달리말하면 1 바이트의저장공간만있으면 100 여개의문자를구분할수있음. 미국국가표준기구 (ANSI, American National Standard Institute) 에서는이문자들과 2 진수사이의매핑관계를정해놓았음. 이것을아스키 (ASCII, American Standard Code for Information Interchange) 라고함.
아스키코드 아스키코드에서영문자대문자는 65~90 번, 소문자는 97~122 번에배정되어있고, 숫자는 48 번 (0)~57 번 (9) 에배당되어있음. 여기서 A 가 65 번이라는말의의미는? A 라는문자가컴퓨터에서처리될때에는 1 바이트의저장공간안에다음과같이 2 진수로기록된다는뜻. 0 1 0 0 0 0 0 1 이 2 진수는 10 진수로표현하면 65 가되고 16 진수로표현하면 41 이된다. 16 진수를표기할때에는 10 진수와구분하기위해앞에 0x 를붙여준다. 2 진수 16 진수 10 진수 A 0100 0001 0x41 65 B 0100 0010 0x42 66 C 0100 0011 0x43 67
텍스트 (txt) 파일 컴퓨터에서메모장같은텍스트에디터를열고키보드에 Hello! 이라고입력하면 메모리에는 01001000 01100101 01101100 01101100 01101111 00100001 이라고기록됨. 이 2 진수들의연쇄를 16 진수들의연쇄로고쳐적으면 0x48 0x65 0x6c 0x6c 0x6f 0x21 이됨. 이것을텍스트파일로저장하면하드디스크의일정한주소영역에위의 2 진수들이차례로기록되어저장되는것임.
1 바이트문자와 2 바이트문자 한글은현재통용되고있는것만따져도수천개나되기때문에 1 바이트가지고는모든한글을구별하여나타낼수없음. 2 바이트 =16 비트. 2 16 = 65536 개의기호를구분할수있음. 따라서 2 바이트로모든한글문자들을나타낼수있음. 예컨대한글문자 가 는 10110000 10100001 (16 진수로는 0xb0a1) 으로나타낼수있음. 컴퓨터가연산을수행할때, 저장공간에기록되어있는문자가 1 바이트짜리인지 2 바이트짜리인지어떻게알까? 1 바이트문자는바이트의첫비트 (MSB, most significant bit) 가 0 이고 2 바이트문자는 MSB 가 1 이라고규약을정해놓으면됨.
문자코드의국가표준 문자코드의표준이없고, 회사마다기계마다다르다면, A 회사에서만든컴퓨터 / 소프트웨어로작성한텍스트문서를 B 회사에서만든컴퓨터 / 소프트웨어로열어보면완전히다른문자로보일수있음. 정보의원활한유통과처리를위해서는문자코드의표준이필요함. 미국에서아스키코드를문자코드의국가표준으로정해놓았음. 그후전세계에서아스키코드가국제표준처럼자리잡았음. 아스키코드에포함된문자들이외의문자를사용하는국가에서는, 그국가나름의문자코드표준을제정해야할필요성이대두됨. 1 바이트문자뿐아니라 2 바이트문자까지사용해야하는나라에서는문자코드의표준을정하는일이그리단순치않을수있음. 경제성 ( 저장공간을적게차지할수록좋음 ) 과효율성 ( 연산을빨리수행할수있을수록좋음 ) 을고려하여문자코드표준을정해야함.
한글코드의초기역사 초기에는한글한글자를 3 바이트로표현하는방안이제안됨. 초성 1 바이트, 중성 1 바이트, 종성 1 바이트 한글한글자가초성, 중성, 종성의세부분으로이루어져있다는사실을반영한, 나름대로합리적인방안이기는하나 초창기에는저장공간이비쌌기때문에, 저장공간을가능한한적게차지하는방안이선호되었고 2 바이트로도표현할수있는것을 3 바이트로표현하는방안은환영받지못했음. 가변바이트방안 한글한글자를구성하는자소의개수만큼바이트를배당. 가 는 2 바이트, 강 은 3 바이트, 읽 은 4 바이트 나름대로합리적인방안이나, 경제성의측면에서환영받지못함. 한글의구성원리를반영하면서도보다경제적인방안이모색되게됨.
조합형한글코드 (KSSM) 한글한글자를 2 바이트 =16 비트로표현 첫비트 (MSB) 는 1 로고정. 2 바이트문자라는사실을알려주어야하기때문에 MSB 는 1 이어야함. 나머지 15 비트중, 앞 5 비트는초성, 그다음 5 비트는중성, 마지막 5 비트는종성을나타냄. 5 비트로나타낼수있는기호의개수 = 2 5 =32 가지 한글의초성은 19 개, 중성은 21 개, 종성은 28 개이므로모두 5 비트로표현가능. 2 바이트라는적은저장공간을차지하면서도 초성, 중성, 종성으로이루어져있다는한글의구성적특성을잘반영. 글자의코드값을보고 ( 약간의연산을수행하면 ) 초성, 중성, 종성이무엇인지알수있음. 초성, 중성, 종성이무엇인지알면, 보다사용자친화적인인터페이스를만들수있음.
WORD/2-Byte High-Byte Low-Byte 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 초성 5-Bit 중성 5-Bit 종성 5-Bit MSB: Most Sigficant Bit Hangul Bit Flag MBCS : Multi-Byte Character System 2-Byte : 한글, 한자, 전각영문, 전각기호등 1-Byte : ANSI ASCII Character ( 반각영문, 숫자등 )
High-Byte 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 초성 5-Bit 초성 ' ㄱ ' 0x02 MSB = 1 Hangul Bit Flag 중성 5-Bit 중성 ' ㅏ ' 0x03 Low-Byte 종성 5-Bit 종성 ' ㅇ ' 0x0C 강 초성ㄱ 00010 0x02 중성ㅏ 00011 0x03 종성ㅇ 01100 0x0c 강 의코드값 10001000 01101100 0x886c
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 초성채움ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ중성채움ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ종성채움ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ조합형한글코드에서초성, 중성, 종성에배당된값
완성형한글코드 정부에서표준으로채택한것은완성형 : KS C 5601, KS X 1001 조합형이초성, 중성, 종성코드를조합 / 결합하는방식인데비해 완성형은그렇지않음. ( 그래서 완성형 이라는명칭이붙었음.) 한글한글자를역시 2 바이트로표현 현대일상생활에서사용하는글자 2350 자만을추림. 이론상가능한현대한글은초성 19 중성 21 종성 28 = 11172 자 앞바이트는 0xb0~0xc8(25 개 ), 뒤바이트는 0xa1~0xfe(94 개 ) 를한글영역으로사용. 25 94=2350 자 앞바이트는 0xca~0xfd(52 개 ), 뒤바이트는 0xa1~0xfe(94 개 ) 를한자영역으로사용. 52 94=4888 자
두번째바이트 A1 FE A1 특수문자영역 AC 첫번째바이트 B0 C8 가각간... 한글영역 (2,350 자 )... 힙힛힝 CA 伽佳假... 한자영역 (4,888 자 ) FD... 稀羲詰 FE
완성형의문제점 애초에사용할일이없을것으로생각되어 2350 자에서배제되었던글자중일부를사용할필요가생김 : 똠, 펲 마이크로소프트에서윈도 98 을출시하면서이문제를보완하여마이크로소프트통합형한글 (Microsoft Unified Hangul) 을내놓음. 한글 8822 자 (=11172-2350) 에새로코드배당 새로배당하는글자의코드영역이기존글자의코드영역과겹치면안됨. backward compatibility: 컴퓨터관련규약을업데이트할때, 이미정해져있던것을고치지는말고새로운것을추가하기만해야, 과거의규약에입각해서만들어진데이터, 소프트웨어, 하드웨어등이새버전에서도유효함. 만약, 2350 자의코드값을새로배정하면, 예전의문자코드에입각하여작성한텍스트문서를새문자코드에입각하여만들어진텍스트에디터에서열면엉뚱한문자로인식되게됨. 그러다보니, 2350+8822=11172 자의코드값배열순서가한글자모순배열순서와불일치하게됨.
마이크로소프트통합형한글코드 (Microsoft Unfiied Hangul) 11,172 자 KS C 5601-1987 ( 완성형한글코드 ) 한글 2,350 자 Lead Byte (High-Byte) Trail Byte (Low Byte) 0xA1-0xFE 0xA1-0xFE 통합형한글코드에서추가 한글 8,822 자 Lead Byte (High-Byte) Trail Byte (Low Byte) 0x81-0xA0 0x41-0x5A, 0x61-0x7A, 0x81-0xFE 0xA1-0xC6 0x41-0x5A, 0x61-0x7A, 0x81-0xA0
연번 KS C 5601 코드통합형코드한글 자모순 - 코드순불일치 1 0xB0A1 0xB0A1 가 2 0xB0A2 0xB0A2 각 3-0x8141 갂 이로인해, 단순히코드값에따라소팅을하면, 자모순과어긋나는결과가발생함. 자모순과일치하는소팅결과를얻기위해서는, 단순히코드값에따라정렬하는것이아니라, 좀더특별한배려가필요하게됨. 근시안적인문자코드정책으로인해, IT 자원을불필요한데낭비하게된사례. 4-0x8142 갃 5 0xB0A3 0xB0A3 간 6-0x8143 갅 7-0x8144 갆 8 0xB0A4 0xB0A4 갇 9 0xB0A5 0xB0A5 갈 10 0xB0A6 0xB0A6 갉 11 0xB0A7 0xB0A7 갊 12-0x8145 갋 13-0x8146 갌 14-0x8147 갍 15-0x8148 갎 16-0x8149 갏
완성형의문제 2: 자소분해 완성형코드자체만가지고는초성, 중성, 종성을알수없기때문에 ( 자소분해 ) 완성형코드로된텍스트에서자소분해를하려면 일단완성형 - 조합형매핑테이블을만들고 각한글글자를조합형코드로변환한뒤 조합형에서한글한글자를표현하는 16 비트중 MSB 를제외한 15 비트를 5 비트씩나누어초성, 중성, 종성값을알아냄. 이역시, 잘못된문자코드정책으로인해, IT 자원을불필요한데낭비하게된사례임.
일본, 중국, 대만의문자코드 한자를많이쓰는일본과중국에서도한국과비슷하게 1 byte 문자만으로부족하여 나름의 2 byte 문자 code 체계를고안하여사용하고있다. 일본에서는 JIS(Japan Industrial Standard) 라는 code 체계및이를간소화한 Shift-JIS 를많이사용하고있다. 이밖에 EUC(extended unix characterset)-jp 도많이사용된다. 簡體를주로사용하는중국 ( 대륙 ) 에서채택된표준은 GB, 繁體를주로사용하는대만에서채택된표준은 Big5 라고한다.
왼쪽부터 S-JIS, EUC-JP, GB, Big-5
문자코드의국가간충돌 각나라는다른나라에서어떤글자에어떤코드값을배정했는지를신경쓰지않고 ( 또는신경을썼더라도어쩔수없이 ) 자기나름대로코드값을배정했기때문에 같은글자가각문자코드체계에서서로다른코드값을배정받게되었음. 거꾸로말하면, 하나의코드값 (code point) 이각코드체계에서서로다른글자를나타내게되었음. 이에따라하나의문서내에서한글, 한자 ( 번체자, 간체자 ), 가나등을섞어서쓰기가어렵게됨. 모든텍스트문서는 이문서는 ~~ 코드체계에따라작성되었음 이라는정보를포함해야국제적으로유통될수있게되었음. 이정보가누락되어있거나, 소프트웨어가오인하면, 문자깨짐현상이발생.
유니코드 (Unicode) 의대두 이러한국가간코드영역의중복문제를해소하기위해 사실은 MS 사에서자사제품의지역화 (localization) 비용을줄이기위해서유니코드체제를강력히후원해오고있음 각국대표들이모여세계의모든문자들을동시에표현할수있으면서각문자가서로겹치지않는통일된문자 code 체계를만드는방안을논의하게됨. 이회의는유니코드컨소시엄에서주관하고있으며유니코드 version 9.0.0 (2016. 6. 21.) 까지나와있음. (http://www.unicode.org 참조 ) ISO( 국제표준기구 ) 에서도유니코드를표준으로채택 : ISO/IEC 10646
유니코드의문자인코딩방식 1: UTF-32 UCS-4 모든문자를 4 바이트 =32 비트로표현한다. 따라서 2 32 = 4,294,967,296 개 ( 약 43 억개 ) 의문자들을구별하여표상할수있음. 장점 표상방식이가장깔끔함. 모든문자를일관되게 4 바이트로표현하므로, 소프트웨어가특별한고려를할필요없이, 일관성있게문자를처리할수있음. 단점 하나의문자를저장하는데너무많은저장공간이소요됨. 반도체가격이빠른속도로싸지고있으므로, 저장공간을많이차지하는게큰문제가아닌듯이생각할지도모르지만 구글이나포털업체처럼대용량서버를운용해야하는회사입장에서는저장공간은곧돈과직결됨.
유니코드의문자인코딩방식 2: UTF-16 UCS-2 사용빈도가높은글자는 BMP(basic multilingual plane) 에배당하고 사용빈도가낮은글자는 SP(supplementary plane) 에배당. BMP 에속하는글자는 2 바이트로표현. 2 16 =65,536 개의기호가구분될수있음 : U+0000~U+FFFF 영문자, 한글, 한자의상당부분 ( 한중일통합한자, Extension-A), 일본가나등 SP 에속하는글자는 4 바이트로표현. 한자중 Extension-B, Extension-C 등 4 바이트문자의경우, 저는 4 바이트짜리입니다. 하는정보를알려주어야하기때문에, 앞의 2 바이트 (High-Surrogate) 와뒤의 2 바이트 (Low- Surrogate) 가각각일정한범위안에있어야함. High-Surrogate: U+D800~U+DBFF. 상위 6 비트가 110110. 나머지 10 비트사용. Low-Surrogate: U+DC00~U+DFFF. 상위 6 비트가 110111. 나머지 10 비트사용. BMP 에속하는문자들은이범위를차지할수없고비워두어야함. 따라서 BMP 에속하는문자의수는 65536 개보다적음. SP 에속하는문자의코드값범위 : U+10000~U+10FFFF
유니코드의문자인코딩방식 3: UTF-8 사용빈도에따라하나의글자를 1 바이트 ~4 바이트로표현. 하나의글자가몇바이트로표현되는가는, 첫바이트의상위비트 ( 들 ) 로표현. 1 바이트문자의 MSB 는 0 2 바이트문자는첫바이트의상위비트가 110 3 바이트문자는첫바이트의상위비트가 1110 4 바이트문자는첫바이트의상위비트가 11110 첫바이트가아닌나머지바이트들은상위비트가 10 한문자에대한바이트표현이다른문자에대한바이트표현의일부가되는경우가없도록함. 문자열 (string) 내에서 substring 을찾는알고리즘이적용될수있음. 장점 : ASCII-compatible ( 아스키코드에입각한소프트웨어사용가능 ) 단점 : 하나의글자를표현하는데소요되는바이트수가들쭉날쭉
UTF-16 과 UTF-8 의대응관계 코드범위 ( 십육진법 ) UTF-16BE 표현 ( 이진법 ) UTF-8 표현 ( 이진법 ) 설명 000000-00007F 00000000 0xxxxxxx 0xxxxxxx ASCII 와동일한범위 000080-0007FF 00000xxx xxxxxxxx 110xxxxx 10xxxxxx 000800-00FFFF xxxxxxxx xxxxxxxx 1110xxxx 10xxxxxx 10xxxxx x 첫바이트는 110 또는 1110 으로시작하고, 나머지바이트들은 10 으로시작함 010000-10FFFF 110110yy yyxxxxxx 110111x x xxxxxxxx 11110zzz 10zzxxxx 10xxxxx x 10xxxxxx UTF-16 Surrogate 쌍영역 (yyyy = zzzzz - 1). UTF-8 로표시된비트패턴은실제코드포인트와동일하다.
유니코드와한글 한글 11,172 자가 BMP 에배당됨 : 0xAC00~ 0xD7A3 한자다음으로넓은영역을차지함. 초성, 중성, 종성조합식은아니나 자모순대로배열되어있어, 계산에의한자모분해가가능. 한글글자의코드값을 X 라하면 초성값 = ( X - 0xac00 ) / 588 Y = ( X - 0xac00 ) % 588 중성값 = Y / 28 종성값 = Y % 28 = ( X - 0xac00 ) % 28 완성형의전철을밟지않고 11,172 자모두코드값을배당받아, 한글의컴퓨터처리가원활히이루어지게되었음. 자음과모음각자소 ( 옛한글포함 ) 도따로코드배정
옛한글의정보화 국어사자료에는옛한글, 구결자등특수한문자가많이사용됨. ASCII, 완성형, 조합형등의코드체계에서는옛한글, 구결자를표상할수없음. 보석글 이라는워드프로세서에서처음으로옛한글에코드를배당하여표상. 한글과컴퓨터사 의 코드를배당. 구결자도코드값을배정받음 : 총 269 자 글 워드프로세서의 HNC 코드에서도옛한글에 1992년 글 2.0 전문가용 에서 : HNC 코드번호 1D00~ 1DF3 (244자) 글 3.01 에서구결자 16자추가 : HNC 코드번호 1DF4~1E03 글 97 에서구결자 9자추가 : HNC 코드번호 1E04~1E0C
유니코드와옛한글 2000년무렵한글과컴퓨터사 ( 글 ), 한국 MS(MS Word), 삼성전자 ( 훈민워드 ) 는각각자사제품을유니코드기반으로뜯어고치는과정에서 유니코드에서코드를배정받지못한옛한글, 구결자등을처리하는방식을 3 사가통일하기로합의. 문자코드가통일되어있어야, 타사제품으로작성한문서를자사제품에서읽을수있음. 사용자정의영역 (private use area) 에옛한글과구결자를배당. 옛한글 : U+E0BC ~ U+F66E (5299 자 ) ( 그외는옛한글자소조합식. 6 바이트 ) 구결자 : U+F67E ~ U+F77c (255 자. HNC 의 269 자중자형이동일한것은통합 ) 옛한글자소 : U+F785 ~ U+F8F7 이를화면상에표현할수있도록글꼴도제작. 글 : 한컴돋움, 한컴바탕등 ; MS: 새굴림, 새돋움, 새바탕, 새궁서등 사용자정의영역을이용한것은당시로서어쩔수없는선택이기는했으나, 이는어디까지나임시방편. 국제적통용성이없음.
옛한글표현방식의변화 MS-Word 2007, 글 2010부터는옛한글표현방식이조합식으로바뀜. 유니코드의 BMP에코드값을배정받은초성, 중성, 종성을조합하여하나의한글글자 ( 음절 ) 를표현함. 하나의글자를표현하는데소요되는바이트수가일정하지않음. 종성이없는옛한글글자 : 초성 2바이트 + 중성 2바이트 = 4바이트 종성이있는옛한글글자 : 초성 2 + 중성 2 + 종성 2 = 6바이트 현대한글은모두 2바이트 옛한글한글자를표현하는데소요되는바이트수가현대한글보다많아저장공간을많이차지함. 구버전 (MS-Word 2003 이하, 글 2007 이하 ) 에서작성한옛한글문서와신버전에서작성한옛한글문서의문자코드가달라호환성에문제발생. 글 2010에서입력한옛한글은조합식이므로, 글 2007 이하버전에서열면초성, 중성, 종성이조합되지않고따로따로나옴.
한글문자코드의역사에서얻을수있는교훈 정보화에있어, 한글의특성을컴퓨터상에서도잘반영할수있도록할필요가있음. 완성형보다는조합형이한글의구조적특성을잘반영. 정보화정책은근시안적이기보다는먼미래를내다볼수있어야함. KS C 5601 에서한글 2350 자만코드값을배당한것은근시안적결정. backward compatibility 를깨지않는것이좋음. 깰경우구버전에입각한데이터와신버전에입각한데이터가양립불가능하게됨. ( 옛한글처리방식의변화로호환성깨짐.) 국제표준 ( 예 : 유니코드 ), 국제동향에민감 / 신속 / 적절히대응해야함. 가능한한국제표준을따르는것이좋음. 사용자정의영역에배당된글자 ( 예 : 옛한글, 구결자 ) 는이들글자를지원하는폰트가설치되어있어야만제대로출력됨. 해당폰트가설치되어있지않은컴퓨터 ( 예컨대외국 ) 에서는옛한글이제대로보이지않음. 외국인한류팬이한국전통문화를배우려해도지장이많음.
문자입력 : 키보드 대형컴퓨터나개인용컴퓨터 (PC) 가주종을이루는시대의가장일반적인입력장치는키보드. 키보드에서각문자 ( 또는문자구성요소. 예컨대자소 ) 와키의매핑을어떻게할것인가? 키배열을어떻게할것인가? 한글 : 2 벌식, 3 벌식등 영문자 : QWERTY 자판등 입력을효율화할수있는키배열을고안하는게중요. 그러나더효율적인키배열을고안해도, 이미자리잡은키배열을대치하기가매우어려움. 2 벌식, QWERTY 가효율성이상대적으로떨어지는데도표준으로자리잡음. 기호 ( 문장부호 ) 도일상생활에서자주쓰는것을자판에서쉽게입력할수있도록배열할필요가있음. ( 예 : 가운뎃점 ) 거꾸로현재통용되는자판에서쉽게입력할수있도록문장부호에관한어문규범에서배려할수도있음. ( 최근의문장부호규정개정 )
키보드문자입력방식의국가간비교 중국은영문자판에서한어병음을이용하여입력. 로마자 ( 영문자 ) 로입력한뒤한자로변환 일본도영문자로입력하여가나나한자로변환. 한글, 영문자는중국, 일본의한자와비교하면훨씬간단. 변환이라는추가단계를거칠필요가없음. 그러나이러한편리함이안이한태도를낳은측면도있음. 중국, 일본에서는예측입력시스템 ( 자동완성기능 ) 이발달하였음. 긴표현의앞부분만입력하면, 사용자가입력하고자하는표현을컴퓨터가예측하여팝업으로제시해줌. 사용자는앞부분조금만입력한뒤팝업으로뜬표현을클릭하면됨. 사용자가입력한앞부분으로부터예측되는표현이복수있을때 사용자의과거의입력이력, 일반적인사용빈도등을참조하여고빈도표현을위에제시. 한글입력에서는이러한예측시스템이별로발달하지않았음. 몇몇인터넷사이트, 사전, 네비게이션등에서부분적으로사용될뿐. ( 예외 : 초성입력 ) 예측시스템을구현하기위해서는방대한사전을구축하고각표현의사용빈도를조사하는등의작업이필요함. 모바일시대에는필요성이증대됨.
문자입력 : 모바일기기 모바일기기의대두로입력장치가다시관심의초점이됨. 모바일기기가소형이기때문에키의수에제한이많음. ( 대개 12 개 ) 영문자의경우알파벳순서대로하나의키에문자 3 개씩배당. 1 번키를한번누르면 a, 두번누르면 b, 세번누르면 c 가되는식. toggle 방식 : c 상태에서한번더누르면다시 a 가됨. 하나의키에함께배당된문자들사이에별다른연관성이없고, toggle 방식으로인해입력효율성이떨어짐. 한글의과학성 / 체계성이모바일기기에서특히빛을발하여, 모바일기기에서의입력효율이세계최고수준임. 천지인방식 모음입력에서훈민정음모음자의구성원리를잘반영하였으나 모음입력을위해키를여러번눌러야하는단점이있음. 자음입력은기본적으로 toggle 방식 나랏글방식 자음입력에서훈민정음의가획 / 병서의원리를잘반영하였으나 ( 격음 : 가획, 경음 : 병서 ) 모음입력은기본적으로 toggle 방식
모바일기기에서한글입력의발전방향 스마트폰, 터치인터페이스의발달은문자입력시스템에도엄청나게다양한발전가능성을가져다주게되었음. 버튼을누르는식의입력뿐아니라 drag 등의입력방식도가능함. ㄱ키를누르고 [ 가획 ] 키를눌러서ㅋ을입력할수도있겠으나 ㄱ키를터치한상태에서 drag 하여 [ 가획 ] 키로이동하여손을뗌으로써ㅋ을입력할수도있음. ( 흘려쓴글씨에서획들이연결되는것과비슷한현상 ) contextual menu, contextual key array [ 병서 ] 키는ㄱ, ㄷ, ㅂ, ㅅ, ㅈ키를눌렀다는 context 에서만의미가있음. [ 가획 ] 키는자음 ( ㄱ, ㄴ, ㄷ, ㅂ, ㅅ, ㅈ ) 키 context 에서의의미와모음 ( ㅏ, ㅓ, ㅗ, ㅜ ) 키 context 에서의의미가다름. 양성모음과음성모음을별도의키에배당하지않고, 양성모음만배당한뒤, [ 음성 ] 키를누르면양성모음이짝이되는음성모음으로바뀌게할수도있음. 키배열을고정시키지않고, 사용자가무슨키를눌렀는지에따라그 context 에서적절한키배열이나타나게할수도있음. 모음키는수직획, 수평획만배당하고 수직획을누르면그좌우에점이나타나, 좌로 drag 하면ㅓ, 우로 drag 하면ㅏ가되고 수평획을누르면그상하에점이나타나, 위로 drag 하면ㅗ, 아래로 drag 하면ㅜ가되고 상하좌우로좀길게 drag 하면ㅛ, ㅠ, ㅕ, ㅑ가되는식의방안도생각해볼수있음. 초성입력등, 한글의특성을적절히활용하는방안에대한모색도필요.
문자출력 : 폰트 (font) 컴퓨터운영체제의 system 폴더의 font 폴더안에폰트파일들이들어있음. 폰트파일의기능은, 특정코드값으로저장되어있는정보를화면에일정한이미지 ( 문자의경우 glyph 라부름 ) 로변환하여보여줌. 폰트파일에서문자코드와 glyph 이미지사이의매핑관계를정의해놓았음. 로마자의경우, 컴퓨터의대두이전부터출판 / 언론계에서매우다양한폰트가개발되었고 이들폰트가컴퓨터로옮겨짐은물론, 컴퓨터상에서더욱다양한폰트가개발됨. 스티브잡스의특별한관심덕분에애플사의제품들은특별히아름다운폰트들을다양하게제공. 한글폰트는그에비하면훨씬부족한편. 옛한글을지원하는폰트는더부족. 주요운영체제에서 default 로제공하는폰트가대부분의텍스트를온통뒤덮는현상 예 : 굴림 ( 윈도구버전 ), 돋움 ( 웹디자이너들이선호 ), 맑은고딕 ( 윈도비스타이후 ), 나눔고딕 ( 네이버 ), 산돌고딕 (ios 5.1) 사각형의틀에얽매여있는편.
한글폰트개발의방향성 스마트폰, 태블릿, 킨들, 전자책등의대두로폰트의중요성이더커짐. STDU Viewer, 아이패드의 ibook 에서는이미지기반 PDF 파일의페이지를화면에띄울때 OCR 을통해문자를인식한뒤, 각문자를매끈한폰트로바꾸어보여줌. ( 읽을맛이남 ) 안드로이드나윈도운영체제에서거친문자를그대로보여주는것과는대조적. 폰트개발에서, 가독성과아름다움을동시에추구해야함. 목적에따라주안점이다름. 정보전달이주목적일때는가독성중시, 시각예술의성격을띠면아름다움중시. 한가지폰트를장기간사용하면질리게되므로, 다양한폰트개발이필요. 한글의조형미를살릴수있는폰트개발이필요. 과거문헌자료의다양한활자, 서체등을바탕으로하는것도하나의방법. 예 : 석보상절체 무료로자유롭게쓸수있는폰트가더많아져야함. (cf. free software)
한글은정보화측면에서도매우우수한문자 한글의우수성 / 과학성 / 체계성은정보화와관련하여특별히두드러지게드러나는측면이있음. 모바일기기의압축된키배열, 초성입력방식등 한글정보화의입력, 내부처리, 출력단계모두나름의흥미로운역사를가지고있음. 입력 : 키보드, 모바일등에서의다양한입력방식 내부처리 : 조합형, 완성형, 유니코드등의다앙햔한글코드 출력 : 다양한폰트 한국어 / 한글정보화와관련하여창의적이고미래지향적인혁신이앞으로많이나올필요가있음. 15 세기에세종이한글을만든것은매우모험적인실험이었지만그것이지닌과학성, 체계성덕분에먼미래에우리가큰혜택을보고있음. 한국어 / 한글을정보화하는방안에대해창의적이고효율적인새로운방식이얼마든지있을수있음. ( 그러나기존방식에대한이해를바탕으로해야함.)