세월이 흘러감에 따라서 변하지 않는 것이 없거늘 어찌 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 에 설정을 넣어주면 됩니다.


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


아래와 같이 파일을 열어서

$ emacs ~/.Xresources


다음과 같은 내용을 추가해 줍니다.

Emacs.font: Consolas-12
emacs.FontBackend: xft


그리고 다음과 같이 터미널에서 입력해 줍니다.

$ xrdb -merge ~/.Xresources


우분투에 Consolas 폰트를 설치하는 방법은 예전 포스트 에서 참조하세요.


EDIT: 2014-02-04

위 방법은 민트 리눅스 (Mint Linux) 마야 (Maya) 버젼에서도 동일하게 동작합니다.  

 
저는 터미널 (Terminal) 에서 작업을 많이 합니다. 민트를 깔아보고 놀랐던 이유가 터미널 프로그램이 이뻐서 였습니다. 그래서 기본 설정이 '흰 바탕에 검은색 글씨' 였는데 바로 '검은색 바탕에 회색 글씨' 로 바꾸어 줬습니다. 역시 검은색이 마음이 안정된다고나 할까요?

그랬는데 한글 언어팩을 설치하고 났더니만 터미널 상에서 한글이 정말 보기 싫게 변하더군요. 그래서 나눔고딕 폰트를 설치해주고 (저번 아티클 참조)

/etc/fonts/conf.d/69-language-selector-ko-kr.conf

를 열어서


	
    
		
			monospace
		
		
			Dejavu Sans Mono
			NanumGothic
		
	

위와 같이 추가해 주면 됩니다.  (정확히는 이미 되어 있는 것을 변경해 주는 것입니다)


그러면 이렇게 나눔고딕 형태로 한글 폰트가 바뀌게 됩니다.


 이맥스 (Emacs) 에서 영문 폰트는 기본적으로 지정해 줄 수가 있습니다. 한글하고 일어 한문은 지정하는 여러가지 방법이 있지만 이 방법이 가장 쉬운듯 해서 정리해 봤습니다. 

EDIT:
  나눔 고딕 폰트 설치를 위해서 먼저 나눔고딕 폰트를 설치해야 할 필요가 있겠지요?
  나눔고딕 페이지 이동

osx 10.6 (SnowLeopard)
테스트 클라이언트 (Client) : Aquamacs 2.1 

이고 .emacs 파일에 다음과 같이 써 주면 됩니다. 


  (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("NANumGothicCoding" . "unicode-bmp")) ;
  (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("NanumGothicCoding" . "unicode-bmp")) ;
  (set-fontset-font "fontset-default" 'kana '("AppleGothic" . "unicode-bmp"))
  (set-fontset-font "fontset-default" 'han '("AppleGothic" . "unicode-bmp"))


EDIT : 저보다 더 깔끔하게 수정하신 분이 계셔서 그분의 블로그를 링크합니다.
  원문 보기 : http://seorenn.blogspot.com/2011/04/emacs_24.html

(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 를 쓰게 되어 있으나 나중에 혹시 Consolas 로 바꿀때 사용할려고 남겨뒀습니다. 그리고 폰트 이름이 바꼈습니다. (저는 예전 폰트 이름 그대로 사용중) 그리고 크기 조절이 들어간 것이 차이가 있습니다.


한글은 나눔고딕 코딩으로 지정해 줬습니다. 그런데 아쉬운건 나눔고딕 코딩이 한자 폰트가 빠졌다는 것이겠지요. 그래서 다른 코딩 폰트를 지정해 줘야 하는데 영문 폰트로 알아내는 것이 귀찮더군요. 그래서 제일 만만한 애플 고딕으로 지정해 줬습니다. 



테스트 화면 입니다. 






이렇게 저렇게 해도 콘솔라스 폰트를 구하기 어려울 때를 대비해서 올려둡니다.




예전의 복잡했던 방법에서 탈피해서 MS 의 CoreFonts 들을 쉽게 설치할 수 있는 방법이 열렸습니다. 너무 쉬어서 쓰기도 부끄럽군요. 

 우분투 (Ubuntu) 11.10 에서 테스트 했습니다. "Oneiric Ocelot"(몽환적 시라소니) 라고도 하지요. 
 
$sudo apt-get install cabextract



로 다운 받으시면 됩니다.  제 경우에는 이미 설치되어 있더군요. 
 
그리고  스크립트를 한개 만듭니다.  vista-fonts-installer.sh 로 만들어 줬습니다. 다음은 그 파일에 저장될 내용입니다.




#!/bin/sh
# Copyright (c) 2007 Aristotle Pagaltzis
# 
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# 
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.

set -e

exists() { which "$1" &> /dev/null ; }

if ! [ -d ~/.fonts ] ; then
	exec 2>&1
	echo 'There is no .fonts directory in your home.'
	echo 'Is fontconfig set up for privately installed fonts?'
	exit 1
fi

# split up to keep the download command short
DL_HOST=download.microsoft.com
DL_PATH=download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26
ARCHIVE=PowerPointViewer.exe
URL="http://$DL_HOST/$DL_PATH/$ARCHIVE"

if ! [ -e "$ARCHIVE" ] ; then
	if   exists curl  ; then curl -O "$URL"
	elif exists wget  ; then wget    "$URL"
	elif exists fetch ; then fetch   "$URL"
	fi
fi

TMPDIR=`mktemp -d`
trap 'rm -rf "$TMPDIR"' EXIT INT QUIT TERM

cabextract -L -F ppviewer.cab -d "$TMPDIR" "$ARCHIVE"

cabextract -L -F '*.TT[FC]' -d ~/.fonts "$TMPDIR/ppviewer.cab"

( cd ~/.fonts && mv cambria.ttc cambria.ttf && chmod 600 \
	calibri{,b,i,z}.ttf cambria{,b,i,z}.ttf candara{,b,i,z}.ttf \
	consola{,b,i,z}.ttf constan{,b,i,z}.ttf corbel{,b,i,z}.ttf )

fc-cache -fv ~/.fonts


그리고 


$ chmod a+x ./vista-fonts-installer.sh 




를 해주고 자신의 $HOME 에서 임시 폰트가 저장될 위치를 만들어 줍니다. 


$mkdir ~/.fonts




그리고 파일 다운로드를 위해서 curl 이라는 명령을 설치해줘야 합니다. 


$sudo apt-get install curl 




그리고 마지막으로 위에서 만들어준 스크립트를 실행시켜 줍니다. 


$ ./vista-fonts-installer.sh



만약 에러가 발생한다면 다음 명령을 수동으로 한번 실행해줍니다.

fc-cache -fv ~/.fonts




이상입니다. 이렇게 하면 아주 간단하게 폰트가 설치됩니다. 




콘솔라스(Consolas)는 영문 전용 폰트기 때문에 한글을 표시할 때 시스템이 기본으로 선택한 바탕체를 연결합니다. 이 기본으로 나오는 바탕체를 '맑은 고딕'체로 바꾸는 작업에 관한 글 입니다. 

예전 콘솔라스(Consoals) 관련 포스트 


1. Regedit 실행합니다.
 - '윈도'키를 누르고 '실행(XP)' 이나 '검색 (Win7)' 에 'Regedit' 입력합니다. 

2. Registry 에서 다음과 같은 위치를 찾습니다. 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]

3. "다중 문자열 값'을 하나 생성하고 그 키값으로 "Consolas" 라고 입력합니다. 
 - 기존에 만들어져 있는 값들을 참조하시면 됩니다. 

4. 입력해야 할 내용으로 

malgun.ttf,Malgun Gothic
gulim.ttc,gulim
MSGOTHIC.TTC,MS UI Gothic
SimSun.TTC,SimSun
mingliu.ttc,PMingLiU



 콘솔라스가 영문이기 때문에 한글폰트가 없어서 한글이 표시될 때 '바탕체'로 표시되는 것이 이 작업 후에는 '맑은 고딕'체로 바꿔서 나오게 됩니다. 



크롬에서 보이는 글들을 '맑은 고딕'과  고정폭은 'Consolas' 를 이용해서 웹 컨텐츠의 가독성을 높이며, 이뻐보이는 화면으로 인한 만족감을 높이는 방법입니다. 

먼저 폰트를 받아야 하겠지요? (Windows7 을 사용하는 분은 이 부분 패스)


맑은 고딕 폰트는 윈도즈 XP 정식 사용자여야만 합니다. 정품 인증을 하기 때문이지요. 정품이 아니시라면 구글에서 '맑은 고딕 다운로드 (클릭)' 로 검색하시면 받을 수 있는 사이트가 주르륵 뜹니다. (어둠의 세상 만세!!)

1. 크롬에서 그림에 보이는 연장 아이콘을 클릭합니다. 



2. 옵션 을 클릭합니다. 


3. 고급 설정 탭을 클릭합니다. 


4. '글꼴 및 언어 설정 변경'을 클릭합니다. 


5. 아래 그림과 같이 글자 폰트를 선택해 줍니다. 



이제 훨씬 부드러워진 웹 서핑이 가능해 집니다. 물론 위 두개의 폰트를 제대로 이용할려면  

'바탕화면에서 오른쪽 클릭' - '속성' - '화면 배색' - '효과' - '화면 글꼴의 가장자리를 다듬는 방법' 에서 ClearType 을 선택해 줘야 합니다. 





뒤에 희미하게 보이는 '설표'의 윤곽이 있습니다. 

에디터는 Aquamacs 씁니다. 폰트 크기는 17pt 이고 Anti-Aliasing 은 줬습니다. 안 주면 너무 빈한해 보이더군요. 




코딩에 좋다는 10가지 폰트를 다 써봤지만 개인적으로는 Consolas 를 추천합니다. 그 미묘하게 휘어지는 곡선의 느낌이 참 좋습니다. -ㅅ-... 



일단 폰트 모습입니다. 프로그래밍 하루 이틀 해온 것도 아니고, 앞으로도 수도 없이 할 것 같은데요. 기분 좋게 생긴 폰트를 가지고 작업을 하면 여러모로 기분이 좋습니다. 

OSX 에서 Monaco 폰트를 썼는데 이 폰트 알게 된 후로 전부 다 수정하고 있습니다. 단 단점이라면 우분투를 버추얼 박스(VitualBox)에서 돌리고 있는데 거기서 기본 폰트로 쓰기에는 크기가 안 맞더군요. 17 pt 까지 크기를 키워야지만 이쁘게 보입니다. ClearType 폰트는 하드웨어 가속이 되야지만 작을 때 이쁘게 보이는 건갈까요? 


이거 저거 직접 타이핑 하면서 폰트 모습을 볼 수 있게 해주는 사이트 입니다. 위의 그림도 거기서 타이핑해서 캡쳐했습니다. 






+ Recent posts