GMT

GMT 한글 폰트 사용 [윈도우]

작성자
heukchoo
작성일
2021-01-17 20:19
조회
819
 

GMT에서 한글 폰트를 사용하기 위해 오랫동안 삽질 했는데 드디어 성공했다.^^

다만, 윈도우에서만 사용가능하고 리눅스에서는 아직 해결하지 못했다.

 
아래에 방법을 설명한다.

 




GMT와 PS 파일의 폰트 사용

 
GMT 설치 글에서 설명하였듯이 GMT는 PS(Postscript) 파일로 결과물을 생성하며 Ghostscript를 사용하여 PS 파일 내용을 해석하고 뷰어(윈도우에서 현재 GSview를 사용)로 내용을 볼 수 있다.

PS 파일로 제작되는 폰트 역시 같은 과정으로 처리될 것이다.

이것에 대해 컴퓨터가 처리하는 정확한 과정은 모르겠지만 다음과 같이 추측이 된다.

GMT에서 등록된 폰트(gmt pstext -L 명령으로 확인 가능)를 이용해 PS 파일을 생성한다.
PS 파일에는 폰트 이름 등의 정보가 있을 것이다.
Ghostscript가 PS 파일을 해석하려면 사용한 폰트의 이름 등 정보가 Ghostscript에 등록되어 있어야 할 것이다.

마지막으로 뷰어는 해석된 폰트 정보를 통해 실제 폰트자료를 참조하여 그림을 그리고 우리에게 보여줄 것이다.

 




윈도우 GMT 폰트사용 설정


먼저, Ghostscript에서 사용 가능한 한글 폰트를 확인한다.

참고로 버전에 따라 한글을 지원하지 않을 수 있으므로 최신 버전을 설치한다.
(gs9.22 버전을 사용함)

기본으로 설치했다면 경로는 다음과 같다.

C:\Program Files\gs\gs9.22\examples\cjk

 
위 경로에 여러가지 PS 파일이 있는데 그 중 gscjk_ak.ps 파일을 텍스트 편집기로 연다.
(gscjk_aj.ps는 일본어, gscjk_ac.ps는 중국어이다)

 
주의 할 것은 윈도우 또는 DOS는 개행(줄바꿈) 문자가 리눅스 등과 상이하여 윈도우 메모장으로 해당 파일을 열면 요상한 문자와 함께 하나의 행으로 스크립트가 쭉이어져 보인다.
따라서 울트라에디트나 리눅스 편집기 등에서 열고 작업하는 것이 좋다.
(워드패드로 열면 되지만 개행문자가 윈도우 버전으로 바뀌면 오류가 발생할 수 있다)

 
다음은 gscjk_ak.ps 파일 내용 중 일부로 분홍색 부분이 한글 폰트명이다.

명조, 고딕 등 3가지 폰트가 있다.
(기울임꼴) dup stringwidth neg rmoveto show
/HYSMyeongJo-Medium--KSC-EUC-H *findfont [ 1 0 .3 1 0 0 ] makefont 20 scalefont setfont
100 250 moveto
(기울임꼴 Italic transformation) show
%
/HYSMyeongJo-Medium--KSC-EUC-H *findfont 20 scalefont setfont
150 400 moveto
(MyeongJo Typeface 명조) show
/HYGoThic-Medium--KSC-EUC-H *findfont 20 scalefont setfont
150 375 moveto
(Gothic Typeface 고딕) show
/HYRGoThic-Medium--KSC-EUC-H *findfont 20 scalefont setfont
150 350 moveto
(Rounded Gothic Typeface 둥근고딕) show
%
/Times-Roman findfont 13 scalefont setfont
50 200 moveto
(* Korean translation of "Ghostscript" is merely associative \
characters of these meanings.) show
50 200 13 sub moveto
(In Korean articles, customarily we use just "Ghostscript" as it is.) show
showpage
%%Trailer
%%EOF

 
이 폰트명들을 GMT에서 사용할 수 있게 등록해야 한다.
 
GMT가 설치된 경로에서 폰트 등록을 위한 파일을 찾아 연다.
기본으로 설치했다면 경로는 아래와 같다.

C:\programs\gmt5\share\postscriptlight

 
위 경로에서 PSL_custom_fonts.txt 파일을 열어서 울트라 에디트 등에서 확인한 한글 폰트 3개를 다음과 같이(분홍색 부분) 추가하고 저장한다.

 
# Encoded = 0 if we may reencode this font as needed.
#
#Fontname                                     Fontheight            Encoded
Ryumin-Light-EUC-H                           0.700                          1
Ryumin-Light-EUC-V                            0.700                         1
GothicBBB-Medium-EUC-H                0.700                          1
GothicBBB-Medium-EUC-V                 0.700                         1
HYSMyeongJo-Medium--KSC-EUC-H          0.700             1
HYGoThic-Medium--KSC-EUC-H                   0.700            1
HYRGoThic-Medium--KSC-EUC-H                0.700            1
 

제대로 등록되었는지 확인하기 위해 CMD 명령프롬프트에 gmt pstext -L 을 실행한다.
일련번호와 함께 폰트명이 출력되는데 마지막 부분에 아까 추가한 세개의 폰트가 있으면 제대로 등록된 것이다.

 
마지막 단계로 GSview를 열어 폰트자료를 참조하도록 폰트자료의 경로를 설정한다.

GSview의 Options-Advanced Configure 메뉴창을 연다.
Ghostscript Include Path에는 gs의 실행파일과 폰트가 이미 경로 지정되어 있다.

여기에 다음과 같이 윈도우 폰트 경로(분홍색)를 추가한다.
C:\Program Files\gs\gs9.22\bin;C:\Program Files\gs\gs9.22\lib;C:\Program Files\gs\gs9.22\fonts;C:\windows\fonts
 

세미콜론(;)으로 경로들이 구분되어 있는데 이미 지정된 경로 뒤에 세미콜론을 넣고 이어서 경로를 작성하면 된다.
OK를 누르면 모든 준비는 끝난다.

 




한글 폰트 사용 확인

 
우선 gmt pstext -L 명령으로 등록된 한글 폰트 앞의 일련번호를 확인한다.
일련 번호를 사용하여(분홍색) 명령프롬프트에서 아래의 예제를 실행해 본다.


스크립트로 만들어 실행해도 된다.
$ echo  127  36.5  20p,40,black  0  LM  대한민국 > kor.txt

$ echo  130  38.2  20p,40,black  0  LM  동 해 >> kor.txt

$ echo  130.15  37.8  13p,40,black  0  LM  East Sea >> kor.txt

$ gmt pscoast -JM15c -R122/133/33/43 -Ba2f1g2WesN -Ggray -Df -Na -K > korea.ps

$ gmt pstext kor.txt -J -R -B -F+f+a+j -O >> korea.ps
 




GMT에서 한글 폰트 사용하기 성공이다. ㅠㅠ






PSCONVERT로 한글 폰트를 사용한 PS 파일 변환


psconvert는 PS 파일을 pdf나 각종 레스터 파일로 변환할 때 사용한다.

한글 폰트를 사용한 PS 파일을 보통의 psconvert 명령으로 변환하니 폰트를 찾을 수 없다는 에러가 발생하여 해결방법을 설명한다.

다음은 위의 예제로 생성한 PS 파일을 변환하는 명령이다.

분홍색 부분(-C 옵션)을 추가하면 이상없이 다른 이미지로 변환된다.
$ gmt psconvert  korea.ps  -Tg  -A  -P  -C-sFONTPATH=C:\windows\fonts
 

 

 

 
전체 7

  • 2021-05-12 22:09
    테스트 해보니 GMT6에서는 본문의 PSL_custom_fonts.txt 파일을 만들어서 gmt6\share 폴더에 위치시키면 됩니다. 파일 생성하고 pstext -L 실행시키면 작성한 폰트가 추가된 것을 확인할 수 있습니다.

  • 2021-05-12 22:15
    참고로 본문의 방식을 수행하고도 한글이 깨져서 나오는 경우 인코딩 방식의 문제일 가능성이 높습니다. 본문에서 추가한 폰트는 EUC-KR 인코딩 방식이지만 작업 환경에 따라 PS 파일이 UTF-8 인코딩하는 것으로 생성되면 한글이 깨져서 나옵니다.
    (생성한 PS 파일의 인코딩 방식을 확인하는 방법) 윈도우의 경우 메모장을 열어서 PS 파일을 끌어다 읽으면 메모장 하단 우측에 인코딩방식이 표시됩니다. 리눅스의 경우 'file -i PS파일명' 명령으로 확인할 수 있습니다.
    생성한 PS파일의 인코딩 방식이 UTF-8인 경우 EUC-KR로 변경해 주어야 합니다. 윈도우는 텍스트 편집기를 사용하면되고(ANSI 로 변경) 리눅스는 'iconv -f utf-8 -t euc-kr PS파일명 > 변경할PS파일명' 명령으로 변환 가능합니다.

  • 2021-02-14 17:22
    GMT 6에서 안되네요ㅠㅠ

    • 2021-04-07 21:26
      해결방안을 찾아야 할텐데 짬이 안나네요 ㅠ

  • 2021-05-17 14:01
    친절한 답변 감사합니다^^
    알려주신 방법으로 해결 했습니다.

  • 2022-09-29 13:28
    import pygmt

    out_f="ks-font.jpg"

    Rgn="122/133/33/43"
    Prj="M15c"

    fig = pygmt.Figure()

    fig.coast(region=Rgn, projection=Prj,frame=["WeNs", "a2f1g2"],land="gray",resolution="f",borders="a")

    with open("kor.txt", "w") as f:
    f.write("127 36.5 0 20p,HYSMyeongJo-Medium--KSC-EUC-H,black LM 대한민국\n")
    f.write("130 38.2 0 20p,HYGoThic-Medium--KSC-EUC-H,black LM 동 해\n")
    f.write("126.2 33.35 0 9p,HYRGoThic-Medium--KSC-EUC-H,black LM 제주도\n")
    f.write("131.15 37.8 0 13p,1,black LM East Sea\n")
    fig.text(textfiles="kor.txt", angle=True, font=True, justify=True)

    fig.savefig(out_f)
    #fig.show()

    pygmt에서는 gmt6\share 에 PSL_custom_fonts.txt 파일을 만들어서 넣어 놓으면 별 문제 없네요^^

  • 2023-01-25 18:00
    폰트는 따로 다운받아야 하나요...