nhppf와nh2ps를 위한 HLaTeX 한글 PS폰트 설치

----------------------------------------------------------------------------
이 문서는 HLaTeX-0.97의 포스트스크립트 폰트 설치법을 설명합니다. 많은 분들이
nh2ps나 nhppf를 이용하는데 있어서 어려움을 겪는 관계로, 따로 설명하는
페이지를 만들게 되었습니다.

필요한 것

다음을 설치해 두었다고 가정합니다.

   * nh2ps(http://jazz.snu.ac.kr/~junker/work/nh2ps)나
     nhppf(http://jazz.snu.ac.kr/~junker/work/nhppf)
     HLaTeX이외에 이 폰트를 사용하는 프로그램은 이 두가지밖에 없습니다.
   * 고스트스크립트(http://www.cs.wisc.edu/~ghost/index.html)
     ghostscript 5.10에서는 HLaTeX-0.97폰트 사용에 약간의 문제가 있습니다.
     이에 관해서는 한글과 Printing(http://nuclina.hoseo.ac.kr/ps/)이나
     Ghostscript와 한글(http://jazz.snu.ac.kr/~junker/work/gs-ko/)를 꼭
     읽어보세요.
   * Ghostview(http://www.cs.wisc.edu/~ghost/index.html) 또는
     gv(http://wwwthep.physik.uni-mainz.de/~plass/gv/)
   * HLaTeX-0.97의 포스트스크립트 폰트는 가까운 CTAN 미러 사이트에서 구할 수
     있습니다.
        o ftp://ftp.kreonet.re.kr/pub/CTAN/fonts/korean/HLaTeX/(CTAN mirror)
        o ftp://ftp.linguistik.uni-erlangen.de/pub/HLaTeX/updates/(pkmj와
          pkgr업데이트 버전 - gs5.10이상 사용자는 두 폰트를 여기서 받아야
          합니다)

----------------------------------------------------------------------------

설치법

pkmj.tar.gz(한글 명조), pshanja-myoungjo.tar.gz(한자 명조), phsym(전각
기호)에 대해서만 설명하겠습니다. 다른 폰트도 마찬가지이므로 같은 방법을
사용하면 됩니다.

소스 풀기

먼저 소스를 폰트를 설치할 곳에 풀어넣습니다.

# cd /usr/local/share/fonts      <-- 원하는 곳으로 하세요.
# tar xzvf pkmj.tar.gz
type1/korean/pkmj/
type1/korean/pkmj/pkmjm1.pfb
type1/korean/pkmj/pkmjm2.pfb
type1/korean/pkmj/pkmjm3.pfb
type1/korean/pkmj/pkmjm4.pfb
type1/korean/pkmj/pkmjm5.pfb
...

vf, afm, tfm디렉토리에도 여러 파일이 만들어지는데, HLaTeX을 사용할 목적이
아니라 nh2ps나 nhppf만을 사용하고자 한다면 필요 없습니다. 지워도 좋습니다.
type1디렉토리만 남겨 둡니다.

# rm -fr vf afm tfm

이와 같은 방법으로 한자와 기호 폰트도 풀어넣습니다.

# tar xzvf pshanja-myoungjo.tar.gz
# rm -fr vf afm tfm
# tar xzvf phsym.tar.gz
# rm -fr vf afm tfm

다른 폰트도 마찬가지로 합니다.

Fontmap만들기

gs에서 사용할 Fontmap을 만들어야 합니다. 기본이 되는 Fontmap을
CTAN사이트에서 받읍시다. 이 Fontmap에는 HLaTeX-0.97의 모든 PS폰트 이름이
저장되어 있으므로, 폰트를 추가로 설치해도 Fontmap을 수정할 필요는 없습니다.

   * ftp://ftp.kreonet.re.kr/pub/CTAN/language/korean/HLaTeX/fonts/config/Fontmap

그리고 수정 파일이 필요합니다. 이는 pkmj의 수정 파일과 마찬가지로

   * ftp://ftp.linguistik.uni-erlangen.de/pub/HLaTeX/updates/Fontmap.diff

Fontmap을 패치하려면 다음과 같이 합니다.

# patch -p1 < Fontmap.diff

이제 Fontmap을 보면 다음과 같은 내용입니다.

%% The directories may not be for you.
% Hangul Wansung
/HangulMyoungjoA-Regular (/usr/teTeX/texmf/fonts/type1/korean/pkmj/pkmjm0.pfb);
/HangulMyoungjoB-Regular (/usr/teTeX/texmf/fonts/type1/korean/pkmj/pkmjm1.pfb);
/HangulMyoungjoC-Regular (/usr/teTeX/texmf/fonts/type1/korean/pkmj/pkmjm2.pfb);

/로 시작하는 것은 폰트 이름이고(이것은 바꾸면 안됩니다), 괄호 안의 것은
파일의 경로명입니다. 이 디렉토리를 여러분의 것과 같도록 맞추면 됩니다. 예를
들어 지금의 예(/usr/local/share/fonts에 폰트를 풀어넣은 경우)에서는 한글
명조의 경우 앞부분의 디렉토리명이 /usr/local/share/fonts/type1/korean/pkmj가
됩니다. 즉 /usr/teTeX/texmf를 /usr/local/share로 고쳐 주면 됩니다. 일일이
고치는 것은 어려우므로, sed의 도움을 받읍시다.

# sed 's/\/usr\/teTeX\/texmf\/fonts/\/usr\/local\/share\/fonts/' Fontmap > Fontmap.new

sed의 사용법에 대해서는 sed의 온라인 매뉴얼(man sed)를 참고하세요. 다른
디렉토리에 설치한 경우에는, \/usr\/local\/share\/fonts를 원하는
디렉토리명으로 바꾸어 주세요. sed에서 사용하는 정규식(regular expression)을
사용할 때에는 디렉토리 구분자인 /를 \/로 바꾸어 써 주어야 합니다.
Fontmap.new를 살펴봅시다.

%% The directories may not be for you.
% Hangul Wansung
/HangulMyoungjoA-Regular (/usr/local/share/fonts/type1/korean/pkmj/pkmjm0.pfb);
/HangulMyoungjoB-Regular (/usr/local/share/fonts/type1/korean/pkmj/pkmjm1.pfb);
/HangulMyoungjoC-Regular (/usr/local/share/fonts/type1/korean/pkmj/pkmjm2.pfb);
/HangulMyoungjoD-Regular (/usr/local/share/fonts/type1/korean/pkmj/pkmjm3.pfb);

Fontmap설치

경로명이 맞게 잘 바뀌었다면, 이 파일을 gs가 알 수 있는 곳에 설치해야 합니다.
어디 설치할 수 있는지 알기 위해서, 다음 명령을 줍시다.

# gs -help
Aladdin Ghostscript 5.10 (1997-11-23)
Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA.  All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
 -dNOPAUSE           no pause after page   | -q       `quiet', fewer messages
 -gx  page size in pixels   | -r  pixels/inch resolution
 -sDEVICE=  select device         | -dBATCH  exit after last file
 -sOutputFile= select output file: - for stdout, |command for pipe,
                                         embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PDF
Available devices:
   x11 x11alpha x11cmyk x11gray2 x11mono deskjet djet500 laserjet ljetplus
   ljet2p ljet3 ljet4 cdeskjet cdjcolor cdjmono cdj550 pj pjxl pjxl300
   uniprint bj10e bj200 bjc600 bjc800 faxg3 faxg32d faxg4 pcxmono pcxgray
   pcx16 pcx256 pcx24b pcxcmyk pbm pbmraw pgm pgmraw pgnm pgnmraw pnm pnmraw
   ppm ppmraw tiffcrle tiffg3 tiffg32d tiffg4 tifflzw tiffpack tiff12nc
   tiff24nc psmono psgray bit bitrgb bitcmyk pngmono pnggray png16 png256
   png16m jpeg jpeggray pdfwrite pswrite epswrite pxlmono pxlcolor nullpage
Search path:
   . : /usr/local/share/ghostscript/5.10ft :
   /usr/local/share/ghostscript/5.10ft/hangul :
   /usr/local/share/ghostscript/5.10ft/kanji :
   /usr/local/share/ghostscript/fonts : /usr/lib/X11/fonts/Type1Adobe
For more information, see /usr/local/share/ghostscript/5.10ft/doc/use.txt.
Report bugs to ghost@aladdin.com; use the form in bug-form.txt.

"Search path"항목을 보면, gs가 파일을 찾을 때 쓰는 경로명이 있습니다. 설치한
gs의 버전에 따라 이 경로명은 다를 수 있습니다. 위의 것은 gs에 한글
FreeType드라이버와 Digital Unix의 DPS용 폰트를 사용할 때의 경우입니다. 또한
다음 명령도 주어 봅시다.

# env | grep GS_LIB

여기 있는 경로명도 살펴보게 됩니다. 없어도 상관 없습니다. 그 우선 순위에
대해서는 gs소스에 있는 use.txt를 읽어보세요. 이제 Fontmap은 이중 하나에
설치하면 됩니다. 보통 /usr/local/share/ghostscript/버전/디렉토리에는
Fontmap이 존재하므로, 이 파일에 추가하거나, 다른 위치에 설치하면 됩니다.

추가의 경우에는,

# cat Fontmap.new >> /usr/local/share/ghostscript/버전/Fontmap

으로 설치하고, 따로 두고 싶다면

# cp Fontmap.new /usr/local/share/fonts/Fontmap

과 같이 임의의 디렉토리에 Fontmap을 복사하고, GS_LIB환경변수를 그 디렉토리에
맞추어 주면 됩니다.

% setenv GS_LIB /usr/local/share/fonts            (csh, tcsh)
$ GS_LIB=/usr/local/share/fonts; export GS_LIB    (sh)
# export GS_LIB=/usr/local/share/fonts            (ksh, bash)

이 경우 GS_LIB의 셋업부를 여러분의 쉘 초기화 파일에 넣어주세요. 다른 방법은,
gs를 컴파일할때 makefile에(보통 unix-gcc.mak를 사용합니다) 있는
GS_LIB_DEFAULT변수에 위 경로명을 넣어 주는 것입니다.
----------------------------------------------------------------------------

테스트

이제 잘 되었는지 테스트해 봅시다. nh2ps의 예를 들겠습니다. 한글 텍스트 문서
아무것이나 해 보면 됩니다.

# nh2ps hangul.txt > hangul.ps

이 문서를 gs나 ghostview(또는 gv)로 보면 됩니다. 한글이 잘 나왔나요? 한자나
심볼 폰트를 설치한 경우에는 그런 문자가 포함된 문서를 가지고 시험해 보면
됩니다. nhppf의 경우 시험은 nhppf의 홈페이지에 잘 나와 있습니다.

한글이 제대로 나오지 않는다면 두가지 정도의 문제가 발생합니다.

   * Fontmap에 써 있는 폰트 경로명이 잘못됨
   * Fontmap을 읽지 못함

전자의 경우 위의 설치 단계에서 Fontmap만들기를 다시 해 보시고, 그래도 문제가
있다면 Fontmap이 gs의 search path + GS_LIB의 경로명에 속하는지 확인해 보시기
바랍니다. 안전한 방법은 gs의 기본 Fontmap에 추가해 두는 것입니다.

gs에서 보기가 잘 되었다고 이를 그냥 프린터로 보내서 찍을 수는 없습니다.
반드시 gs에게 필터링 요청을 해야 합니다. 이 방법에 대해서는
고스트스크립트(gs)를 사용한 프린터
필터링(http://jazz.snu.ac.kr/~junker/doc/gsfilter.html)을 읽어보시기
바랍니다.
----------------------------------------------------------------------------
http://jazz.snu.ac.kr/~junker/doc/hlatex-psfont-install.html
Choi Jun Ho <junker@jazz.snu.ac.kr>
Last modified: Wed Jan 21 12:47:45 1998

----------------------------------------------------------------------------
                            [Jazz | Choi Jun-Ho]
