한글 L 읁 TEX 에서임의의트루타입한글폰트사용하기 김강수 주철 윲윰윰윷년윷월윶일 일러두기 이글은괲괰괰괳년에썼던굜굈굌 A 굔굅굘에서임의의트루타입글꼴사용하기괢라는괬김강수 주철공저의글을고쳐쓴것이다괮한글트루타입폰트를굌 A 굔굅굘에서사용할수있게된과정은이전의글에정리되어있다괮이글은괲괰괰괳년이후달라진한글굌 A 굔굅굘환경을위한것이므로해당사항에대해서는이전글을참조하기바란다괮괲괰괰괷년괶월까지괬굨굡굮굧굵구괭굵굣굳에서완성형인코딩폰트를사용하지못하는것으로알려져있었다괮그러나이글은굋굔굓제괱차워크샵의결과로서이일을가능하게한성과가반영되어있다괮 차례 차례 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윱 윱 들어가는말 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윲 윱윮윱 제한 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윲 윱윮윲 많은글꼴윿윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윳 윲 준비윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윳 윲윮윱 용어 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윴 윲윮윲 글꼴의대응 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 융 윲윮윳 작업준비 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윶 윳 절차윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윷 윳윮윱 읔읅의폰트이름윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윷 윳윮윲 읔읆읍텍폰트파일얻기 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윷 윳윮윳 읆을폰트정의파일만들기윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윹 윳윮윴 읭읡읰파일의작성 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윱윰 윳윮융 테스트 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윱윲 윴 이이읦윲읫읯이읥인읦읯읮이읳읣읲읩읰이 윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윱윳 융 마치는말윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮윮 윱융 윱
들어가는말 윲 1 들어가는말읋읔읕읇 1) 이활동을시작한이후윬한글읔읅의윬음 A 읔읅의사용환경은몰라보게달라졌다윮주요한점들만꼽아보아도윬 플랫폼에관계없이쉽고간편하게읔읅의시스템을설치하고운영할수있게되었다윮읋읃윲윰윰윶을통하여한글을운영하는읔읅의시스템의설치와관리및운영을놀랍도록편리하게개선하였다윮 한글트루타입폰트를자유롭게사용할수있게됨으로써폰트의제약을크게극복하게되었다윮 유니코드를한글식자에이용하게됨으로써모든한글과옛한글문자및다국어조판도가능하게되었다윮 이밖에종래불가능하다고알려져있던거의대부분의문제가해결되어왔다윮이글은그가운데트루타입폰트를한글음 A 읔읅의패키지와함께사용하는방법에관한간단한사용자안내서율읕읳읥읲윧읳읇익읩읤읥윩이다윮 1.1 제한현재음 A 읔읅의작업환경에서한 글 을 사 용 할 수 있 도 록 하 는 방 법은 여러가지가있다윮그방법을모두다룰수는없으므로윬이글은다 음 과 같 은 범 위 에 서 만 필요한정보를제공하려한다윮 1 한글음 A 읔읅의이라함은읈읡읮읧익읬윭익읣읳패키지를의미한다윮 2) 2 입력엔코딩은유니코드읕읔읆윭윸인코딩된한글문서만을다룬다윮 3 최종출력은읐을읆로한다윮읐을읆를얻는방법은을읖읉읐을읆읍x 를이용하는방법을기본으로하되윬읰읤읦음 A 읔읅의에의한방법도고려하기로한다윮 4 이이읦글꼴들은대부분저작권이있고윬자유롭게공개된이이읦는그수가매우적다윮이글은글꼴의저작권에대한문제는다루지않는다윮그러므로저작권과관련된문제는사용자자신이책임을져야할것이다윮 1) 한글 TEX 사용자그룹. Korean TeX Users Group. http://www.ktug.or.kr. 2) 이문서의 2003 년버전은 HLATEX 을전제로했었다. 그당시는 hangul-ucs 가개발되기전이었고, 따라서한글문서의기본인코딩도 euc-kr 이었다.
준비 윳 이글은실제로사용자가읜따라하기윢위한지침은아니다윮실용적으로트루타입을사용하려면김도현교수가작성한이이읦윲읫읯이읥인읦읯읮이유틸리티로충분하다윮그러나윬이스크립트가어떤작용을하는지에대하여궁금해하는분들이있어 3) 그과정을설명하기위하여작성하는것이다윮이이읦윲읫읯이읥인읦읯읮이스크립트사용법은제윴절에설명해두었다윮 1.2 많은글꼴? 사용자들의일반적인요구는아마도읜워드에서쓰듯이글꼴을자유롭게사용윢하는방법을적용해보고싶어하는것인듯하다윮그러나이문제는한번생각해봐야한다윮과연얼마나많은글꼴이필요한것인가윿음 A 읔읅의은포스터나광고물윬또는초대장이나생일카드를만드는데는적합하지않은것으로알려져있다윮물론불가능하지는않겠지만윮여러종류의글꼴이나또는적은수라도특별하게디자인된글꼴을사용해야하는상황은아무래도음 A 읔읅의작업과는거리가멀다는느낌이든다윮여기서문제삼는문서는주로상호참조가필요한과학적문헌이거나큰분량의전문서적일것이다윮이런곳에서사용되는글꼴은두세종류면충분할것이다윮표준적인음 A 읔읅의에서사용되는글꼴은 \rm윬 \sf윬 \tt 이세종류뿐이다윮강조를위해서기울임율이탤릭윩처리가추가되거나 boldface윬굓국굡구구굃굡군굩굴굡구을필요하다면쓰는정도윮다만 \rm에어떤폰트를적용할것인가하는문제는디자인문제라고생각한다윮평범한읃읯읭읰익이읥읲읍읯읤읥읲읮글꼴을쓸수도있고윬읔읩읭읥읳글꼴이나읐읡읬읡이읩읮읯글꼴을적용할수도있는것이다윮한글로만들어진문서의경우에도크게다를것은없다윮기본적으로바탕글율본문윩을위한글꼴윬강조를위한글꼴윬인용을위한글꼴이세가지정도가필요할것으로생각한다윮글꼴사용을결정할때는윬이세가지에각각적절한폰트를할당하는형태로접근하는것이옳다윮한글윈도가바탕윬돋움윬굴림윬궁서라는네가지글꼴을기본으로제공하는것을고려하여윬여기서는이와유사하게네가지글꼴을문서에서사용하는방법을알아보려한다윮그각각을바탕율또는명조윩윬돋움율또는고딕윩윬굴림윬장식글꼴이라고부르기로한다윮그러나윬어떤경우든한문서에지나치게많은글꼴이사용되면윬오히려문서의품위를떨어뜨린다는것을잊지말자윮 2 준비 이작업을따라하기위해서는먼저다음과같은것이준비되어있어야한다윮 3) Kunggom 님. 실제로이글을따라해보고초고의문제점을지적해주셨다.
준비 윴 표윱윺읳읦읤와폰트인코딩의대응 문자집합폰트인코딩읳읦읤 읅읕읃윭읋읒 읅읕읃윭읋읒 읋읓윭읈음읡읔읥의윮읳읦읤 읅읕읃윭읋읒 읕읮읩읣읯읤읥 읕읋읓윭읈음읡읔읥의윮읳읦읤 읕읮읩읣읯읤읥읂읍읐 읅읕읃윭읋읒 읕읋읓윭읕읃읓윲윮읳읦읤 읕읮읩읣읯읤읥읂읍읐 읕읮읩읣읯읤읥 읕읃읓윲윮읳읦읤 TEX 시스템윈도플랫폼의경우윬읋읃윲윰윰윶을권장한다윮다만읍읩읋읔읅의은호환성의문제로인하여이글에서설명하는모든결과가다잘된다고보장할수없다는점을적어둔다윮이이읦윲이읦읭이나을읖읉읐을읆읍x 는읔읅의시스템의일부로서이미설치되어있을것이다윮한글L A TEX 읈읡읮읧익읬윭익읣읳가설치되어있어야한다윮윴윮윰윮윰이후버전을권장한다윮읋읃윲윰윰윶에는한글음 A 읔읅의이이미잘설치 설정되어있다윮폰트파일들읔읲익읥이읹읰읥한글글꼴이필요하다윮어떤글꼴을필요로하느냐는다음에다시언급한다윮 2.1 용어이글에서사용되는약자와용어등에대하여간단히적어둔다윮 %HOME% 사용자의홈디렉토리이다윮리눅스또는맥에서는 $HOME으로표기한다윮읗읩읮윭읤읯읷읳읋읃윲윰윰윶의경우윬별도로환경변수를지정하지않으면 [TeX]\HOME이자동으로설정되어쓰인다윮 $ 명령행프롬프트를의미한다윮읗읩읮읤읯읷읳에서는읣읭읤창을열고명령을직접써넣는다는의미이다윮시스템폰트폴더읗읩읮읤읯읷읳의경우대부분 C:\Windows\Fonts이다윮이글꼴폴더에있는글꼴은읋읃윲윰윰윶이잘인식한다윮입력인코딩 (input encoding) 읔읅의으로하여금처리하게할파일에입력된문자의인코딩을말한다윮여기서는읕읮읩읣읯읤읥윯읕읔읆윭윸을의미한다윮이인코딩의문자부호를저장하거나편집할수있게하는편집기가필요하다윮폰트인코딩 (font encoding) 폰트파일안에문자집합이어떤인코딩을따라서배열되어있는가를나타내는것이다윮이글에서문제삼는한글폰트는유니코드순서대로배열된유니코드인코딩폰트와읅읕읃윭읋읒코드에따라배열된읜완성형인코딩폰트윢두종류이다윮
준비 융 표윲윺글꼴대응 글꼴보통서체두꺼운서체 바탕글꼴 윈도바탕 한양태명조 돋움글꼴 윈도돋움 휴먼태고딕 굴림글꼴 윈도굴림 한양태둥근고딕 장식글꼴 양재난초읍 서브폰트한글문자집합은상당히많은글자들로이루어져있다윮이를읔읅의이다룰수있게하기위해각각윲융윶문자씩잘라내어서취급하는방법을말한다윮서브폰트정의 (sfd) 서브폰트로잘라낸각부분에어떤문자가대응하는가를지시하는정의파일이다윮읈음 A 읔읅의에서는읅읕읃윭읋읒한글을다루기위해기호문자 04 번에서 07번윬한글 0번에서 9번윬한자 10번에서 29번으로이루어진읳읦읤정의를사용하여서브폰트를취급하며윬읨읡읮읧익읬윭익읣읳에서는유니코드읂읍읐영역문자를 00번에서 ff번까지윲융윶문자씩차례로잘라낸서브폰트정의를이용한다윮표윱을참고하라윮읅읕읃윭읋읒문자집합을다루는것이읈음 A 읔읅의이고읕읮읩읣읯읤읥한글을다루는것이읨읡읮읧익읬윭익읣읳이다윮 2.2 글꼴의대응한글폰트의사용에있어서문제가되는것은윬조진환교수가지적한바와같이윬 4) 볼드체율두꺼운글꼴윩가없다는점이다윮을읖읉읐을읆읍x 에서글자의획을늘려서처리해줄수율이른바 fake-bold윩있지만읦읡읫읥윭읢읯읬읤의품위가만족스럽지는못하다윮그러므로윬볼드체글꼴은따로설정해주는것이좋다윮예를들면윬명조체에는견명조체를그볼드체로대응시키는방법이다윮이둘을묶어서하나의글꼴가족처럼사용하자는것이다윮이글에서는비교적쉽게구할수있는 5) 글꼴을사용하여윬다음표윲와같이설정해보기로한다윮 6) 만약굵은글꼴을대응시키기어렵다면차라리굵은글꼴없이쓰는것이나은선택일수도있다윮왜냐하면다른글꼴을대응시켰을때그안에포함된문자가완전히동일하다는보장도없을뿐더러율특히기호문자와한자가그러하다윩자칫잘못하여전혀상관없는글꼴을대응시키게되면문서품위에문제가생길수도있기때문이다윮 4) http://www.ktug.or.kr/jsboard/read.php?table=setup&no=1005&page=1 5) 글꼴을어떻게구할수있느냐하는문제는이글의관심사가아니다. 6) 볼드체글꼴을따로설정하기어렵다면, 기본글꼴에서 TEX 폰트이름만볼드체로된 TFM 파일을추출한다음, DVIPDFMx 에게처리를맡길수있다. 이에관해서는각주 18 을보라.
준비 윶 표윳윺폰트파일목록 폰트이름윈도바탕한양태명조윈도돋움휴먼태고딕윈도굴림한양태둥근고딕양재난초읍 폰트파일이름 MSBatang.ttf h2mjrb.ttf MSDotum.ttf hmfbg.ttf MSGulim.ttf h2drrb.ttf ynch05.ttf 윈도돋움과윈도굴림은하나의이이읣파일 7) 에포함되어있으므로윬이둘을분리해야할필요가있다윮 8) 이를위해서 breakttc.exe라는유틸리티가필요하다윮 9) breakttc.exe를 gulim.ttc에대하여실행하면네개의파일이분리되어나오는데윬 00에서 03까지차례로윬굴림윬굴림체윬돋움윬돋움체에해당한다윮그러므로 FONT00.ttf 를 MSGulim.ttf 로윬 FONT02.ttf 를 MSDotum.ttf 로이름을바꾸어서사용한다윮윈도바탕체는 batang.ttc의윰번폰트를 MSBatang.ttf로이름을바꾸어사용한다윮물론윬임의의다른이이읦를사용하려한다면윬이이읣파일이아닌한윬그대로사용할수있을것이다윮 2.3 작업준비적당한위치에새로운디렉토리를하나만든다윮편의상여기에서는 C:\makefont라고하기로하자윮그리고다음순서를따른다윮윱윮필요한이이읦파일들을이디렉토리로복사한다윮위의폰트대응에따를때필요한파일의목록은표윳과같다윮윲윮트루타입을이용하려면 sfd 파일이필요하다윮읳읦읤는읜읳익읢윭읦읯읮이읤읥윌읮읩이읩읯읮윢의약자로서윬한글음 A 읔읅의이많은수의한글문자를각각윲융윶개씩의문자영역율읰읬읡읮읥윩 7) ttc 는유사하거나관련된몇개의 ttf 를하나의폰트파일로묶어압축한것이다. 각각의폰트들은 index 번호로참조된다. 한글윈도에는 batang.ttc 와 gulim.ttc 라는두개의 ttc 폰트파일이기본으로들어있다. batang.ttc 는바탕, 바탕체, 궁서, 궁서체, 네개의 ttf 폰트가묶여있고, gulim.ttc 에는굴림, 굴림체, 돋움, 돋움체, 네개의 ttf 폰트가묶여있다. 8) 실제로는반드시분리하지않더라도 ttf2tfm 의 -f 옵션을쓸수있다. 이옵션다음에는 ttc 파일에묶인글꼴인덱스를지정하는데, batang.ttc 의경우바탕, 바탕체, 궁서, 궁서체가각각 0, 1, 2, 3 의인덱스값을갖는다. 그러나 pdflatex 은 ttc 글꼴을처리하지못하므로, 이글에서는글꼴을분리하여사용하는쪽을선택하였다. 9) 도스용프로그램인데, MS 에서제공하는 TTSDK(ttsdk.zip) 에포함된것. 리눅스에서는 ttc2ttf 라는유틸리티가있다. 다음글을참고하라. http://mail.mizi.com/pipermail/devel/ 2002-January/004279.html
절차 윷 표윴윺읔읅의폰트이름 폰트보통두꺼운기울인 명조 omymjm omymjb omymjmo 고딕 omygtm omygtb omymjmo 굴림 omyglm omyglb omyglmo 장식 omygrm 으로쪼개어다루기위한정의파일이다윮우리의작업을위해서필요한읳읦읤는 UCS2.sfd 와 UKS-UCS2.sfd 두종류인데윬이가운데 UKS-UCS2.sfd 는비교적최근에만들어졌기때문에별도로구해야할수있으나 UCS2.sfd는이미시스템에설치되어있을것이다윮 10) UKS-UCS2.sfd는윲윰윰윷년한국텍학회워크샵에서논의되어조진환교수가작성한새로운읳읦읤이다윮읈읡읮읧익읬윭익읣읳읃읖읓에서구할수있으며읋읃윲윰윰윶은읫읣익읰읤읡이읥형식으로간단하게설치할수있다윮 3 절차 3.1 TEX 폰트이름각폰트명칭에해당하는읔읅의폰트이름을정해주어야한다윮이폰트명칭은일정한일관성이있으면좋은데윬아직까지표준이없으나윬한글읔읥의글꼴이름페이지에서이문제가논의되었다윮여기서는읠비표준윧이라는점을고려하여폰트명칭을 my로시작하기로하되윬읨읡읮읧익읬윭익읣읳의글꼴이름작성관행에따라 o를앞에붙이기로한다윮 11) 한글음 A 읔읅의에서이폰트들을사용하기위해명조에 mj윬돋움에 gt윬장식글자에 gr 을할당하기로하고윬굴림체를위해서 gl을쓰기로한다윮그다음윬보통두께를나타내는 m윬두꺼운글씨를나타내는 b윬기울인글씨율읯읢읬읩읱익읥윩를나타내는 o를각각필요한폰트이름에붙이기로하면윬그결과는다음표윴와같다윮기울인글꼴은보통두께에만붙이기로하였으므로 mo만을만든다윮양재난초읍을쓰기로한장식글자는두꺼운글꼴과기울인글꼴을정하지않았다윮 3.2 TFM 텍폰트파일얻기 음 A 읔읅의에서폰트를사용하려면 TFM 이라는읔읅의읆읯읮이읭읥이읲읩읣을생성해주어야한다윮트 루타입의이읦읭을추출해주는유틸리티가 ttf2tfm 이다윮 10) HLATEX 에서는 KS-HLaTeX.sfd 와 UKS-HLaTeX.sfd 두종료의 sfd 파일이필요하다. 11) hangul-ucs 의발전과정에서정착된관행으로서, o 가앞에붙는것은그것이유니코드임을의미한다.
절차 윸 현재우리가사용하려하는 ttf2tfm 은버전윱윮융이상이어야한다윮현재대부분의 배포판에윱윮융버전이포함되어있으며윬이것은윲윰윰윲년읋읔읕읇에서이루어진중요한 기여중의하나이다윮 한글음 A 읔읅의은한글폰트를여러개의하위폰트들로쪼개어서활용하는방식윬이른바 읜읳익읢읦읯읮이방식윢이므로윬하나의이이읦파일에서많은읔읆읍파일들을추출해야한다윮 각폰트파일에대하여다음과같은명령을차례로실행한다윮이작업은배치파일을 만들거나셸스크립트를이용하면훨씬쉽게작업할수있을것이다윮 12) ttf2tfm MSBatang.ttf -q -P 3 -E 1 omymjm@ucs2@ >> ttfonts.map ttf2tfm MSBatang.ttf -q -s 0.167 -P 3 -E 1 omymjmo@ucs2@ >> ttfonts.map ttf2tfm h2mjrb.ttf -q -P 3 -E 1 omymjb@ucs2@ >> ttfonts.map ttf2tfm MSDotum.ttf -q -P 3 -E 1 omygtm@ucs2@ >> ttfonts.map ttf2tfm MSDotum.ttf -q -s 0.167 -P 3 -E 1 omygtmo@ucs2@ >> ttfonts.map ttf2tfm hmfbg.ttf -q -P 3 -E 1 omygtb@ucs2@ >> ttfonts.map ttf2tfm MSGulim.ttf -q -P 3 -E 1 omyglm@ucs2@ >> ttfonts.map ttf2tfm MSGulim.ttf -q -s 0.167 -P 3 -E 1 omyglmo@ucs2@ >> ttfonts.map ttf2tfm h2drrb.ttf -q -P 3 -E 1 omyglb@ucs2@ >> ttfonts.map ttf2tfm ynch05.ttf -q -P 3 -E 5 omygrm@uks-ucs2@ >> ttfonts.map ttf2tfm ynch05.ttf -q -s 0.167 -P 3 -E 5 omygrmo@uks-ucs2@ >> ttfonts.map 이명령의의미는대강다음과같다윮먼저윬명조체의보통글꼴인 omymjm를얻기위해서윈도바탕체글꼴 MSBatang.ttf 로부터 UCS2.sfd에정의된규칙을따라서이읦읭을생성한다윮그러면 omymjmxx.tfm 들이생겨나는데윬예를들면한글음절문자영역의이읦읭들은 omymjmac.tfm부터차례로생성된다윮트루타입글꼴은그안의문자배열이완성형인코딩율읅읕읃윭읋읒윩을따르고있는것과유니코드인코딩을따르고있는것두종류가있다윮요즘은대부분유니코드인코딩폰트로제작되지만오래전에만들어진한글폰트는완성형이많았다윮 13) 유니코드인코딩폰트에대해서는 -P 3 -E 1을옵션으로지정하고읳읦읤를 UCS2.sfd 로지정한다윮반면완성형인코딩폰트에대해서는 -P 3 -E 5를지정하고읳읦읤를 UKS-UCS2.sfd로한다윮위의예에서양재난초는완성형폰트이고다른것은유니코드폰트이다윮 14) 그결과를 ttfonts.map이라는파일에기록한다윮 15) 12) 13 페이지 4 절을보라. 13) 완성형인코딩폰트에는완성형밖의문자, 예컨대 똠, 띡 같은글자가들어있지않으므로이런글자를식자할수없다. 유니코드인코딩이라하더라도이런문자가들어있지않은폰트도적지않다. 14) ttf2tfm 을실행해보면만약폰트인코딩이맞지않을때 Pid 와 Eid 값을보여주면서에러를내므로, 처음에잘못지정했더라도다시시도할수있다. 15) dvipdfmx 만을이용할목적일경우 ttfonts.map 을굳이생성할필요는없다. 그러나이파일을만들어두면 ttf2pk 에의하여 PK 폰트파일이생성되게할수있으므로 xdvi 나 dvips 를사용할수있게된다.
절차 윹 $ ttf2tfm MSBatang.ttf -q -P 3 -E 1 omymjm@ucs2@ 그다음윬명조체의기울인꼴율읩이읳읨읡읰읥윩인 omymjmo를얻기위해서역시 MSBatang.ttf 로부터읔읆읍을생성하게한다윮이때읳읬읡읮이옵션을명시한다율여기서는윮윱윶윷윩윮 $ ttf2tfm MSBatang.ttf -q -s 0.167 -P 3 -E 1 omymjmo@ucs2@ 명조체의굵은글꼴의익읰읳읨읡읰읥인 omymjb를얻기위해서윬 h2mjrb.ttf로부터읔읆읍을얻는같은작업을실행한다윮 $ ttf2tfm h2mjrb.ttf -q -P 3 -E 1 omymjb@ucs2@ 나머지도이와동일한의미이다윮다만윬위의일련의명령에서우리가선택한양재난초체는유니코드폰트가아니라완성형폰트이므로윬 -E 옵션의값을 5로주고읳읦읤를읕읋읓윭읕읃읓윲로하여글꼴배열이완성형임을지정한다윮 16) $ ttf2tfm ynch05.ttf -q -P 3 -E 5 omygrm@uks-ucs2@ 유니코드폰트의경우는위에서보인대로이값이 1이다윮에러없이실행되면수많은읔읆읍파일들이같은디렉토리에생겨나있을것이다윮 3.3 FD 폰트정의파일만들기이제음 A 읔읅의에서이폰트들을이용하려면폰트정의율읦읯읮이읤읥윌읮읩이읩읯읮윩파일을작성해주어야한다윮폰트정의파일의명칭은아주중요한데윬그대략의형식은다음과같다윮 <font encoding><fontfamily name>.fd 한글음 A 읔읅의에서사용하는읦읯읮이읥읮읣읯읤읩읮읧은음읕읃인코딩이다윮그리고윬여기서읦읯읮이읦읡읭윭읩읬읹읮읡읭읥이라고하는것은실제읳익읢읦읯읮이들자체인 omymjmac.tfm들하나하나가아니라윬음 A 읔읅의이이일군의폰트들을일괄참조하는명칭을말한다윮우리는여기서 omymjxyy.tfm들을 mymj라는이름으로참조하도록하자윮그러면읦읤파일의이름은 LUCmymj.fd가되어야한다윮이문제와관련된상세한내용은음 A 읔읅의윲ε의폰트선택스킴인읎읆읓읓를이해하여야하는데윬필자가쓴읜한글글꼴설치사용법윢 17) 이라는문서를율급한대로윩참조할수있다윮우리가채택한글꼴은한자부분을포함하고있는것들이지만윬양재난초읍은한자부분이없다윮한글이이읦폰트들가운데는한자부분이채워져있지않은것이많다는점에주의해야한다윮이런폰트는 ttf2tfm을실행하였을때한자부분에해당하는영역율읰읬읡읮읥윩은읳익읢읦읯읮이이읦읭이생성되지않는다윮특히두꺼운글꼴로보통글꼴과다른폰트를채택하는경우윬한자부분이없는글꼴을선택하게되면한자를 \bfseries 로쓸때폰트에러를만날것이다윮임의의한글글꼴을사용하려한다면이점에주의해야한다윮한자부분이없는굵은글꼴을바탕글서체로채택하였을때윬굵은 16) 따라서, 폰트대응을선정할때그폰트의성질을미리알아두면편리하겠다. 17) http://faq.ktug.or.kr/faq/karnes/2006-04?action=download&value=fnttst_0430.pdf
절차 윱윰 \DeclareFontFamily{LUC}{mymj}{\hyphenchar\font\m@ne} \DeclareFontShape{LUC}{mymj}{m}{n}{<->LUC * omymjm}{} \DeclareFontShape{LUC}{mymj}{m}{sl}{<->LUC * omymjmo}{} \DeclareFontShape{LUC}{mymj}{m}{it}{<->LUC * omymjmo}{} \DeclareFontShape{LUC}{mymj}{b}{n}{<->LUC * omymjb}{} \DeclareFontShape{LUC}{mymj}{bx}{n}{<->LUC * omymjb}{} 그림윱윺 LUCmymj.fd 파일의내용 글꼴을기본으로사용하는 \section 명령의인자등에서한자를사용하면안된다윮한글음 A 읔읅의은한글용글꼴과한자용글꼴을별도로지정할수있게하고있다윮폰트정의파일의내용은윬예를들어 LUCmymj.fd의경우윬그림윱과같다윮위의내용을참고하여윬다른폰트의읆을파일들도만든다윮대부분 mj를 gt나 gr 등으로치환하는것으로충분하다윮이렇게하면 LUCmymj.fd윬 LUCmygt.fd윬 LUCmygl.fd 와 LUCmygr.fd 등네개의각글꼴가족별폰트정의파일을만들어낼수있다윮 3.4 map 파일의작성읤읶읩읰읳읤읲읩읶읥읲는트루타입을처리하지못한다윮그러므로읤읶읩읰읳용읭읡읰파일하나만작성하여 updmap을이용하여일괄설정하는편리한절차를따를수없고윬을읖읉읐을읆읍x 와읰읤읦읔읅의및이이읦윲읰읫를위한읭읡읰파일들을작성해주어야한다윮그런다음윬 dvipdfmx.cfg 와 ttf2pk.cfg 파일의내용을수정해주어야한다윮읭읡읰파일의이름을각각윬 cid-myttf.map윬 myttf-pdftex.map윬 myttf2pk.map 이라고하기로하자윮 읣읩읤윭읭읹이이읦윮읭읡읰그림윲와같은내용으로된 cid-myttf.map을작성한다윮 18) 이파일의설정과관련된자세한사항은 dvipdfmx의관련문서를참고하라윮완성형글꼴과유니코드글꼴의설정이다르다는점에도유의해서보아야한다윮을읖읉읐을읆읍x 는이이읣파일도다룰수있는데윬이경우읭읡읰에들어가는행은다음과같은형식을갖는다윮 omygsm@ucs2@ unicode :2:batang.ttc 18) 굵은글꼴을 fakebold 로쓰기로하였다면, 먼저 ttf2tfm 으로부터 omymjb 폰트들을같은폰트로부터얻은다음 map 에다음과같은줄을써준다. omymjb@ucs2@ unicode :0:!MSBatang.ttf -b.1
절차 윱윱 omymjm@ucs2@ unicode MSBatang.ttf omymjmo@ucs2@ unicode MSBatang.ttf -s.167 omymjb@ucs2@ unicode h2mjrb.ttf omygtm@ucs2@ unicode MSGulim.ttf omygtmo@ucs2@ unicode MSGulim.ttf -s.167 omygtb@ucs2@ unicode hmfbg.ttf omyglm@ucs2@ unicode MSGulim.ttf omyglmo@ucs2@ unicode MSGulim.ttf -s.167 omyglb@ucs2@ unicode h2drrb.ttf omygrm@uks-ucs2@ KSCms-UHC-H ynch05.ttf omygrmo@uks-ucs2@ KSCms-UHC-H ynch05.ttf -s.167 그림윲윺 cid-myttf.map 파일의내용 omymjm@ucs2@ <MSBatang.ttf PidEid=3,1 omymjb@ucs2@ <h2mjrb.ttf PidEid=3,1 omygtm@ucs2@ <MSGulim.ttf PidEid=3,1 omygtb@ucs2@ <hmfbg.ttf PidEid=3,1 omyglm@ucs2@ <MSGulim.ttf PidEid=3,1 omyglb@ucs2@ <h2drrb.ttf PidEid=3,1 omygrm@uks-ucs2@ <ynch05.ttf PidEid=3,5 그림윳윺 myttf-pdftex.map 파일의내용 여기서 :2: 가해당폰트의읩읮읤읥인번호이다윮그러나우리는이이읣를모두분리해서쓰고 있으므로읦읯읮이읩읮읤읥인를따로지정할필요없다윮 완성형글꼴에지정하는 KSCms-UHC-H 는읣읭읡읰의명칭이다윮 19) 읭읹이이읦윭읰읤읦이읥인윮읭읡읰읰읤읦읔읅의윱윮윴윰이후버전에서읭읡읰파일은읳익읢읦읯읮이문법을쓸수있다윮우리의경우는그림윳과같은정도가될것이다윮안타깝지만읰읤읦읔읅의은읳읬읡읮이읥읤폰트를직접지원하지않으며윬읦읡읫읥윭읢읯읬읤도쓸수없다윮그러므로읳읬읡읮이읥읤폰트관련정의는제외되었다윮 19) 어떤 TEX 배포판에서는필요한 cmap 을갖추고있지않을수있는데, 이럴때는 Ghostscript 의 Resource 폴더아래에서해당 cmap 을찾을수있을것이다. 이것을 texmf 트리의적당한위치로가져다두든가, 아니면 Ghostscript Resource 폴더를 cmap 탐색위치로 texmf.cnf 설정을바꾸든가하는조치를취해야할수있다.
절차 윱윲 표융윺을읖읉읐을읆읍 x 와읰읤읦읔읅의의트루타입처리 기본획을두껍게기울임가로폭이이읣 을읖읉읐을읆읍x 가능 가능 가능 가능 가능 읰읤읦읔읅의 가능 불가능 불가능 불가능 불가능 읭읹이이읦윲읰읫윮읭읡읰 이이읦윲읰읫용읭읡읰은위의실행과정에서나온 ttfonts.map 이다윮이파 일의이름을 myttf2pk.map 으로변경한다윮 설정파일의수정이제 dvipdfmx.cfg 파일을수정한다윮수정해야할 dvipfmx.cfg 의위치는다음명령으로찾는다윮 $ kpsewhich --format="other text files" --progname="dvipdfm" dvipdfmx.cfg 이명령으로찾아진 dvipdfmx.cfg 파일의제일마지막에다음한줄을추가하여저장한다윮 f cid-myttf.map 마찬가지방법으로 ttf2pk.cfg를찾아서윬다음한행을추가한다윮 map +myttf2pk.map 이읥인읭읦트리에설치 이읭읡읰파일들을이읥인읭읦트리에설치해두면반복적으로사용할 수있다윮사용자파일을모아두는이읥인읭읦트리 20) 아래다음과같은위치에두는것이 좋다윮 [texmf]/fonts/map/dvipdfmx/myttf/cid-myttf.map [texmf]/fonts/map/pdftex/myttf/myttf-pdftex.map [texmf]/fonts/map/ttf2pk/myttf/myttf2pk.map 그런다음이읥인읨읡읳읨율 mktexlsr 윩를실행한다윮 3.5 테스트위와같이준비가모두끝났으면윬이제테스트파일을만들어서시험해본다윮가장간단한테스트파일을그림윶과같이작성해보자윮이파일을 test.tex으로저장하고윬다음과같이실행한다윮 20) KC2006 의경우는 %HOME%\texmf, Mac OS X 의 texlive 는 $HOME/Library/texmf, Linux texlive 에서는 $HOME/texmf 가쓰인다.
굴굴굦괲굫굯굴굥굸굦굯굮굴굳굣굲굩군굴 윱윳 #> latex test #> dvipdfmx test 읐을읆파일이성공적으로만들어지면읁읤읯읢읥읒읥읡읤읥읲와같은읰읤읦읶읩읥읷읥읲로이파일을 열어본다윮표윶또는이와유사한결과가만들어지면성공이다윮참고로윬읰읤읦음 A 읔읅의을 실행하면이가운데기울인글꼴은읰읫비트맵으로처리된다윮 위에서우리가만든파일은 *.tfm 윬 *.fd 윬그리고 *.map 이전부였다윮 4 ttf2kotexfont script 김도현교수께서윲윰윰윳년에제작하였던이이읦윲읨읬읡이읥인읦읯읮이스크립트를변화된상황에맞게수정한새판이이이읦윲읫읯이읥인읦읯읮이이다윮이스크립트를이용하면이글에서설명한복잡한작업을간단히명령행한줄로일괄처리할수있다윮이이읦윲읫읯이읥인읦읯읮이를설치한후윬다음과같은순서대로하면된다윮먼저 config 파일을준비한다윮이파일을준비하기위해서는폰트대응을먼저설계하여야한다윮이글에서한대로하자면대략다음과같은내용이될것이다윮폰트파일을같은폴더또는읫읰읡이읨읳읥읡읲읣읨가찾을수있는위치율시스템폰트폴더를읽을수있다면거기에있어도된다윩에둔다윮 FOUNDRY: my FONTmj: m=msbatang.ttf b=h2mjrb.ttf FONTgt: m=msdotum.ttf b=hmfbg.ttf FONTgl: m=msgulim.ttf b=h2drrb.ttf FONTgr: m=ynch05.ttf 스크립트를실행한다윮 $ ttf2kotexfont -c config 실행이끝나면해당폴더에많은.tfm 등이생겨나있을것이다윮여기서글자가 제대로찍히는지다음과같이테스트파일을컴파일해본다윮 $ pdflatex testutf 또는 $ latex testutf $ dvipdfmx testutf 만약폰트대응등이만족스럽고이폰트세트를지속적으로사용하기를원한다면 다음과같이자신의읬읯읣읡읬이읥인읭읦이읲읥읥에등록하고쓸수있다윮사용자의읬읯읣읡읬이읥인읭읦
굴굴굦괲굫굯굴굥굸굦굯굮굴굳굣굲굩군굴 윱윴 \documentclass[oldfontcommands,itemph]{oblivoir} \SelectHfonts{mymj,mygt,*}{*} \newcommand\gt{\setadhocfonts{mygt}{mygt}} \newcommand\gl{\setadhocfonts{mygl}{mygl}} \newcommand\gr{\setadhocfonts{mygr}{ungt}} \begin{document} \title{ 한글글꼴을시험합니다 } \author{} \date{} \maketitle \begin{table} \centering% \caption{ 샘플예제파일 }\label{exmpl} \begin{tabular}{ c c c c } \hline 글꼴 & 보통 & 굵음 & 기울임 \\ \hline 바탕 & 한글 & {\bf 한글 } & {\it 한글 } \\ \hline \gt 돋움 & \gt 한글 & {\bf\gt 한글 } & {\it\gt 한글 } \\ \hline \gl 굴림 & \gl 한글 & {\bf\gl 한글 } & {\it\gl 한글 } \\ \hline \gr 장식 & \gr 한글 & & \\ \hline \end{tabular} \caption{ 한글폰트예제 }\label{example} \end{table} \end{document} 표윶윺한글폰트예제 글꼴 보통 굵음 기울임 바탕 한글 한글 한글 돋움 한글 한글 한글 굴림 한글 한글 한글
마치는말 윱융 이읲읥읥는읔읅의배포판에따라조금씩다른데윬이글에서는읋읃윲윰윰윶을기준으로하기로 하자윮이때는 %HOME%\texmf 가된다윮 $ ttf2kotexfont -c config -i %HOME%\texmf 여기서약간의경고가나오지만윬무시하고그냥실행한다윮 읋읃윲윰윰윶시스템은 %HOME%\texmf 트리가맨먼저읽는이읥인읭읦읲읯읯이가아니다윮그러 므로.cfg 파일들을최우선이읥인읭읦이읲읥읥아래로이동시켜주는작업을해야한다윮 21) 이동은다음과같이하면된다윮 %HOME%\texmf\dvipdfm\config\dvipdfmx.cfg -> [TeX]\share\texmf-local\dvipdfm\config\dvipdfmx.cfg %HOME%\texmf\ttf2pk\base\ttf2pk.cfg -> [TeX]\share\texmf-local\ttf2pk\base\ttf2pk.cfg 이제이읥인읨읡읳읨후에해당폰트를사용할수있다윮 $ mktexlsr 5 마치는말위의절차를따르면어떤임의의이이읦라도한글음 A 읔읅의에서쓰도록할수있다윮그러나아무리이이읦를잘사용할수있다해도윬문서의품위는궁극적으로글쓴이에게달려있다윮양재난초를장식글씨체로쓰면어떻게되는지아래에예를하나드는것으로이글을마친다윮 22) 내사랑하리시월의강물을석양이짙어가는푸른모래톱지난날가졌던슬픈여정들을, 아득한기대를이제는홀로남아따뜻이기다리리. 지난이야기는해서무엇하리두견이우는숲새를건너서낮은돌담에흐르는달빛속에울리던木琴소리목금소리목금소리. 21) 이것은 KC2006 설계상의특징이다. 이이동작업이번거롭기는하지만 kcupdate 가 cfg 파일들을관리하고있으므로사용자가직접변경을가하는것은약간번거로워도오히려자신이무슨일을하고있는지자각할수있으므로도움이되지않는것은아니라고생각한다. 22) 황동규의시, 시월 의일부. 장식글씨체의한자부분은돋움체의것을가져다썼다.