집에서는 Windows Vista를 사용하기 때문에, 터미널 작업을 할 때는 보통 PuTTY를 사용한다.
Lucida Console이나 Consolas 폰트 (Consolas Font Pack)를 좋아하기 때문에, PuTTY에서도 보통 Lucida Console이나 Consolas로 설정해서 사용하는데, 문제는 한글이 나오지 않는 것이었다. 그래서, 간혹 한글을 봐야 할 때는 그 때 그 때 다른 폰트로 변경하면서 사용해 왔다.
문제는 일반적으로 영문 폰트에는 한글 문자 영역에 대한 폰트가 들어 있지 않다는 것이다. 일문 영역도 얘기는 마찬가지다. 물론, 폰트마다 문자 영역의 커버리지는 다르다. 굴림체 등에는 한글 뿐만 아니라 히라가나, 가타가나 등이 들어 있기도 하다. (일문에서 사용하는 한자 영역이 들어가 있지는 않다.)
Font Fallback과 Font Linking
Windows에서는 이러한 문제를 해결하기 위해서, Font Fallback과 Font Linking이라는 개념을 사용한다. 이러한 기능은 Uniscribe라고 불리는, Unicode 영역의 문자들을 표시하는 방법을 제공하기 위한 목적으로, Windows 2000 이후로 지원하기 시작한 Windows의 기능 중 하나다.
Font Fallback은 어떤 폰트를 사용할 때, 폰트가 커버하는 영역에 해당하지 않는 문자가 있을 때, 언어별로 지정된 fallback font (일반적으로 Miscrosoft Sans Serif)에 해당하는 폰트를 이용해서 표시하는 기능이다.
Font Linking은 언어별로 지정된 하나의 fallback font가 아니라 여러 fallback 폰트를 폰트 별로 지정할 수 있는 기능이다. 폰트 별로 지정할 수 있으므로 그 폰트에 가장 어울리는 fallback 폰트를 지정할 수 있고, 여러 fallback 폰트를 지정할 수 있으므로, 여러 언어로 폰트의 커버리지를 확장할 수 있다. 이를테면 영문 폰트에 한글 폰트와 일문 폰트를 지정해서, 영문, 한글, 일문을 모두 표시할 수 있는 식이다.
Font Linking을 설정하기 위해서는 직접 레지스트리를 수정해야 한다. HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionFontLinkSystemLink에 폰트 이름에 해당하는 다중 문자열 (Multi-String) 키를 추가하고, <링크할 폰트 파일 이름>, <링크할 폰트 이름>의 형식으로 적는 방식이다.
Font Linking Bug in PuTTY 0.58
문제는 PuTTY는 Font Linking을 지원하지 않는 것 같다는 것이었다. 위와 같이 Font Linking을 설정해도 PuTTY에서는 제대로 표시해 주지 않았다.
굴림체로는 한글과 히라가나가 잘 표시되지만, Consolas로는 Font Linking을 설정하더라도 제대로 표시가 되지 않았다. (Terminal, 굴림체, MS Gothic, Consolas)
굴림체를 사용한 경우,
Consolas를 사용한 경우,
이 문제를 조사할 당시, PuTTY의 한글 표시 문제가 Font Linking으로 해결되지 않는다면, Consolas에서 한글을 보기 위해서는, FontCreator 등의 상용 도구를 이용해서 영문 폰트와 한글 폰트를 조합해서 물리적으로 하나의 폰트로 만드는 방법 밖에는 없다는 것이 나의 결론이었다. 그러고 나서 한동안 포기하고 있었는데, 우연히 PuTTY의 Change Log를 보다가 다음과 같은 항목을 보게 되었다.
Bug fix: font linking (the automatic use of other fonts on the system to provide Unicode characters not present in the selected one) should now work again on Windows, after being broken in 0.58. (However, it unfortunately still won’t work for Arabic and other right-to-left text.)
즉, 이것이 0.58의 버그였고, 0.60에서는 다시 Font Fallback과 Font Linking이 지원된다는 것이었다. (버그에 대한 자세한 사항은 PuTTY bug win-font-linking 페이지에서 볼 수 있다.) 실제로 0.57이나 0.60으로 테스트해 본 결과 잘 동작하는 것을 볼 수 있었다. (Terminal, 굴림체, MS Gothic, Consolas, Consolas with Font Linking)
Font Linking 없이 Consolas를 사용한 경우 (Font Fallback),
맑은 고딕, Meiryo 폰트로 Font Linking을 설정하고 Consolas를 사용한 경우 (Font Linking),
Closing
보통 자주 호소하는 폰트 문제는 다음의 두 가지다.
- A 영문 폰트를 사용하고 싶은데, 한글은 B 한글 폰트로 나오게 하고 싶어요.
- 한글은 잘 나오는데, 일문 한자들이 제대로 안 나와요.
이 글을 여기까지 집중해서 읽은 사람이라면, 위에서 설명한 것과 같이, Font Linking을 설정해서 자신이 원하는 영문, 한글, 일문 폰트를 조합해서 사용할 수 있음을 이해할 수 있을 것이다.
이제, 문제는 터미널에서 사용할 만한 예쁜 한글 폰트가 부족한 점이다. :)
dPuTTY도 참고하세요~
아, 퍼키 님에게 언뜻 들었는데, 그런 게 있었네요. ^^