나의 프로그래밍 폰트 사용 일대기

나의 프로그래밍 폰트 사용 일대기
Photo by Jeroen den Otter / Unsplash

시작은 2003년 이제 막 프로그래머로써 첫발을 내딛을 때부터 나는 프로그래밍 폰트에 대해서 관심이 많은 편이었다.

화면 붙잡고 매일 글자들과 씨름하는 직업이다보니 당연하게도 좀더 눈에 잘 보이고, 보기에 좀더 미려하고 조화스러운 폰트를 찾는 것이 어찌보면 약간 본능(?)적으로 관심을 가졌던게 아닌가 싶기도 하고 말이다.

최근까지도 이 주체할 수 없는 본능에 따라 마음에 드는 폰트를 찾아 유랑하는 탐험가의 마인드로 여기저기 들리는 폰트 소식들에 관심을 기울이다가 이번에 큰맘 먹고 유료 폰트(포스팅 마지막에 소개)를 구매하였다.

구매를 진행해보면서 내가 프로그래머 생활하면서 얼마나 많은 폰트를 거쳐왔었나 궁금해지기도 하고 한번 정리 해보는것도 재미있겠다 싶어 추억을 곱씹어 보니 생각보다 많은 폰트들이 내손을 거쳐갔구나 싶다.

이 폰트들이 나름 내 손으로 만들어낸 프로그램들에 생기를 불어 넣어준게 아닌가라는 감성적인 생각이 들기도 하고.. 서론이 길었고 여하간 지극히 개인적인 추억과 사용기로 내 프로그래밍 폰트 일대기를 한번 작성해 본다.

프로그래밍 폰트의 필수 조건

많이 알려져 있는 사실이지만 일반적으로 사용하는 폰트와 다르게 프로그래밍 폰트는 다음과 같은 조건들이 거의 필수적으로 요구되고 나도 그에 마찬가지로 동의하는 바이다.

내가 사용했던 폰트는 무조건 아래의 조건이 지켜져야 했다.

고정폭 폰트

내가 폰트 사용/프로그램 작성 시에 가장 중요하게 생각하는 것 눈에 잘 읽혀야 하는 가독성인데 공백이나 탭 등을 통해 들여쓰기 하거나 줄을 정렬하거나 할 때는 고정폭을 가진 폰트여야 이 가독성을 지키는 것이훨씬 더 유리하다.

https://design.tutsplus.com/articles/what-is-a-monospaced-font--cms-34717 인용 고정폭과 가변폭의 차이

문자간 명확한 구분

영문자 0O와 숫자 0, 영문자 iILl과 숫자 1 등 글리프(Glyph)가 약간 비슷한 놈들끼리 혼동되지 않고 구분되는 폰트여야 프로그램 작성 시에 오타 또는 혼동을 줄일 수 있기 때문에 이러한 조건들은 거의 필수적으로 지켜져야 마음의 평화를 유지 할 수 있다.

jetbrain mono 로 문자 구분 예시
Peter Ritchie님의 X

프로그래머 친구 엿먹일려면 세미콜론(;)을 그리스어 물음표(;)로 바꾸라는 이 생태계의 유명한 농담도 이러한 문자 구분에 대한 많은 프로그래머들의 신념에 대한 유쾌한(SQL 마지막에 그리스어 물음표라 생각하면 진짜 유쾌할까 😱) 유머 아닐까 싶다.

Ligature, Powerline Symbol, Icon [Optional]

Ligature는 서로 다른 글리프를 가진 문자들을 통합해서 보여주어서 화면상에 좀더 미려하게 표현하는 것을 얘기하며 또한 최근에는 zsh 사용자들이 많아 지면서 터미널에서 자주 사용하는 쉘프롬프트나 VIM 등의 상태바에 Powerline Symbol 등의 아이콘을 폰트에 합성(Nerd font)해서 많이들 사용하고 있다.

내가 사용해 왔던 폰트

정확하진 않지만 나의 사용 연대기 순으로 한번 정리해보았고 사용된 이미지 예제는 대체로 programmingfonts 에서 인용하였다.

재미로 간단한 사용기와 나름의 별점도 한번 매겨보았다.

Fixedsys, 1980

⭐⭐⭐

가장 먼저 언급을 안할 수가 없겠다.

추억보정용 폰트! 윈도우 노트패드인가 아마 기본 폰트였던걸로 기억하고 이게 아마 윈도우 1.0인가 부터 계속 있던 폰트로 알고는 있다.

DOS 코맨드라인 통해서 telnet 사용하던 시절 자주 애용하던 폰트였고, 최초로 고정폭 폰트가 이런거구나라는걸 알려준 폰트다.

최근 10년 내에는 윈도우를 거의 쓰지 않아서.. 요즘의 consolas 가 예전 fixedsys 정도 느낌이 되지 않을까 싶고, 초년생 때 외에는 거의 사용하진 않았던 추억의 폰트다.

Bitstream Vera Sans Mono, 2002

⭐⭐⭐⭐

쥬니어 프로그래머 시절 꽤나 오랜시간 나의 eclipse 에서 오랜시간 함께 했던 폰트다. 아마도 최근에 나온 많은 폰트 들에게 많은 영감을 준 폰트 아닐까 하고, 모든 구석에서 평균 이상의 평점이 나올 만한 폰트다.

아마도 많은 프로그래머 폰트 순위를 매기는 곳에도 항상 수위권을 지키지 않을까 싶은 폰트다.

Nanum Gothic Coding Font, 2009

⭐⭐⭐

D2Coding이 나오기 이전에 네이버에서 야심차게(?) 발표한 폰트 였고, Bitstream 보다는 글자폭이 약 90% 수준 정도여서 처음에는 좀더 가로로 길게 보기 편한 느낌이어서 사용을 좀 하다가 글자폭, 자간이 너무 좀 작은 편이이서 오랜 시간 사용할때는 약간 눈에 피로함이 있어서 길게 사용하진 않았던 폰트였다.

Envy Code R, 2008

⭐⭐⭐⭐

이때쯤 아마 Visual Studio로 법제처 프로젝트였었나 한글OCX로 법령안 편집기 Visual Basic 으로 밤패가며 코딩 하던 시기 였나 본데, 우연치 않게 찾아보던 VB관련 블로그에서 이 폰트를 추천 하길래 한 2~3년 정도 이것만 쭉 사용했던 기억이 있다.

1하고 l이 살짝 헷갈리긴 했지만 Bitstream 과는 약간 다른 둥글둥글한 맛에 꽤 오랫 동안 함께 했던 폰트다.

Anonymous Pro, 2009

⭐⭐⭐⭐

아마도 Adobe에서 무료로 풀렸던 Anonymous 기반으로 만들어진 폰트로 알고 있었고, 한참 개발자들 사에서 유행하길래 조금 써보았지만 내 타입은 아니었던 폰트였다.

그래도 아직 개발자들 사이에서는 인기 좋은 폰트 중 하나!

Source Code Pro, 2012

⭐⭐⭐⭐

그러고 보니 이 폰트도 Adobe에서 나왔던 폰트였나 그랬던거 같은데, 가로길이가 좀 긴 폰트였고 이 폰트도 아직 개발자들 사이에서는 많이 사용하는 폰트로 알고 있지만.. 이상하게 정이 안가는 폰트들중 하나..

D2Coding, 2016

⭐⭐⭐

역시나 네이버에서 배포한 개발자용 무료 폰트로 한글이 나눔고딕으로 머지되어 있어서 지금도 꽤 나 많은 팬층을 보유한 폰트이다.

역시나 자폭과 자간이 좀 짧은(네이버 스타일인가 보다)편의 폰트로 군더더기는 없지만.. 역시나 이상하게 정이 안가.. 많이 사용하진 않았다.

Fira Code, 2014

⭐⭐⭐⭐⭐

IDE를 주로 eclipse를 더 많이 사용하던 시절 3~4년은 이 폰트로 계속 사용 했던 기억이 있다. 내가 사용 했던 폰트 중에 제일 처음으로 ligature가 적용된 폰트였던거 같고 그 맛에라도 좀 더 길게 사용했던 폰트였다.

이 폰트도 아직 개발자들 사이에서 많이 사용 되고 상위권 폰트 느낌~

Menlo 2009, Monaco 2006

⭐⭐⭐⭐⭐

맥북을 본격적으로 사용하면서부터 터미널 기본 폰트 였나 그랬는데 생각보다 가독성도 꽤 좋고 터미널 사용 용도로 꽤나 오랫동안 애용 했고, 웹브라우저용 코드 표현이나 에디터에 consolas 와 같이 기본으로 사용하기 꽤나 좋은 폰트이다.

Menlo는 맥에서는 아무생각없이 그냥 기본 폰트로 사용하기에는 아주 훌륭한 폰트이다.

IBM Plex Mono, 2017

⭐⭐⭐⭐

말그대로 IBM에서 오픈소스로 배포된 폰트인데 얘도 잠깐 사용하다가 말았던 폰트이긴 한데 아직도 이 폰트를 사랑하는 개발자는 꽤나 있는걸로 알고 있고 지금 우리 팀원중 한명도 이 폰트를 애용하고 있다.

Cascadia Code, 2019

⭐⭐⭐⭐

이 폰트는 Microsoft에서 오픈소스로 배포한 폰트인데 처음에는 그렇지는 않았던거 같은데 이제는 기본 윈도우 터미널과 비쥬얼 스튜디오 기본 폰트로 지정된거 같다.

약간 느낌이 Fira Code와 비슷한 느낌이 있었고 이탤릭체가 다른 폰트와 다른게 약간 재미진 느낌이 있다.

근데 이 다음에 소개할 폰트 때문에 그리 오래 사용하진 않았던 기억이 있다.

JetBrains Mono 2020

⭐⭐⭐⭐⭐

JetBrain에서 처음 출시 할때 부터 최근 몇년간 주력으로 사용하던 폰트이다.

자간이 그렇게 넒은편은 아니고 IntelliJ를 계속 사용하다보니 거부감 없이 그냥 계속 사용했던거 같다.

x-height가 되게 적절히 설정되어 있어서 코드를 계속 보고 수정할 때 편안함을 느꼈던거 같다. 비교적 최신에 나온 폰트여서 ligature도 잘 적용 되어 있고 최애 폰트 중 하나이다.

Meslo LG 2013

⭐⭐⭐⭐⭐

Jetbrains Mono와 함께 가장 많이 사용했던 폰트이다. 주로 맥 터미널용 폰트로 많이 썼었는데 얘는 다른 폰트와 다르게 줄간격이 폰트에 포함된 폰트가 함께 나왔었다.

Menlo Regular 기반으로 커스텀을 약간 한 폰트로 다른 폰트와는 다르게 LineGap이라고 하는 속성을 가지고 있다. 줄간격이 더 넓게 고정된 세트를 같이 배포한다고 보면 되는데 IDE나 터미널에서 줄간격 옵션이 없는 경우에 유용하게 사용 가능해서 주로 터미널에서 주력으로 계속 사용했었다.

Monolisa, 2022

⭐⭐⭐⭐⭐

서두에 얘기 했듯이 유료로 구매한 폰트가 바로 이 폰트이다.

우연치 않게 서핑 중에 추천하는 글을 발견했고 Playground 페이지에서 이것저것 내 입맛에 맞게 커스텀이 가능하고 이탤릭 글자 표현도 너무 맘에 들어서... 결국 pro 버전을 구매했다.

지금 거의 모든 IDE와 터미널 등 키보드로 칠 수 있는 거의 모든 곳에 이 폰트를 사용하고 있다. 왜냐하면... 돈 주고 샀기 때문에 일단 뽕을 뽑아야 해서 😅😅😅

내 인생 처음으로 돈을 주고 산 폰트이기도 하지만 그 이전에 내가 원했던 글리프의 미묘한 모양 변화도 가능해서 일단 몇년 간은 폰트 걱정없이 잘 사용할 것 같다.

나만의 Best 5

사용했던 폰트들 중에서 사용기간 등을 고려한 나름의 순위를 굳이 한번 매겨보자면 다음과 같다.

  1. Monolisa - 이건 돈주고 샀기 때문에 어쩔 수 없다 ㅋㅋㅋ
  2. Jetbrains Mono
  3. Meslo LGMDZ nerd font mono
  4. Fira code
  5. Cascadia Code

마무리

프로그래밍 폰트 탐험자들을 위해 약간의 도움이 됐으면 좋겠고, 아직 내 여정(?)도 엔딩이 아니기 때문에 여정이 멈추는 순간까지 마음에 드는 폰트가 있다면 계속 추가해보겠다.

다음은 그 동안 거쳐간 키보드도 한번 리뷰 해볼까 ㅋㅋ

Happy Coding~!

Read more

Istio 를 통한 path(url) 기반 Local Rate Limit 적용

Istio 를 통한 path(url) 기반 Local Rate Limit 적용

몇 년 전인지는 기억나진 않지만 Rate Limit 적용은 항상 애플리케이션 쪽에서 처리하는 것이 당연하다는 것이 주된 의견이었다. 그래서 그때 당시 Bucket4J 를 통해서 Spring 쪽에서 처리하고 했던 기억이 있다. 이제는 당연하게도 Istio와 같은 Service Mesh쪽에서 처리하는 것이 응당 맞다고 생각되는 것이 개발 세상이 이제 점점 더 클라우드향으로 이동된다는 느낌이다. 강력한

By Kevin H. Kwon
Istio를 통한 header기반 API 라우팅/호출 시 cors preflight request 이슈 트러블슈팅 기록

Istio를 통한 header기반 API 라우팅/호출 시 cors preflight request 이슈 트러블슈팅 기록

현재 개발하고 있는 일부 컨테이너 기반의 서비스들을 Istio를 통해 서비스들을 구성하고 트래픽을 관리하고 있다. 이때 컨테이너 서비스가 같은 규격이 여러개가 같은 url과 port를 할당 받아서 사용해야는 애로 사항이 있어 Istio에서 header 기반으로 특별한 헤더가 있는 경우에만 라우팅이 될 수 있도록 구성하고 테스트를 진행했었다. Istio Request Routing 예제와 같이 header

By Kevin H. Kwon
Kubernetes cluster에 Feature gates 활성화 방법

Kubernetes cluster에 Feature gates 활성화 방법

최근에 nvidia a100 gpu를 mig로 나눠서 사용 하는 노드에서 cadvisor가 gpu metric을 수집을 잘 못해서 kubulet에서 계속 오류가 떨어져서 트러블슈팅을 진행했었다. dcgm-exporter로 prometheus로 metric을 수집하고 있어서 굳이 cadvisor에서 nvidia accelerator meric을 수집할 이유가 없어져서 이것저것 자료를 찾아보니 1.19 버전부터는 DisableAcceleratorUsageMetrics feature gates로 해당 수집 옵션을 비활성화 시킬 수 있는

By Kevin H. Kwon