코딩 폰트 방황기, JetBrains Mono에 한글이 붙었다

마음에 드는 코딩 폰트가 없었다
개발 환경을 세팅할 때 의외로 오래 붙잡고 있게 되는 게 폰트다. 하루 종일 들여다보는 화면인데, 글자가 마음에 안 들면 계속 거슬린다. 그래서 새 장비를 만질 때마다 "이번엔 폰트를 제대로 골라보자" 하고 마음을 먹는다.
그런데 막상 고르려고 하면 적당한 게 없다. 영문 코딩 폰트는 좋은 게 많다. 문제는 한글이다. 코드 안에 한글 주석이나 문자열이 섞이는 순간, 영문 폰트들은 한글을 시스템 기본 폰트로 떨어뜨려 버린다. 영문은 예쁜데 한글만 어색하게 붕 떠 있는, 그 미묘하게 어긋난 조합이 싫었다.
D2Coding도 어딘가 아쉬웠다
한글 코딩 폰트 하면 보통 D2Coding을 떠올린다. 네이버가 만들었고, 한글과 영문 폭이 깔끔하게 맞아떨어지는, 사실상 국내 표준에 가까운 폰트다.
좋은 폰트다. 그런데 나한테는 어딘가 아쉬웠다. 오래 쓰다 보니 영문 글자 모양이 썩 취향이 아니었고, 요즘 영문 코딩 폰트들이 보여주는 세련된 느낌과는 조금 거리가 있었다. 나쁘진 않은데, "이거다" 싶은 폰트는 아니었다. 그렇게 D2Coding을 썼다 지웠다 하면서 계속 다른 걸 기웃거렸다.
내가 가장 마음에 들어 했던 영문 폰트는 JetBrains Mono였다. 글자 모양이 또렷하고, 합자(ligature) 처리도 깔끔하고, 오래 봐도 눈이 편하다. 문제는 단 하나, 한글이 없다는 것이다. JetBrains Mono로 코드를 쓰다가 한글 주석을 만나면 거기서 폰트가 끊긴다.
영문은 JetBrains Mono, 한글은 다른 폰트. 이걸 에디터에서 폰트 폴백으로 어찌어찌 맞춰볼 수도 있지만, 폭이 안 맞아서 정렬이 틀어지거나 두 폰트의 굵기·높이가 따로 노는 경우가 많다. 결국 또 타협이다.
JetBrains Mono에 한글을 붙인 사람이 있었다
그러다 JetBrainsMonoHangul이라는 프로젝트를 발견했다. 이름 그대로다. JetBrains Mono의 영문 글리프에 한글을 합쳐 놓은 폰트다. 내가 원하던 바로 그것이었다.
영문은 내가 좋아하는 JetBrains Mono 그대로고, 한글은 폭과 높이를 맞춰 자연스럽게 붙어 있다. 코드 안에서 영문과 한글이 같은 리듬으로 흘러간다. 한글 주석을 써도 폰트가 끊기지 않는다.
게다가 반가웠던 건 Nerd Font 버전까지 릴리스되어 있다는 점이다. Nerd Font는 폰트에 개발용 아이콘(파일 타입, git 브랜치, 각종 심볼)을 끼워 넣은 변형인데, 터미널 프롬프트나 Neovim 같은 환경을 꾸밀 때 거의 필수다. 보통 마음에 드는 한글 폰트를 찾으면 Nerd Font 버전이 없어서 또 포기하게 되는데, 이건 처음부터 같이 제공된다.
릴리스에는 용도별로 세 가지 변형이 있다.
| 변형 | 특징 |
|------|------|
| NerdFont | 아이콘이 가변폭 |
| NerdFontMono | 아이콘까지 고정폭 — 터미널에 적합 |
| NerdFontPropo | 가변폭(proportional) |
macOS에 설치하기
빌드 가이드가 Linux 기준이라 처음엔 직접 빌드해야 하나 싶었는데, 그럴 필요 없다. 릴리스에 이미 빌드된 .ttf/.ttc 파일이 올라와 있고, 표준 폰트라서 macOS에서 그대로 설치된다.
Releases에서 터미널/코딩용으로 가장 무난한 JetBrainsMonoHangulNerdFontMono zip을 받아 압축을 풀면, Thin부터 ExtraBold까지 모든 굵기의 .ttf가 들어 있다. 이걸 사용자 폰트 폴더에 복사하면 끝이다.
# 다운로드 후 압축을 푼 폴더에서
cp *.ttf ~/Library/Fonts/설치하고 나면 시스템에 등록되는 패밀리 이름이 .ttf 파일명과는 조금 다르다. 실제로 에디터나 터미널 설정에 넣을 이름은 JetBrainsMonoHangul NFM 이다 (NFM = Nerd Font Mono). 이걸 모르면 설정에서 폰트가 안 잡혀서 한참 헤맬 수 있다.
# 등록된 이름 확인
system_profiler SPFontsDataType | grep -i "hangul"VS Code라면 이렇게 넣으면 된다.
"editor.fontFamily": "JetBrainsMonoHangul NFM",
"terminal.integrated.fontFamily": "JetBrainsMonoHangul NFM"이미 실행 중인 에디터나 터미널은 재시작해야 새 폰트가 목록에 나타난다.
폰트 하나 바꿨을 뿐인데
설정을 마치고 코드를 띄워봤다. 영문은 그대로 JetBrains Mono의 또렷함이고, 한글 주석이 같은 결로 자연스럽게 이어진다. 그동안 영문 따로 한글 따로 놀던 화면을 보며 무의식적으로 느끼던 거슬림이 사라졌다. 폰트 하나 바꿨을 뿐인데 화면이 한결 정돈된 느낌이다.
별것 아닌 것 같지만, 매일 몇 시간씩 보는 화면이다. 그 화면이 조금 더 마음에 들면, 그만큼 일하는 기분도 나아진다. 코딩 폰트를 두고 오래 방황한 보람이 이런 데 있다.
누군가는 "JetBrains Mono를 좋아하는데 한글이 아쉽다"는 똑같은 결핍을 느끼고, 그걸 직접 메워서 공개해 두었다. 덕분에 나는 그 결과물을 받아 쓰기만 하면 됐다. 오픈소스의 가장 고마운 순간은 늘 이런 식이다. 내가 겪던 불편을 누군가 먼저 겪고, 먼저 해결해 둔 것. JetBrains Mono를 쓰는 한국어 사용자라면, 한 번쯤 써볼 만하다.