2011년 4월 25일 월요일

[Emacs] 한글 폰트(글꼴) 설정

최신의 Emacs 22~23 에서는 한글 폰트 설정에 따른 불편함은 많이 사라진 편이지만, 역시 마음에 드는 폰트 설정은 힘든 편이었다. 특히 영문과 한글 폰트를 별도로 설정해야 하는 경우 크기를 맞추는 등의 삽질이 필요한 편이다.

일단 무조건 고정폭으로 설정한다는 건 기본이다. (에디터를 가변폭 폰트로 사용한다는 건... 자학 아닌가?!)

주의) 지금부터 나열할 설정은 Mac OS X에서 GNU Emacs 23.3 을 기준으로만 테스트 해 본 설정이다. 리눅스는 모르겠지만 윈도우의 경우 차이가 날 가능성이 있다.

1. 기존 설정

아래 설정은 영문, 한글 그리고 일본어 폰트를 크기에 맞게 세팅해 본 사항이다.
(set-face-font 'default "Monaco-12")
(set-fontset-font "fontset-default" '(#x1100 . #xffdc)
                  "NanumGothicOTF-15")
(set-fontset-font "fontset-default" 'kana
                  "Hiragino Kaku Gothic Pro-14")
(set-fontset-font "fontset-default" 'han
                  "Hiragino Kaku Gothic Pro-14")
나눔고딕OTF(Mac OS X용 OpenTypeFont)가 없다면 AppleGothic-14 로 설정했을 경우 크기가 딱 맞았다. 나눔고딕의 경우 세로가 약간 길기 때문에 15로 설정해야 가로폭이 맞는 듯 하다.

크게 문제는 없었지만 한글이나 일본어에서 사용하는 특수 그림문자가 제대로 표시 안되고 박스로 표시되는 문제는 있었다.

이상 기존에 쓰던 설정이었다.

2. 개선(?)된 설정

크게 무리 없는 설정이었지만 뭔가 마음에 안들었다. 폰트 크기를 개별로 설정해 주는 건 크기를 동적으로 바꿔야 할 상황이 왔을 때 부작용이 나타날 수 있기 때문이다.

그래서 새롭게 설정을 만들어 봤다.
(set-face-font 'default "Monaco-12")
(set-fontset-font "fontset-default" '(#x1100 . #xffdc)
                  '("NanumGothicOTF" . "iso10646-1"))
(set-fontset-font "fontset-default" '(#xe0bc . #xf66e)
                  '("NanumGothicOTF" . "iso10646-1"))
(set-fontset-font "fontset-default" 'kana
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'han
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'japanese-jisx0208
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'katakana-jisx0201
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))

(setq face-font-rescale-alist
      '((".*hiragino.*" . 1.2)
        (".*nanum.*" . 1.3)))
기본 폰트에 해당하는 Monaco 폰트에만 12사이즈를 지정, 나머지 폰트에는 크기를 주지 않았다.

박스로 표시되던 특수문자 표시 문제에 도움이 될까 싶어서 특정 유니코드 스페이스를 추가해 봤고 일본어쪽도 전용 캐릭터셋에 맞게 폰트를 추가로 설정했다.

(특수문자 표시 문제에 도움이 되었는지는 아직 파악되지는 않았다.)

그리고 가장 마지막에 보이는 face-font-rescale-alist를 이용해 기준 폰트에 비례해서 나머지 특정 폰트의 크기를 결정하는 옵션을 추가했다. 이 옵션의 수치는 배수로 판단하면 된다.

rescale-alist를 이용했을 경우 폰트 사이즈를 직접 지정하는 방법에 비해 좀 더 상세한 비율 설정이 가능하고, 기준 폰트의 크기에 비례하므로 폰트 크기를 동적으로 바꾸어도 아마도 제대로 표시되리라 생각된다.

귀찮다면 첫 번재 설정을 이용해도 무난하리라 생각된다. -ㅁ-;;

폰트 설정과 관련한 전체적인 설정은 아래 URL에서 확인 가능한다.

https://github.com/seorenn/dotemacs/blob/master/renn-osx.el

댓글 4개 :

익명 :

스샷의 이맥스는 아쿠아맥스는 아닌가보네요.
어떤 이맥스 사용하시나요?
emacsformacosx.com 버전인가요?

Seorenn :

GNU Emacs의 Cocoa버전입니다. homebrew로 빌드해서 설치한건데 언급하신 사이트의 것도 동일한 소스입니다.

익명 :

지나가다 글 남깁니다. 알려주신 방법으로 윈도우에서는 글꼴은 바뀝니다만, rescaling은 왠지 잘 안먹는데요. 어쨌든 감사합니다. 덕분에, 제 mbp 랑 회사 컴이랑 모두 이뿌게 한글이 나옵니다.

(cond
...
(win32p
(set-fontset-font "fontset-default" '(#x1100 . #xffdc)
'("나눔고딕" . "iso10646-1"))
(set-fontset-font "fontset-default" '(#xe0bc . #xf66e)
'("나눔고딕" . "iso10646-1"))
(setq face-font-rescale-alist
'((".*나눔고딕.*" . 1.2)))
)
...

Seorenn :

익명// 윈도우의 경우는 폰트 스케일이 다를 수도 있습니다. ;-)