emacs 한글 폰트 줄간격 문제

kiwon의 이미지

안녕하세요.

구글 emacs help 그룹에 올렸던 내용인데, 어쩌면 여기에서 답변을 찾을 수 있다고 생각해서 이렇게 글을 올립니다.
이맥스에서 보통 한국인이 고정폭 글꼴을 쓴다고 하면, 알파벳 두 글자에 한글 한 글자가 정확하게 일치하는 글꼴이라고 할 수 있겠죠. 다른 경우도 있겠지만 아무래도 이게 가장 이상적으로 보이니까요.

보통 emacs에서 맘에드는 한글폰트와 영문폰트를 fontset으로 결합해서 쓰는데, 이 경우 위와 같이 글자의 폭을 맞추기 위해 사이즈를 조절합니다.
저 같은 경우, emacs cvs 버전에서 terminus와 구슬체를 결합하는데 아래와 같이 결합해서 사용합니다.

(set-face-font 'default "-xos4-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*")
(set-face-font 'default (font-spec :family "terminus" :size 12.0))
(set-fontset-font nil 'korean-ksc5601 (font-spec :family "구슬" :registry "unicode-bmp" :lang "ko" :size 12.0)))

위 코드 중 첫번째 라인은 원칙적으로는 필요없어야 하지만, 이유를 모르게도 넣어줘야 한글 폰트가 제대로 적용되더군요.

아무튼, 이렇게 한글폰트와 영문폰트의 가로폭을 앞서 언급한 것과 같이 맞추었습니다. (다행이도 구슬체와 terminus체는 둘다 12.0사이즈로 셋팅하면 가로폭이 맞더군요. floating 값을 쓰지 않을 경우는 terminus를 14, 구슬체를 16으로 맞추어야 합니다.)

그런데 세로폭이 문제입니다. 영문으로만 이루어진 라인 사이의 간격과, 영문+한글로 이루어진 라인 사이의 간격이 일정치 않게 됩니다. 아무래도 emacs에서 기본 렌더링 폰트 높이를 default 폰트셋에 맞추는 것 같은데, 한글폰트의 폰트 높이가 더 높은 경우 해당 라인에만 높이가 맞춰지는 것 같더군요. 파일을 첨부합니다. 보시면 딱 눈에 들어옵니다.

이 문제를 어떻게 해야 해결할 수 있을까요?

File attachments: 
첨부파일 크기
Image icon fontonemacs.png1.21 KB
bh의 이미지

기원님이 좋아하시는 글꼴을 가지고서는 정확한 답변을 드릴 수 없습니다..
전... 그냥 이것저것 만져보고 아!!! 하고 탄성 한발 나오면.. 그걸 그냥 씁니다..
글꼴이 모니터에 뿌려지는 원리는 안드로메다로 보내거나.. /dev/null 로 버리고서..

하여간 제가 쓰는 환경입니다.. 참조만 하심이..
(세로줄 간격 문제는 깔끔하다고 생각되어 스샷으로 찍어봤씁니다..)

;;; ~/.emacs (GNOME 데스크탑)
;;; 글꼴, 문자셋 설정
(set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("UnTaza" . "unicode-bmp"))
(set-language-environment "Korean")
(set-coding-priority '(coding-category-utf-8))
(setq locale-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
;;; 출처: EmacsWiki
댓글 첨부 파일: 
첨부파일 크기
Image icon Emacs23-Font-En+Ko-Example.png102.73 KB

--
이 아이디는 이제 쓰이지 않습니다.

kiwon의 이미지

사용하시는 은글꼴 계열 역시 동일 사이즈 셋팅시 세로높이가 terminus 폰트보다 미묘하게 조금 더 높네요.

사실 세로줄만 맞추려면 선택의 폭이 넓습니다. 하지만 문제는 가로폭이 일치하도록 만드는 것인데요.
가령 org mode에서 텍스트 기반으로 작성되는 표를 생각해 보면 왜 이 가로폭 문제가 중요한지 알 수 있습니다.

이맥스 내부에서 어떤 매커니즘으로 폰트를 렌더링하는지는 파악이 안 되지만,
제가 좋아하는 폰트로 조합했을 때의 문제를 해결하기 위해서였다기 보다는, 이맥스 자체의 강점이라고 할 수 있는 폰트셋 조합 기능이 이런 미묘한 문제를 안고 있다는 것을 제기한 것이고, 혹시 근본적인 해결책이 있는가를 타 유저에게 알아보고자 한 것입니다. 생각보다 고수분들이 많으니까요. :)

아무튼 답변 감사드리구요. 또 다른 고수님이 나타나 주시길 희망합니다. ;)

bh의 이미지

===>

Quote:
사용하시는 은글꼴 계열 역시 동일 사이즈 셋팅시 세로높이가 terminus 폰트보다 미묘하게 조금 더 높네요.

사실 세로줄만 맞추려면 선택의 폭이 넓습니다. 하지만 문제는 가로폭이 일치하도록 만드는 것인데요.
가령 org mode에서 텍스트 기반으로 작성되는 표를 생각해 보면 왜 이 가로폭 문제가 중요한지 알 수 있습니다.

이맥스 내부에서 어떤 매커니즘으로 폰트를 렌더링하는지는 파악이 안 되지만,
제가 좋아하는 폰트로 조합했을 때의 문제를 해결하기 위해서였다기 보다는, 이맥스 자체의 강점이라고 할 수 있는 폰트셋 조합 기능이 이런 미묘한 문제를 안고 있다는 것을 제기한 것이고, 혹시 근본적인 해결책이 있는가를 타 유저에게 알아보고자 한 것입니다. 생각보다 고수분들이 많으니까요. :)


<===

emacs-devel@gnu.org 쪽으로 Follow-Up 해보심이..

http://dir.gmane.org/gmane.emacs.devel

;;포스팅을 위하여.. 리스트 가입을 먼저 하셔야 합니다

--
이 아이디는 이제 쓰이지 않습니다.

kiwon의 이미지

포스팅을 하면서, 이 문제는 한국 emacs 유저분들께는 꽤 고전적인 폰트 관련 문제일 것이라고 생각했는데... 다들 알파벳도 잘 포함된 나눔고딕코딩글꼴같은 국+영 토탈 폰트 디자인 패키지를 쓰시나요? 그 폰트 역시 좋긴하지만, 전 왠지 slashed-zero가 좋아서 ㅋㅋㅋ

사실 개발만 한다면 한글주석을 별로 달지 않는 상황이라 한글폰트는 그렇게 고려하지 않아도 될 듯한데 역시 이맥스는 개발만 하기에는 아까운 좋은 모드가 많죠... :)

아무튼 조속히 답변이 오기를 기다립니다. 쓸만한 답변이 오면 여기에 또 포스팅 하겠습니다. :)

lazycoder의 이미지

방금 gnus로 접속해서 emacs쪽 그룹을 보는데 bh님 글들이 우수수... ㅎㅎ
좋은 정보 있으면 공유 부탁드립니다. ;;

oppor의 이미지

글꼴 조합으로 맞추기는 상당히 어려울 것 같고

나눔고딕 코딩을 사용하는게 가장 적절할 듯 보이네요.
(단순히 가로폭과 세로폭을 맞출려면)

영문과 한글이 모두 들어가 있고 크기도 적절히 맞춰져 있으니까요.

그런데 GUI환경에서 이렇게 하면 이맥스가 처음 실행될때 창의 가로폭이 확 늘어나 버리더군요. 이건 또 다른 문제죠.
물론 개념치 않고 사용하면 별 문제가 아닐 수도 있습니다.

only2sea의 이미지

저 역시 괴롭히고 있는 문제입니다. ㅜㅜ 아마 많은 분들이 괴로워하고 계실 거라고 생각하는데, 괴롭다고 하시는 분은 많지 않고... 그래서 해결 방안도 많이 돌아다니지 않고 있는 문제인 것 같습니다.

Org-mode 표에서 줄... 네.. 그게 가장 큽니다. 가로폭이 안 맞으면 한글 문서 작성 못 하죠.

한글-영문 글꼴을 무단으로 합쳐서 하나의 글꼴로 만드시는 분도 봤구요.

저는 아직 해결 못하고 쓰고 있습니다.

블로그: http://turtleforward.blogspot.com

hermian의 이미지

org mode의 table은 정말 안습입니다.
그나마 나눔고딕코딩을 쓰고 있긴 합니다만...(EmacsW32)
guru가 나타나셔서 이렇게 하라고 가르켜 주심 얼마나 좋을까요.

kiwon의 이미지

역시 저만의 문제가 아니었군요. 가로폭을 맞추면 세로폭이 문제고.. 세로폭을 해결하면 가로폭이 문제고... 미묘하네요.
emacs-dev 에 포스팅했는데, 어떤 중국 친구가 자기도 같은 문제를 겪고 있다고 메일오고...
흠... 먼가 같은 문제를 느끼고 있는 사람들이 많은 것 같으니... 기다려 봐야겠습니다. ;)

bh의 이미지

적잖은 분들이 org 모드에서 곤란을 겪고 있나보네요..
언젠가 날 잡아서.. org 모드 테스트 해볼렵니다.. ;;

Emacs Rules!

--
이 아이디는 이제 쓰이지 않습니다.

madman93의 이미지

한글을 안 쓰면 됩니다. 얼머나 좋습니까?
영어로 표현하는 것도 배우고 ^.^
한참 영어로 쓰다보면 말도 안되는 영어도 나오긴 합니다만!!

---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

xenzo의 이미지

이노무 org-mode....ㅡㅡ;;

익명 사용자의 이미지

이노무 org-mode....ㅡㅡ;;

익명 사용자의 이미지

아직도 답이 없는건가요?ㅎ

익명 사용자의 이미지

골때립니다 이거 ㅜㅜ

익명 사용자의 이미지

그냥 원하는 문자들을 모아서 폰트 파일을 새로 만드세요.

익명 사용자의 이미지

그냥 원하는 문자들을 모아서 폰트 파일을 새로 만드세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.