Spacemacs에서 한국어 사용하기

Vim에서 하스켈 개발 환경을 설정하다가 짜증이 나서 대안을 찾다가 Spacemacs를 설치해서 사용해보고 있는데, 별도의 설정 없이 설치하자마자 바로 쓸 수 있을 정도로 기본 설정이 훌륭해서 현재까지는 만족스럽게 쓰고 있습니다. 다만 한국어를 설정하는 방법이 옛날 글만 있거나 이맥스 초보가 이해하기 어렵게 작성되어 있어서 좀 헤멨습니다. 문서를 찾아보면서 어느 정도 원하는 대로 설정하는데 성공해서 설정을 공유합니다. 한국어 글꼴은 D2Coding을 사용하고 있는데 원하시는 글꼴을 설치해서 사용하시면 되겠습니다.

환경은 Ubuntu 16.04.4, Emacs 26.1입니다.

;; ~/.spacemacs

(defun dotspacemacs/user-config ()
  ...
  (set-language-environment "Korean")
  (prefer-coding-system 'utf-8)
  (setq default-korean-keyboard "3f")
  (global-set-key (kbd "<kana>") 'toggle-input-method)
  (global-unset-key (kbd "S-SPC"))
  (set-fontset-font "fontset-default" 'hangul '("D2Coding" . "unicode-bmp"))
  ;; 정정: 아래와 같이 유니코드 범위를 명시할 필요 없이 위의 줄만으로도 한글 유니코드는 커버됩니다.
  ;; (set-fontset-font "fontset-default" '(#x1100 . #x11ff) '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '#x20a9 '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '(#x302e . #x302f) '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '(#x3130 . #x318f) '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '(#x3200 . #x321e) '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '(#x3260 . #x327f) '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '(#xa960 . #xa97f) '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '(#xac00 . #xd7a3) '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '(#xd7b0 . #xd7ff) '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '(#xffa1 . #xffdc) '("D2Coding" . "iso10646"))
  ;; (set-fontset-font "fontset-default" '#xffe6 '("D2Coding" . "iso10646"))
  ...
  )

각 줄의 의미는 아래와 같습니다.

  • (set-language-environment "Korean"): 한국어 언어 설정을 불러옵니다. C-h L Korean <RET>를 실행하시면 어떤 기능을 하는지 확인할 수 있습니다.
  • (prefer-coding-system 'utf-8): 한국어 언어 설정에서 지원하는 기본 인코딩 시스템은 ISO-2022-KR, EUC-KRCP949입니다. 대신 utf-8로 설정했습니다.
  • (setq default-korean-keyboard "3f"): 기본은 두벌식인데 저는 세벌식 최종을 사용하므로 이렇게 설정했습니다. 두벌식을 사용할 경우 필요 없는 설정입니다. 사용 가능한 입력기 목록은 C-h I hangul에서 확인할 수 있습니다.
  • (global-set-key (kbd "<kana>") 'toggle-input-method): 입력기 전환 기능을 한/영 키에 설정합니다.
  • (global-unset-key (kbd "S-SPC")): 기본적으로 설정되어 있는 입력기 전환 키는 Shift+Space인데 자꾸 원하지 않을때 전환하는 일이 생겨서 키를 해제했습니다.
  • (set-fontset-font "fontset-default" '(#x1100 . #x11ff) '("D2Coding" . "iso10646")): U+1100-U+11ff 범위 내의 문자에는 D2Coding 글꼴을 사용하도록 설정했습니다. 해당 범위는 iso-10646 유니코드 표준 상에서 Hangul Jamo에 해당하는 영역입니다.
  • (set-fontset-font "fontset-default" '#x20a9 '("D2Coding" . "iso10646")): Currency Symbols에서 반각 원화 기호의 글꼴을 지정합니다.
  • (set-fontset-font "fontset-default" '(#x302e . #x302f) '("D2Coding" . "iso10646")): CJK Symbols and Punctuation에서 중세 한국어 성조 표기 기호의 글꼴을 지정합니다.
  • (set-fontset-font "fontset-default" '(#x3130 . #x318f) '("D2Coding" . "iso10646")): Hangul Compatibility Jamo에 해당하는 범위의 글꼴을 지정합니다.
  • (set-fontset-font "fontset-default" '(#x3200 . #x321e) '("D2Coding" . "iso10646")): Enclosed CJK Letters and Months에서 괄호로 감싸인 기호의 글꼴을 지정합니다.
  • (set-fontset-font "fontset-default" '(#x3260 . #x327f) '("D2Coding" . "iso10646")): Enclosed CJK Letters and Months에서 원으로 감싸인 기호 및 KS기호의 글꼴을 지정합니다.
  • (set-fontset-font "fontset-default" '(#xa960 . #xa97f) '("D2Coding" . "iso10646")): Hangul Jamo Extended-A에 해당하는 문자 범위의 글꼴을 지정합니다.
  • (set-fontset-font "fontset-default" '(#xac00 . #xd7a3) '("D2Coding" . "iso10646")): Hangul Syllables에 해당하는 문자 범위의 글꼴을 지정합니다.
  • (set-fontset-font "fontset-default" '(#xd7b0 . #xd7ff) '("D2Coding" . "iso10646")): Hangul Jamo Extended-B에 해당하는 문자 범위의 글꼴을 지정합니다.
  • (set-fontset-font "fontset-default" '(#xffa1 . #xffdc) '("D2Coding" . "iso10646")): Halfwidth and Fullwidth Forms에서 한글 반각 문자의 글꼴을 지정합니다.
  • (set-fontset-font "fontset-default" '#xffe6 '("D2Coding" . "iso10646")): Halfwidth and Fullwidth Forms에서 전각 원화 기호의 글꼴을 지정합니다.