KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
Money will say more in one moment than the most eloquent lover can in years.
FrontPage › TTF2HLaTeXFont

목차

1 TTF2koTeXFont
2 TTF2HLaTeXFont
3 History
4 요구사항
5 기능
6 사용 예제
6.1 사용법
6.2 은글꼴
6.3 "HLaTeX에서 임의의 TrueType 글꼴 사용하기" 문서에 해당하는 예제
6.4 Hangul-ucs에서 임의의 TrueType 글꼴 사용하기
7 참고
8 주의사항/제한
8.1 PDFLaTeX 지원의 제한
8.2 글꼴의 문제
8.3 sfd file과 cmap 파일
8.4 -i 옵션에 의한 texmf 설치
9 대화

1 TTF2koTeXFont

TTF2koTeXFont (current version)

2 TTF2HLaTeXFont

임의의 한글 TrueType 글꼴을 HLaTeX에서 사용할 수 있도록 tfm 파일을 추출하고 관련 설정을 한방에 처리해주는 Perl Script입니다. 김도현(DohyunKim) 님이 제작하였습니다.

TTF2HLaTeXFontBSD라이선스를 따릅니다.


3 History

  • ver. 20050111
    • dvipdfmx 20040912에 따른 map 파일 생성, DHUcs를 위한 *.fd, *.map 파일 생성
  • ver. 20041023
    • dvipdfmx 최근판의 fakebold 옵션 지원. config 파일에서 m의 값과 b의 값이 동일한 경우 cid map에 -b 옵션이 자동 추가됨.
  • ver. 20040705
    • ovp 교정루틴 수정 및 관련 버그 픽스
  • ver. 20040420
    • sty파일에 \def\hfontfamilynameprefix{xx}\ProvidesPackage{xxttf} 추가.
  • ver. 20040322
    • 한자영역이 들어있지 않은 폰트를 사용한 경우에 omega에서도 한자가 식자되도록 교정하는 루틴을 추가함.
  • ver. 20040202
    • omega의 디폴트 cmap을 Identity-H로 수정. dvipdfmx 20020202(cvs)의 변경사항을 반영.
  • ver. 20031121
    • windows98에서 완성형글꼴을 제대로 처리하지 못하던 문제 수정.
    • Lambda에서 쓰일 cmap을 폰트별로 지정할 수도 있게 함. 개별적 cmap은 각진괄호 [ ] 안에 지정한다. 예컨대 다음과 같이 설정하면 Identity-H는 오직 Lambda 사용시의 Hybatang.ttf에만 적용되고, 다른 폰트에는 OmegaCMap:에서 지정한 것 또는 프로그램의 기본값인 UniKSCms-UCS2-H가 적용된다.
FONTmj: f=bt m=Hybatang.ttf[Identity-H]
  • ver. 20031117 .sty 파일의 MapHangulFamily{}{} 부분을 교정하는 루틴을 추가.(이제 스크립트 실행 후 막바로 test.tex을 에러없이 컴파일할 수 있다.) -d 옵션을 주면 이 기능을 사용하지 않는다.
  • ver. 20031111 Truetype Collection(TTC) 폰트 지원. 예컨대 다음과 같이 설정하면 batang.ttc의 2번 인덱스, 즉 궁서글꼴이 선택된다:
FONTgs: m=batang.ttc(2)
  • ver. 20031110
    • 스타일파일의 설정을 hfont.tex과 ksx1001.tex을 참조하여 고침
    • 람다용 cmap과 sfd를 CONFIGFILE에서 사용자가 지정할 수 있도록 함. 이러한 지정이 없을 경우 기본값은 각각 UniKSCms-UCS2-HUnicode임. 예:
OmegaCMap: Identity-H
OmegaSFD: UKS-HL
  • ver. 20031026 cfg 파일 끝에 행끝문자가 없을 때 설정이 윗줄에 이어 써지는 버그 수정
  • ver. 20031025 사용자가 f 필드를 정의하지 않았을 경우 FONTxxxxf 필드의 값으로 사용토록 함
  • ver. 20031023 완성형 한글TrueType 폰트 처리루틴 추가. Release. cf. KTUGContrib:867

4 요구사항

  1. Perl
    Windows 시스템의 경우 ActivePerl을 추천합니다. CygWin이나 Unix/Linux 시스템에서는 Perl이 대부분 설치되어 있을 것입니다.
  2. HLaTeX 0.991 이상
    HLaTeX의 설치에 대해서는 HLaTeX 페이지를 참고하십시오.
  3. ttf2tfm, ttf2pk (freetype-contrib)
  4. Linux teTeX의 경우, Lambda를 위한 설정 과정에서 ovp2ovf가 잘 작동하지 않으면 다음 파일을 다운받아 이용해보십시오.

5 기능

  1. 유니코드 및 완성형 한글 TrueType 글꼴에서 TFM 추출
  2. DVIPDFMx, PDFLaTeX, HLaTeX/Lambda를 위한 TFM과 map 파일 생성 기능
  3. 스타일 파일과 폰트정의(*.fd) 파일의 자동 생성
  4. DVIPDFMxPDFTeXttf2pk를 위한 cfg 설정 파일 자동 업데이트
  5. 테스트 파일의 생성

6 사용 예제

6.1 사용법

Usage: ttf2hlatexfont.pl -c CONFIGFILE [-p] [-o]
       ttf2hlatexfont.pl -c CONFIGFILE -i TEXMFROOTDIR [-p] [-o]

  -c CONFIGFILE
        obtain font-related configuration from CONFIGFILE and
        make TFMs and settings for HLaTeX. needs ttf2tfm(ttf2pk)1.5 or higher
  -c CONFIGFILE -i TEXMFROOTDIR
        install generated files to TEXMFROOTDIR according to TDS
  -p    additionally do settings for PDFTeX. install them with -i
  -o    additionally make OFMs and settings for HLambda. install them with -i
        needs a patch to ttf2tfm(ttf2pk) from next URL:
        http://ftp.ktug.or.kr/KTUG/freetype/contrib/ttf2pk-1.5-20020430.patch
  -d    Disable auto-correction of MapHangulFamily{}{} in style file

CONFIGFILE syntax example:

  FOUNDRY: xy
  FONTmj: f=bt m=BTmedium.ttf b=BTbold.ttf l=BTlight.ttf
  FONTgt: f=dt m=DTmedium.ttf b=DTbold.ttf
  FONTtz: f=tz m=TZmedium.ttf
  ...

6.2 은글꼴

은글꼴의 경우, Uploads:config-un을 이용할 수 있습니다. See 은글꼴.

6.3 "HLaTeX에서 임의의 TrueType 글꼴 사용하기" 문서에 해당하는 예제


은글꼴이 아닌 다른 한글TrueType 글꼴의 경우에는 해당하는 config 파일을 작성하여야 합니다. 여기서 보이는 예는 [http]HLaTeX에서 임의의 TrueType 글꼴 사용하기 글에서 보인 예제를 동일하게 처리하는 방법에 대한 예시입니다.

  1. 글꼴을 준비하고 글꼴 이름과 글꼴 대응을 미리 정해둔다.

  2. config-my 파일을 작성한다.
    FOUNDRY:	my
    #FONT..:	f=family m=medium.ttf b=bold.ttf l=light.ttf
    FONTmj:	f=bt m=nbatang.ttf	b=h2mjrb.ttf
    FONTgt:	f=gt m=dotum.ttf	b=hmfbg.ttf
    FONTgl:	f=gl m=gulim.ttf	b=h2drrb.ttf
    FONTgr:	f=gr m=ynch05.ttf
    #FONTgs:	f=gs m=gungseo.ttf	b=gungseobold.ttf
    
    이 예는 본문에서 들고 있는 폰트 대응을 따랐습니다. 다만 mj는 family name을 bt로 바꾸었습니다.

  3. 다음과 같이 실행한다.
    #> perl ttf2hlatexfont.pl -c config-my
    


  4. 만들어진 test.tex 파일을 LaTeX으로 돌려본다.

  5. 필요하다면 만들어진 파일들을 texmf-tree로 인스톨한다. (스크립트의 -i 옵션)

6.4 Hangul-ucs에서 임의의 TrueType 글꼴 사용하기

  • FIXME

7 참고

8 주의사항/제한

8.1 PDFLaTeX 지원의 제한

  1. PDFLaTeX에서는 기울임 글꼴을 지원하지 않습니다. 그러므로 oblique(slanted) 시리즈의 글꼴이 만들어지지 않습니다.
  2. PDFLaTeX에서 만들어진 한글PDF는 텍스트의 검색 추출이 되지 않습니다.
  3. PDFLaTeX은 Omega/Lambda를 지원하지 않습니다. 즉, PDFLambda 형태로 쓰지 않습니다.

8.2 글꼴의 문제

  1. 일부 한글 TrueType 글꼴은 상징문자(심볼)나 한자가 포함되어 있지 않을 수 있습니다. 원래 이런 글꼴로 TFM을 추출하였을 때 해당하는 문자가 본문에 쓰이면 Bad Font Metric 에러가 나타나므로, 자신이 사용하려 하는 글꼴이 한자 영역을 포함하고 있는 것인지 확인하여야 합니다. 하지만 20031116 버전부터는 이러한 에러를 교정하는 루틴이 추가되었으므로 TTF 이용이 훨씬 편리해졌습니다.
    (!) 그러나 자동 교정은 사람이 일일이 확인하며 수정하는 것에 미칠 수 없습니다. 자동교정된 부분이 문제가 있다고 판단되면 .sty 파일을 열어 수정하시기 바랍니다. 예를 들어 스타일 파일에서
    \MapHangulFamily{gl}{xxgl,xxgt,xxgt}
    
    와 같이 되어 있는 경우, 두번째 { } 안에 순서대로 한글영역에는 xxgl, 기호영역에는 xxgt, 한자영역도 xxgt가 각각 지정된 것입니다. 이 부분을 사용자의 선택에 따라 다른 글꼴로 교체할 수 있습니다.

8.3 sfd file과 cmap 파일

  1. 이 스크립트는 Omega/Lambda용 subfont 추출을 위한 sfd 파일과 cmap 파일을 사용자가 설정할 수 있도록 하고 있습니다. 새로운 cmap/sfd 파일을 사용하여 발생하는 문제에 대해서는 사용자 자신이 책임을 져야 할 것입니다.
  2. Unicode cmap으로 Identity-H를 사용하는 경우 조합형 글꼴을 포함하는 아주 큰 파일의 경우 DVIPDFMx가 처리하지 못하는 문제가 있습니다.
  3. UKS-HL.sfd를 사용하는 경우 em-dash ligature나 en-dash ligature를 처리하지 못하는 문제가 있습니다.

8.4 -i 옵션에 의한 texmf 설치

  1. 예를 들어 -i c:\texmf-myttf 와 같은 형태로 스크립트를 실행한 경우 c:\texmf-myttf가 생깁니다. 이 디렉토리를 TEXMF-ROOT로 등록하고 Refresh Filename Database를 실행하십시오. 예컨대, MiKTeX의 경우 initexmf -u, teTeX의 경우 mktexlsr
  2. 스크립트가 만들어낸 설정파일(cfg)들은 기존의 설정 파일에 필요한 새로운 설정을 추가한 것입니다. 이 파일들은 새로 만들어진 texmf 트리 아래에 놓여 있습니다. 이 파일들이 효력을 발휘하도록 하려면, 자신의 TEXMF TREE들 가운데 가장 먼저 놓인 TEXMF TREE의 설정 파일 위치로 해당 파일들을 옮기든가, 아니면 새로 만든 TEXMF TREE를 가장 앞쪽 순위로 가져다두든가 하면 됩니다. 만들어지는 설정파일들은 다음과 같습니다.
    1. dvipdfmx.cfg : cid-xxttf.map을 포함하도록 추가됩니다.
    2. pdftex.cfg : xxttf-pdftex.map이 포함되도록 추가됩니다.
    3. ttf2pk.cfg : xxttf2pk.map이 포함되도록 추가됩니다.

9 대화

아래 대화는 은글꼴 페이지에서 옮겨왔습니다.


감사합니다. 건의사항: OFM 생성 루틴도 추가해주시면... HLambda에서도 쓸 수 있게요. ;) --Karnes
예전에 OFM 관련 논의를 제대로 따라가지 못했습니다. 리눅스에서 ovp2ovf라는 프로그램이 제대로 작동하지 않아서였죠. 현재 학교컴퓨터의 ttf2tfm은 OFM패치도 되어있지 않습니다. 그런 이유로 OFM관련부분을 추가하려면 새로 공부할 필요가 있습니다. 조금 기다려 주십시오. 도은이아빠께서 추가해주셔도 상관없구요. -- DohyunKim
그것도 그렇지만 현재의 은글꼴로 OFM을 추출하는 일은 저도 계속 테스트에 성공하지 못하고 있습니다. 짬짜미 해보는 거라서 정확한 원인에 대해서 자세히 말씀드리기는 어렵습니다만... 조만간 정리되는 대로 이 문제에 대해 말씀드리겠습니다. 아무튼지 이것이 돼야 UHC글꼴을 대체할 수 있다는 제 생각에는 변함이 없습니다. 건강하시지요?--Karnes
리눅스에서 OFM을 만들수 없는지라 어쩔수 없이 윈도에서 잠시 테스트해봤습니다. 결론적으로 잘됩니다. 다만, AcrobatReader 6.0에는 UniKS-UCS2-H라는 cmap파일이 없어서(이건 UniKSCms-UCS2-H가 자동으로 불러오더군요) cid.map에다 대신 UniKS-UTF16-H를 지정해줬더니 되더군요. 혹시 안된다고 하신 문제가 이것이었습니까? --DohyunKim
그렇군요.. 감사합니다. 사실은 안 된다고 한 문제는 그것이 아니고... 제가 개인적으로 만든 (변형)은글꼴로 할 때 생기는 문제였던 듯합니다. ;) 워낙 작업을 띄엄띄엄 하다보니 이전에 무슨 일을 했는지 잊어버린답니다. :( --Karnes
테스트를 위해서 Uploads:ttf2hlambdafont.pl올렸습니다. 보시고 문제가 없다고 하시면 위 Perl 스크립트란으로 옮기겠습니다. 어쨌든 OFM은 만들어집니다만, 아직 은글꼴로 무리없는 작업을 기대하긴 곤란하겠던군요. 아참, 그리고 람다용 스크립트와 호환되도록 Uploads:ttf2hlatexfont.pl도 수정하였습니다. 은글꼴이 안정되기까지는 통합스크립트가 무리라고 판단하였습니다. -- DohyunKim
통합 스크립트도 무리지마는... 당장 쓰는 데도 몇 가지 문제가 없진 않겠네요... 감사합니다. 위의 Perl 스크립트 섹션에 제가 추가했습니다. --Karnes


굉장히 신기하군요. Perl을 배워둬야겠습니다. 아직 글꼴 일부 중에 한자와 기호는 들어 있지 않나보군요. 저야 상관없지만... --hoze
감사합니다. 현재 기호는 UnBatang에만 완전히 들어있구요, 한자는 원래 UHC글꼴에 있던 것만 은글꼴에도 들어갔습니다. --DohyunKim


통합스크립트가 나왔군요. 감사합니다. 잘 쓰겠습니다. --Karnes

hoze님의 요청으로 은글꼴 스크립트에 PDFLaTeX 지원코드를 넣기로 마음먹었습니다. 그런데 고치는 김에 폰트이름 붙이는 방식도 바람직한 방향으로 고칠까합니다. KarlBerryRule 을 따른다면 은글꼴의 폰트이름을 어떻게 하면 좋을까요? foundry는 무슨 철자를 사용하면 됩니까? 오메가 폰트의 이름은 어떻게 하면 좋을까요? 전반적인 조언을 부탁드립니다. -- DohyunKim
한글TeX글꼴이름에서 토론을 계속하는 것이 좋겠습니다. --Karnes


마침내 PDFTeX도 지원하는 은글꼴 스크립트가 올라왔네요. 감사합니다. 방금 시험해보았는데, -t -p 옵션으로 실행했을 때와 -t -o 옵션으로 실행했을 때 만들어지는 unttf.sty의 내용이 다르네요. 사용상의 편리를 위해서 스타일 파일은 \ifx\clearocplists\undefined \else \fi를 모두 포함하도록, 말하자면 LaTeX을 위한 설정이나 Lambda를 위한 설정이나 같은 sty 파일이 만들어지도록 하면 좋겠습니다. 고생하셨습니다. 설정 파일을 분리해서 다른 TTF글꼴에 대해서도 범용으로 쓸 수 있게 해주신 것이 감사합니다. 아무튼지, 그 다음 요구사항은 제가 생각하기에 표준 TDS를 따르는 texmf tree로 install하는 옵션을 추가해달라는 것이 될 듯하네요. ttf2hlatexfont.pl --install. 만약 그런 상황이 오면 $home/texmf-UnTTF을 기본 texmf root로 추천합니다. ;) --Karnes 2003-10-16
문화부글꼴에서 사용되는 은글꼴*.fd와 아주 조금 충돌하는군요. fontseries m을 저는 글꼴 이름에서는 안 썼기 때문에 발생하는 일입니다. 이것은 제가 고치도록 하겠습니다. --Karnes

UHC*.fd 파일이나 *.ofm 파일들도 아니만들어지는 상황에서 스타일 파일에 \def\mjdefault{unbt}같은 글꼴설정을 모두 넣어달라는 말씀이신지요? 아니면 -t 옵션에서도 \else라는 한 줄만을 추가하라는 말씀이신지요? 사용의 편의성이 구체적으로 무슨 의미인지 감이 잘 오질 않습니다만... 인스톨 옵션은 추가하는 데 큰 어려움이 없을 것입니다. 그런데 제가 당분간 바빠서 시간이 걸릴지도 모르겠습니다. --DohyunKim
-t 옵션만을 쓴 경우에는 그대로 두더라도, -o 옵션이 있으면 \else 이전에 LaTeX용 명령들이 들어간 sty 파일이 만들어졌으면 좋겠다는 뜻이었습니다. lambda만을 일관되게 지속적으로 사용하는 사람은 적지 않을까 하는 생각에서 사용의 편의라는 표현을 쓴 것입니다. --Karnes
그렇다면 -t 옵션은 없애버리고 스크립트를 돌리면 무조건 LaTeX용 설정만은 수행하는 식으로 바꾸면 되겠습니까? 부가적으로 PDFTeX을 원하면 -p, Lambda를 원하면 -o를 써라... 이렇게 하는 것이 좀더 쉽겠네요. 이건 소스에서 두줄만 지우면 되는데... --DohyunKim
제 의견은 말씀하신 대로 -t 옵션 없이 하는 것이 좋을 듯합니다. 어차피 -o 옵션만 써도 *.tfm은 만들어지는 거니깐... --Karnes


정말 완성도 높은 스크립트네요. 특히 addtocfg()로 설정파일까지 모두 한방에 처리해주는군요. ;) 감사합니다. --Karnes

은글꼴만 되는 게 아니라 이젠 어떤 ttf이든 config만 손보면 다 된다는 것이군요. latex용 tfm, lambda용 ofm, pdftex용 tfm까지요. 감사합니다. --hoze


2003-10-26 addtocfg()에 대한 건의사항... $line\n을 추가할 때, 원래의 cfg 파일에 행끝문자가 없으면 한 줄에 그냥 써집니다. 안전하게 개행문자를 앞에 넣어주는 것은 어떨지요? 주석문 한 줄 정도 더 있어도 괜찮을 듯합니다.
489:
  print CFG @Lines,"\n\% ${foundry}ttf -- added by ttf2hlatexfont.pl\n$line\n";
Progress님이 며칠간 잠은 제대로 주무셨는지 궁금해하십니다. ;) --Karnes
말씀하신 문제는 수정판을 방금 올렸습니다. 아닌게 아니라 무리를 했는지 감기가 들었었는데 이젠 거의 나았습니다. 걱정해주신 두 분께 사의를 표합니다. -- DohyunKim


2003-11-13 은글꼴에서 모든 TTF/TTC까지, LaTeX에서 PDFTeX, Lambda까지... 이 스크립트의 짧은 시간 동안의 발전 과정이 무척 드라마틱하다고 생각합니다. 열심히 보챈 보람이 있군요. ;) 밤잠을 설치면서 좋은 스크립트를 만들어주셔서 정말 감사드립니다. --Karnes
무슨 말씀을요. 스크립트 작성과정은 저의 즐거움이었습니다. Karnes님의 관심과 격려가 없었다면 여기까지 오지 못했을 것입니다. 오히려 제가 감사드립니다. --DohyunKim

2003-11-17 좋은 소스에 감사합니다. 특히 글리프를 체크한 뒤에 빠진 글리프를 다른 것으로 대체하는 기능은 정말 인상적입니다. ttf2hlatexfont을 실행하면 작성되는 test.tex의 내용이 무엇인지 알 수 있나요? 몇 가지 해보았지만 일단 산돌폰트에 관한 test 파일을 올려드립니다. Uploads:test.pdf

펄소스를 보니깐 다음과 같은 부분인 것 같은데...
  '^^b0^^a1^^b2^^e5^^b5^^cb^^b8^^b1^^ba^^f5^^bd^^db'.
  '^^c0^^c1^^c3^^a7^^c5^^eb^^c8^^d1 ^^a8^^b1^^a1^^db^^aa^^a2^^a5^^d2'.
  ' ^^ca^^a1^^cc^^e5^^cf^^cb^^d2^^b1^^d4^^f5^^d7^^db^^da^^c1^^dd^^a7'.
  '^^df^^eb^^e2^^d1^^e5^^b7^^e7^^fb^^ea^^e1^^ed^^c7^^f0^^ad^^f2^^f1'.
  '^^f5^^d7^^f8^^bd^^fb^^a3^^fd^^e7'
와 같이 나오는 것이 맞는지요? (그나저나, MiKTeX 2.3에 포함된 ttf2pk와 makepk 등등이 영 작동하질 않습니다. ps를 도무지 만들 수가 없군요. 다른 TeX배포판을 찾아봐야할지요...) --Progress
일단 ps 파일을 만드는 데 성공하였습니다. ttf2pk.cfg에서, 원래 맨 마지막 줄에 있던 산돌폰트의 맵 파일의 위치를 이리저리 바꾸니 잘 됩니다. ttfonts.map 바로 밑에 놓으니 잘 됩니다. --Progress
ttf2pk.map의 ttfonts.map에 혹시 +가 붙어있지 않았던 것은 아닌지요? 그렇지 않으면 다른 맵 파일 위치에 좌우되는 경우는 동일한 폰트 정의가 들어 있는 경우뿐인데.... 어떤 문제인지 확인해주실 수 있으신지요? --Karnes
+가 붙어있지 않았던 것은 아닙니다. :) (실은 전에도 이 비슷한 문제를 겪은 적이 있습니다.) 다른 맵과 중복되는 동일한 폰트 정의 문제도 아닙니다. :D 그리고 일전에 TeX root 디렉토리를 추가하면서 texmf 디렉토리를 localtexmf 바로 밑에 두어야만, 잘 인식되던 문제는 여전합니다. (KTUGContrib:777) --Progress
희한하군요.... 거 참.... 혹시, 산돌폰트 map 파일의 파일이름이 ttf2pk용과 dvipdfmx용이 동일하거나 하여 map 파일 찾기 문제가 발생한 것은 아닌지요? 아무튼지간에, 이번에 올리신 test.pdf는 처음시작하기에 원래 같은 이름의 파일이 링크되어 있었습니다. 덮어쓰기 문제가 발생하여서 처음시작하기가 이상해져버렸습니다... :( test.pdf와 같은 평범한 이름의 파일은 지양해주시면 감사하겠습니다. 처음시작하기의 파일 이름을 수정해야겠습니다. --Karnes
죄송합니다. 저도 test.pdf로 올리고 나서 얼른 삭제하려고 UploadedFiles를 찾아가서 체크박스에 표시하고 delete하려 했더니, 안 지워졌습니다. sdtest.pdf라 지으려 했거든요. 가능하시면 제가 올린 파일을 바꿔주십시오. 참, map 파일은요, TTF2HLaTeXFont 스크립트를 쓰면서 config 파일의 내용에 따라 자동으로 다르게 생성되는 것 같습니다. 이를테면 제가 foo font를 쓰기 위해 config-foo 라고 config 파일을 만들면, dvipdfmx용 map은 cid-foottf.map으로, dvips용 map은 foottf2pk.map으로 생성됩니다. 그러니 map 파일을 혼동하지는 않을 것입니다. ^^. 암튼 재미있습니다. 운영체제의 문제가 아닌가, 그리고 MiKTeX의 구조적 문제가 아닌가 생각해봅니다. --Progress

저도 ttf2pk가 제대로 동작하지 않아서 truetype 글꼴을 쓴 경우 dvips나 odvips로 ps를 만들 수 없습니다. ttf2pk.cfg를 이리저리 손대 보아도 안 되는군요. dvipdfmx가 잘 돌아가니까 별 문제가 없기는 하지만, PS 프린터로 인쇄하기 위해 pdf를 만든 후에 다시 ps로 변환하니까 좀 비효율적입니다. (단, dvips/odvips는 아직 ttf를 type 8 글꼴로 임베드하는 기능이 없는데 반해 - 없는 것 같습니다. 맞지요? - dvipdfmx는 ttf를 임베드할 수 있어서 좋기는합니다.) 저는 Linux Fedora Core1을 쓰고 있습니다. 다음과 같은 에러 메시지가 나옵니다.
 kpathsea: Running mktexpk --mfmode ljfzzz --bdpi 1200 --mag 1+0/1200 --dpi 1200 ungtm4
    /usr/bin/mktexpk: line 255: 24354 Segmentation fault     ( ttf2pk -t -q $NAME ) >/dev/null 2>&1
    mktexpk: don't know how to create bitmap font for ungtm4.
    dvips: Font ungtm4 not found, characters will be left blank.


ttf2tfm/ttf2pk는 freetyp1 cvs를 받은 후에 여기에 있는 패치를 적용해서 ofm 파일 등을 만들 때에는 아무 문제 없이 동작했습니다. mktexpk는 1.28 (2002-11-11)이고, kpathsea는 3.4.5입니다.혹시 비슷한 일을 겪으신 분 계신지 궁금합니다. 참, 편리한 스크립트를 만들어 주신 김도현님께 감사 드립니다.-- 신정식

ttf2tfm/ttf2pk에 대해서 이루어진 패치는 제가 알기로 세 개인 것으로 알고 있습니다. 하나는 박원규 님의 것이었고, 나머지 둘은 조진환 님의 패치였습니다. 조진환 님의 첫번째 패치는 -l-L 옵션, 즉 ligature를 처리하는 것이었는데, 이것은 1.5버전에서 반영된 것으로 알고 있습니다. 두번째 패치는 -o 옵션, 즉 Omega/Lambda 지원인데 이것은 공식 버전에는 반영되지 않은 것 같습니다. 박원규 님의 패치는 ttf2tfm/ttf2pk를 freetype2 와 연동한 것이었던 것으로 알고 있습니다만, 역시 이것이 정식 버전에 반영되지 않은 것으로 기억합니다. 결국 CJK Truetype을 이용하기 위한 ligature 처리는 현재의 모든 ttf2tfm/ttf2pk에서 가능하지만 Omega/Lambda를 위한 ttf2tfm/ttf2pk는 Windows에서는 MiKTeX-KTUG 2.2/2.3, W32TeX에 포함된 것에서만 지원되고 fpTeX은 이것이 불가능한 것으로 보입니다. Unix, Linux 쪽에서는 freetype1 cvs를 통해서 받은 다음 위의 패치를 사용자가 직접 적용해야 할 것으로 생각됩니다. 만약 ttf2tfm이 1.4 버전 이하라면 한글 TrueType조차도 처리할 수 없을 것이라고 생각합니다. ---Karnes

자세한 답변에 감사드립니다. 하지만, 저도 이미 ttf2tfm/ttf2tk CVS (오늘 다운로드 받은 따끈따끈한. 즉 1.5 이후인) 소스에 여기 있는 Omega/Lambda를 위한 패치를 적용했습니다. 그렇지 않다면, 김도현님의 펄 스크립트를 돌리는 단계에서 (ttf에서 ofm을 생성할 수 없으므로) 더 나아갈 수 없거든요. 문제는 어떤 이유에서인지 ttf2pk -q -t fontname가 segmentation fault를 내는데에 있습니다. debug optin을 주고 컴파일해서 gdb로 추적해 보아야할 듯 싶습니다. ---신정식

위에 올린 글은 신정식 님께 드리는 말씀이었다기보단, 그냥 써둬야 할 문제라고 생각해서 메모해둔 것입니다. ;) segmentation fault는 제가 알 수 없는 문제입니다마는, 우선 freetype1 라이브러리가 문제가 된 것은 아닌지 의심해봅니다. 혹시 문제와 해결책을 발견하시면 알려주시면 감사하겠습니다. 제가 가지고 있는 한컴리눅스에서는 별 문제없이 잘 돌아가고 있습니다. ---Karnes
제가 그 작업을 하던 때가 늦은 (이른?) 시간이어서였는지 정신이 없었나 봅니다. 제 컴퓨터에 있던 두 개의 freetype1-contrib tree 가운데 하나에만 패치를 적용한 듯 싶습니다. 그런데, 왜 ofm은 제대로 만들어졌는지는 저도 모를 일입니다. 어쨌든, 다시 정신을 차리고 패치를 적용하고 컴파일해 보니 아무 문제가 없습니다. 괜히 문제도 없는데, 있는 것처럼 해서 죄송합니다. --- 신정식

올려주신 test.pdf는 전적으로 정상입니다. 제가 의미없는 문자열을 나열한 것은 만들어진 tfm들을 하나하나 다 확인하기 위한, 의도적인 것이었습니다. 즉 KS-HLaTeX.sfd의 각 평면(plane)별로 하나씩 글자를 집어넣다보니 그렇게 되었습니다. 아시다시피 한글평면은 0..9, 기호는 04..07, 한자는 10..29까지로 구성되어 있습니다. 하나의 TTF에서 만들어지는 tfm갯수가 34개가 되고 이들을 하나씩 다 테스트해보기 위한 것이었습니다... 그리고 test.pdf같은 평범한 파일이름 문제는 제게도 일말의 책임이 없지 않습니다. 테스트파일의 이름을 testlatex.tex과 같이 바꾸어야겠습니다. 관리자 입장에서도 더이상 변경의 여지가 없다고 확신하는, 평범한 이름의 파일이 올라 있다면 이것의 권한을 읽기전용으로 변경해두는 등의 방책을 강구할 수 있을 것으로 생각합니다. -- DohyunKim
아, 그렇군요. 테스트 파일의 컴파일은 항상 깔끔하게 잘되는데, 내용이 비범(?)한지라 한번 확인해두고자 함이었습니다. ^^. 감사합니다. --Progress


자동교정기능에 대한 건의 한 가지 ;) 저는 이따금 이 방법으로 글꼴에 대해서 검토하는 경우가 있었습니다. test.tex을 돌릴 때 에러메시지가 뜨는 것이 더 반갑지 않나요? :D 자동교정을 디폴트로 하고, 자동교정을 부르지 않는 옵션이 있었으면 좋겠습니다. --Karnes
-d 옵션을 추가하였습니다. 이 옵션을 주면 자동교정 루틴을 건너뜁니다. -- DohyunKim


2003-11-21 사소한 건의. 자동교정 과정에 대한 것입니다. 자동교정을 위해서 latex을 부를 때 --interaction=nonstopmode보다 batchmode로 부르는 것이 화면을 절약할 수 있을 듯합니다. 테스트 후에 .log, .aux를 지우도록 하면 어떨까요? 만들어진 .sty 파일에 간단한 주석문이 추가되면 좋겠습니다. ;) --Karnes
아, 그렇겠네요. batchmode로 바꾸겠습니다. 그런데 주석문이라 하심은 교정되기 이전의 MapHangulFamily{}{} 설정부분을 말씀하시는 것입니까? 파일 지우는 문제는 이왕 지우려면 .dvi 파일까지 지우는 편이 낫지 않을까요? 이것들을 지우는 거야 간단한 일이지만 꼭 지울 필요가 있을까요?
꼭 지울 필요야 물론 없지요 ;) 어차피 테스트를 해볼 것인데.. 그리고 "주석문"이라고 한 것은 .sty의 제일 첫부분에 이 스타일 파일이 어찌 만들어진 것인지 알려주는 간단한 정보를 말씀드린 것입니다. 자동교정부분은 .orig가 있으니까 별로 필요를 못 느낍니다. 아무튼 감사드립니다. --Karnes


2003-11-23 문제를 발견했던 바로 그 기계(Win98)에서 잘 되는 것을 확인하였습니다. --Karnes
테스트해주신 데 대해 깊이 감사드립니다. --DohyunKim


2004-04-20 hlatexcjk와 관련하여 부탁드릴 것이 있습니다. hlatexcjk에서 \hfontfamilynameprefix라는 스트링을 하나 사용합니다. 예컨대 unttf에서는 이 스트링이 \def\hfontfamilynameprefix{un}으로 지정되어 있었으면 좋겠습니다. xxttf.sty의 마지막에 \def\hfontfamilynameprefix{xx} 이 한 줄을 추가하도록 수정해주시면 감사하겠습니다. 그리고 이왕이면 \ProvidesPackage{unttf}와 같은 설정도 하나 넣어주시면 나중에 \@ifpackageloaded를 써먹을 수 있을 것 같습니다. --Karnes


제가 얼마전에 fedora core 3를 다시 깔면서, 이전의 것을 밀어버려서, 다시 한번 font install하는 과정에서, 이전부터 조금 불편하던 map화일 위치 조정하는것등등을 조금 바꾸었습니다. 제대로 바뀌었는지는 잘 모르겠습니다만... 그리고, 아직 제 system에서는 실험을 해 보지는 못했습니다. 잘못되었다면, 고수님들이 알아서 해 주시겠지요.--synapse



옵션에 로그를 남길 수 있도록 해주시면 시스템을 이해하는데 도움이 되지 않을까요? *nix계열이야 2>&1 | tee log로 로그파일을 남길 수 있겠지만 Window의 Command창에서 남기는 방법을 모르겠네요. 툴이 너무 좋아서 어떻게 돌아가는지 모르겠네요 :D --2006-05-27 hermian


^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2007-07-05 02:41:13
Processing time 0.1302 sec