[Emacs] 24.x 버젼 한글 폰트 설정 & org-mode 의 한글 테이블 깨지지 않게 보이기

  세월이 흘러감에 따라서 변하지 않는 것이 없거늘 어찌 Emacs 가 변하지 않으리라 생각했던가..

말 그대로 입니다. 세월이 흘러 흘러 Emacs 가 24.x 대가 나오기 시작한지도 꽤 여러해가 지났습니다. 그런데 저는 과거의 설정파일을 그대로 사용하고 있었더군요. 문제 없이 사용하고 있었던 이유는 최근 쓰고 있던 OSX 가 버젼업이 되면서 한글 '나눔고딕'이 기본으로 포함되서 별 의도하지 않게 사용하고 있었습니다.

최근 Clojure 에 관한 Online 책을 보다가 그 저자가 설정한 Emacs 설정파일을 제꺼에 포함시키는 과정에서 기본 폰트 크기를 변경시키는 로직이 있는데 제가 처음 보는 함수를 쓰고 있더군요. 찾아보니 제가 기존 설정파일에서 쓰고 있었던 폰트 설정 방법은 사라졌더군요.

예전의 폰트 설정 방법 의 내용이 현행화를 필요로 한다는 점입니다.

(set-face-font 'default "Monaco-10")
(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"))

이 방법이 아주 틀린건 아니지만 살짝 달라졌습니다. 한자나 일본어 설정은 동일하게 동작하는 것 같습니다. 다만 기본 폰트 설정 방법이 변했습니다.

(when (eq system-type 'darwin)

  ;; default Latin font (e.g. Consolas)
  ;; but I use Monaco 
  (set-face-attribute 'default nil :family "Monaco")

  ;; default font size (point * 10)
  ;;
  ;; WARNING!  Depending on the default font,
  ;; if the size is not supported very well, the frame will be clipped
  ;; so that the beginning of the buffer may not be visible correctly. 
  (set-face-attribute 'default nil :height 130)

  ;; use specific font for Korean charset.
  ;; if you want to use different font size for specific charset,
  ;; add :size POINT-SIZE in the font-spec.
  (set-fontset-font t 'hangul (font-spec :name "NanumGothicCoding"))

  ;; you may want to add different for other charset in this way.
  )

이 소스는 KLDP 의 유명한 Emacs 고수이신 cinsk 님의 설정 내용입니다. 제가 좋아하는 폰트로 살짝 고쳤습니다. 다시 말씀드리지만 이건 Emacs 24.x 의 설정 방법입니다.

그리고 "NanumGothicCoding" 폰트는 OSX 에 기본으로 설치가 되어 있지 않습니다. 기본으로 설치 되어 있는 폰트는 "Nanum Gothic" 입니다. 일부러 한글 폰트를 "NanumGothicCoding" 으로 설정한 이유는 나중에 설명하기로 하고 일단 '나눔고딕코딩' 폰트를 다운 받아야 합니다.

나눔고딕코딩 폰트 받기

받아서 서체관리자를 이용해서 설치해 주시고 위의 설정을 .emacs 에 설정해 주면 영문:Monaco , 한글:나눔고딕코딩 으로 설정이 됩니다.

여기까지가 Emacs 24.x 에서 한글 폰트 설정하는 방법이였고. 이제 다른 목적인 Org Mode 에서 한글 테이블 만들 때 표 제대로 보이는 방법에 대해서 이야기 하겠습니다.

Org Mode 는 Ascii 형식의 테이블을 지원합니다. 이게 은근히 편해서 종종 쓰곤하는데 심각한 문제가 있습니다. 한글을 쓰면 테이블 표에 있는 셀(Cell) 크기가 맞질 않습니다. 그래서 궁여지책으로 영문으로 테이블 표를 작성해서 쓰곤 했는데. Emacs 24.x 에 한글을 설정하고 나서는 갑자기 한글로 된 표를 쓰고 싶어졌습니다.

온갖 삽질끝에 이유를 알아냈는데 (어떻게 보면 당연한 거지만)

기본적으로 테이블이 깨지는 이유는 한글 - 영문 폰트의 width 의 비율이 일치하지 않기 때문입니다. 즉 이상적으로는 영문 2자에 한글 1자의 폭이 일치해야 하지만 미묘하게 한글 1자의 폭이 작습니다.

따라서 폰트 크기를 재 설정해 주면 간단하게 해결 됩니다. (이 간단하게 라는 말을 쓰기 위해 고생한 걸 생각하면…)

높이 비율로 크기를 맞춰야 하는데 'Monaco' 크기가 (:height)가 130 일때 'Nanum Gothic' 은 size 가 17 , 'NanumGothicCoding' 은 size 가 16 이어야지 비율이 맞습니다. 실제로 적용은 face-font-rescale-alist 변수를 이용해서 적용해 줍니다.

(setq face-font-rescale-alist
      '((".*hiragino.*" . 1.2)
        ("NanumGothicCoding" . 1.2307692307692308)))

와 같이 .emacs 에 설정을 넣어주면 됩니다.


위와 같이 테이블이 깨지지 않고 보여집니다.