엿보기 2012/09/20 17:43
지난 시간에 이어서 폰트에 대해서 더 깊이 들어가 볼까 합니다. 지난 시간에는 일반적인 폰트에 대해서 알아보았다면 이번 시간에는 프로그래머를 위한 폰트에 대해서 알아보겠습니다.
프로그래머에게 폰트란 어떠한 의미가 있을까요? 프로그래밍이란 그 자체게 바로 문자열을 다루는 일입니다. 문자열을 적재 적소에 잘 배치한 것이 프로그램입니다. 물론 그 잘~ 배치하는 것이 쉬운 일은 아니죠. ^^;;
개발자로 살아가다 보면 남이 만들어 놓은 소스코드를 참조할 때가 많습니다. 좀 더 직설적으로 말해보자면 정말 많이 참조합니다. 하지만 항상 남의 것만을 참조하는 것은 아닙니다. 자신이 만들었다고 하더라도 불과 몇 개월만 지나면 열심히 보고 또 봐야 합니다.
즉, 모니터에 표시되는 많은 문자열을 읽고 또 읽습니다. 특히 프로그래머는 영어와 숫자를 많이 다루기에 영문 폰트로 이루어진 문자열을 효율적으로 읽어내야 합니다.
lll 숫자 1이냐 알파벳 소문자 L이냐 아니면 대문자 I냐
다음의 예를 보실까요?
위에는 2개의 문자열이 있는데 위의 것은 한국인의 대국민 폰트 “굴림” 폰트이고 아래의 것은 Windows 에 내장된 “Verdana” 폰트입니다. 큰 차이가 없다구요? 그럼 다음의 것을 보시죠.
왼쪽의 문장은 굴림으로 작성되었고 우측의 문장은 Verdana로 작성되었습니다. “굴림”은 소문자 ‘엘(l)’과 대문자 ‘아이(I)’ 를 구별해내지 않습니다. 프로그래밍을 하게 되면 대문자와 소문자가를 정확히 구별해서 사용하게 되며 이 둘을 구별하는 것은 매우 중요합니다. 따라서 “굴림”은 이제 프로그래밍 할 때는 적합하지 않으니 당장 다른 것으로 바꾸라고 권해드리고 싶습니다.
프로그래머용 폰트를 논할 때 예제로 많이 사용되는 문자열입니다.
위의 문자열은
숫자 ‘일’, 알파벳 소문자 ‘엘’, 알파벳 대문자 ‘아이’, 특수문자 ‘버티컬 바’ 또는 ‘파이프라인’ 숫자 ‘영’, 알파벳 대문자 ‘오’가 순서대로 기록되어 있습니다.
다음은 위에서 프로그래밍을 할 때 사용하지 않길 권해드렸던 굴림으로 다시 적어 본 결과입니다.프로그래밍에서는 파이프라인 | 과 숫자 0 을 자주 사용하게 되는데 마찬가지로 비슷하게 보이는 것이 존재하는 문제가 있습니다.
한 가지 재미있는 점은 숫자 영(0) 과 알파벳 오(O) 는 오타가 날 경우 쉽게 찾아내지 못할 정도로 가까운 곳에 붙어 있으며 알파벳 아이(I)와 엘(L) 역시 마찬가지 입니다.
폰트에 대한 글을 쓰다 보니 너무 세부적인 부분에 주목을 한 것 같습니다. 사실 폰트가 잘못 되었다고 가독성이 많이 떨어지지거나 오타가 나는 것은 아니겠지요. 사람이 읽을 때는 적절히 구별하여 이해하겠지요. 다행히도 요즈음의 IDE(통합 개발 환경) 소프트웨어는 매우 잘 만들어져 있어 이러한 폰트에 의한 코드의 헛갈림은 그 글자 자체의 가독성 보다는 실시간 컴파일 오류 등을 통한 다른 방법으로 쉽게 파악되는 편입니다.
프로그래머의 폰트 알아보기
필자가 폰트에 대해서 관심을 갖기 시작한 것은 jEdit 이라는 java 기반 텍스트 에디터의 스크린샷을 보면서 시작되었습니다. 그 이전에도 폰트에 대한 관심이 없는 것은 아니였습니다만 그야말로 리포트를 작성할 때 굵은 모양으로 제목을 멋드러지게 표현하기 위한 꾸미기 용 폰트들이었습니다. 가독성을 위한 폰트는 따로 있었습니다.
jEdit 텍스트 에디터의 스크린샷
위의 스크린샷을 보자마자 저는 영문 폰트에 대해서 알아봐야겠다고 생각했습니다. 폰트가 너무 마음에 들었지만 어떤 폰트인지 알아내는 것은 쉬운 과정은 아니였습니다. Windows의 영문 폰트를 바꾸어가며 수십번 비슷한 폰트를 찾았습니다. 하지만 설치되지 않은 폰트가 발견될 리가 없죠. ^^;;
스크린샷을 찍은 외국 개발자에게 메일을 보냈는데 한달 후에야 스팸메일함에서 우연히 발견했다며 답장이 왔습니다. 요즘에는 폰트를 좀 더 쉽게 찾을 수 있는 방법도 있습니다.
폰트가 사용된 스크린샷을 업로드 하면 폰트 이름을 알아낼 수 있다.
http://www.myfonts.com/WhatTheFont/
이전 시간에도 알아보았다시피 영문 폰트인 경우 한글 폰트에 비해서 만들기가 쉽기 때문에 그 결과 영문 폰트는 정말 많은 폰트가 존재합니다. 제가 하나의 스크린샷 속에서 반해버린 프로그래머용 폰트는 BitStream Vera Sans Mono 라는 이름을 갖고 있습니다. 비트스트림 베라 산스 모노.. 뭐 이리 이름이 긴가요?
한단어 한단어에 의미가 있습니다. BitStream 이라는 회사의 Vera라는 글꼴을 Sans Mono 형태로 만든 것입니다. 우리나라도 폰트에 회사 이름이 들어가는 경우가 많습니다. 산돌광수, 은글꼴, 한양서체, 한컴바탕 등이 그 예입니다.
Serif & Sans-Serif
세리프, 산 세리프 라고 들어보셨습니까? 여기서 Serif(세리프) 란 가는 장식 선을 말합니다. 폰트에서 글자를 이루는 선의 일부 끝이 돌출된 형태를 가지고 있으면 세리프 글씨라고 합니다. 여기서 Sans 는 ‘없음’ 을 뜻하는 프랑스 말로 Sans-Serif 는 돌출이 없는 것을 말합니다.
http://ko.wikipedia.org/wiki/세리프
한글 폰트로는 바탕체가 세리프, 굴림이나 돋움체는 산세리프라고 할 수 있습니다.
Mono
혹시 폰트에 ‘굴림’ 과 ‘굴림체’ 가 따로 있다는 사실을 알고 계십니까? 이와 같은 패턴으로 ‘돋움’과 ‘돋움체’ ‘바탕’ 과 ‘바탕체’ 가 있습니다. 여기서 ‘체’ 란 Mono를 뜻합니다. 즉, 굴림체, 돋움체, 바탕체는 Mono font입니다.
windows의 폰트 선택 상자 굴림과 굴림체 궁서와 궁서체
Mono는 Monospaced의 준말로 글자 하나하나의 장평이 같다는 뜻입니다.
굴림과 굴림체로 작성한 apple
좌측의 ‘굴림’ 폰트로 표현된 다음의 단어에서 알파벳 엘(l) 만 유달리 장평이 짧습니다. 우측은 ‘굴림체’ 폰트로 작성되었으며 전체적으로 장평이 균일(MonoSpaced)합니다.
일반 폰트와 MonoSpaced 폰트를 사용 할 때의 차이
Mono font 와 Ascii Art
여담입니다. 균일한 장평 즉, Monospaced 폰트만이 할 수 있는 것이 있답니다. PC통신 시절과 인터넷 초창기 그리고 요즈음의 인터넷 댓글에서 가끔 등장하는 Ascii Art입니다.
Ascii Art
이러한 폰트를 이용한 Ascii Art는 고정폭의 폰트일 경우에만 제대로 표현됩니다. 콜론(:)을 이용해서 공백을 채우는 Art를 만들어 보면 “굴림체” 폰트로는 왼쪽과 같이 SK C&C 가 제대로 표현되는데 반해 우측의 “굴림” 폰트로는 콜론 (:)폰트의 장평이 짧아 그만큼 우측의 문자열 들이 좌측으로 당겨져 표시됩니다.
Ascii Art Generator http://www.squidoo.com/online-ascii-art-generator
프로그래머 폰트의 요건
BitStream Vera Sans Mono 는 프로그래머 폰트 인기 순위중에 꽤 상위권에 랭크되어 있는 폰트입니다. 폰트는 사람마다의 취향이 있기 때문에 어떤 것이 최고다 라고 말할 수는 없습니다.
프로그래머의 폰트라면 다음의 몇가지 조건을 갖추어야 합니다.
1lI| 일, 엘, 아이, 파이프라인이 구별되어야 한다.
0O 영과 대문자 오가 구별되어야 한다.
Fixed Width / Monospaced 여야 한다.
이 외에 몇가지 추가 고려 사항이 있습니다.
Bold, Italic 체가 지원되어야 한다. (에디터에서 함수명이나 커멘트를 꾸며 줄 때)
,. 쉼표와 마침표가 확실하게 구별되어야 한다. (콜론과 세미콜론도 마찬가지!)
한글 폰트도 적당히 괜찮아야 한다.
Anti Alias / ClearType 이 지원되어야 한다.
BitMap 보다는 TrueType으로 제작되어 글꼴 크기를 변환할 수 있어야 한다.
이러한 것을 지원하는 폰트의 종류가 많고 각자의 취향이 다르기 때문에 다음의 사이트에서 몇가지 폰트를 사용해 보기를 권해드립니다.
다음의 사이트는 몇 가지 유명한 프로그래머용 폰트를 순위로 나열하여 보여줍니다. 주변 개발자분들은 Monaco, Anonymous, Bitstream Vera Sans Mono 3가지 정도를 주로 사용합니다.
해당 홈페이지에서 자세한 폰트 설명과 샘플을 볼 수 있습니다. 몇몇 폰트는 유료 일 수도 있습니다.
폰트에 대한 상세한 설명과 스크린 샷을 볼 수 있다.
한글도 생각해보자.
대부분의 외산 폰트는 알파벳과 숫자 특수문자는 수려하고 프로그래밍 폰트로 적합하지만 아쉽게도 한글은 어떻게 표현할지에 대해서는 고려하지 않았습니다. 운영체제에서는 특정 영문 폰트를 선택하였는데 한글을 입력되면 운영체제 기본 폰트를 사용하게 됩니다. Windows XP의 경우 “굴림” 이며 Vista, 7 이후에는 맑은 고딕이 표현되게 됩니다.
아직 Windows XP를 사용하는 분들이라면 아쉽게도 영문 프로그래밍 폰트로 좋은 것을 선택했다 하더라도 한글에서는 굴림 폰트를 사용하게 되는 불상사(?)가 발생할 수 있습니다.
한글 전용의 프로그래밍 폰트는 거의 전무 하다시피 한 현실이지만 이러한 목마름에 네이버에서는 나눔고딕 코딩글꼴을 무료로 배포하였습니다.
http://dev.naver.com/projects/nanumfont/
프로그래밍을 하는 과정에서 한글은 보통 주석을 작성할 때만 사용됩니다. 따라서 한글을 구지 프로그래머용 폰트의 조건을 따져서 선택할 필요는 없습니다.
폰트의 선정에 있어 좋은 방법은 프로그래머용 영문 폰트와 그냥 마음에 드는 한글 폰트를 선택하여 폰트 프로그램을 이용해서 하나로 합치는 방법입니다. 또한 합치는 과정이 힘들다면 이미 합쳐져 있는 폰트를 인터넷에서 검색해 볼 수도 있습니다.
마음에 드시는 영문과 한글 폰트의 이름을 동시에 검색해 보세요. 누군가 이미 2개의 멋진 폰트를 합쳐 놓았을 수도 있습니다.
그런데 맑은 고딕이 마음에 든다고 이것과 어떠한 영문 폰트랑 조합을 하려고 하신다면 생각해 보셔야 할 것이 있습니다. 맑은 고딕은 MS 운영체제에 포함된 글꼴로 함부로 재배포 해서는 안 되는 상용 글꼴입니다. 또한 영문 폰트도 마찬가지로 나름대로의 라이선스가 있을 것입니다. 따라서 폰트의 라이선스를 잘 확인하시어 자신만의 프로그래머용 폰트를 선택하시길 바랍니다.
결론
프로그래밍을 할 때 자신이 선호하는 폰트 하나 정도는 갖고 다니세요. 이메일이나 dropbox 등에보관하는 것도 좋은 방법입니다. 어떠한 에디터로 문서를 열게 되던지 비슷한 수준의 가독성을 갖게 될 것입니다.