matplotlib에서 특정 경로에 있는 폰트를 글로벌 폰트로 지정하고 싶다면
최근에 AWS ECS에서 주피터허브(JupyterHub) 환경을 구축하여 회사 내에 서비스 하고 있다. 악으로 깡으로 부딪혀보면서 주피터허브는 다양한 형태(?)로 구축할 수 있다는 것을 알게 되었다. 특히 spawner, contents manager 등의 주피터허브 구성 요소들을 가지각색으로 선택할 수 있는데, 우리 회사 개발 인프라에 맞게 선택하다보니 이것저것 제약도 있었고, 그에 따른 사용자들의 문의사항도 많았다.
어쨌든 그 문의 중 한 가지였던… “데이터 시각화 라이브러리 matplotlib에서 한글 폰트가 깨지는데요. 제가 로컬에서 사용하고 있는 것처럼 나눔고딕폰트를 적용하고 싶은데 어떡하죠?”를 해결하는 가장 간단한 파이썬 코드를 기록해본다.
노트북 내부에서 나눔고딕폰트를 matplotlib font manager에 추가하기
!
매직커맨드를 사용해 wget
(우분투 환경)으로 나눔고딕 폰트를 현재 위치에 다운로드하고, matplotlib 폰트 매니저에 다운받은 나눔고딕 폰트를 추가하는 코드이다.
!wget -O NanumGothic.ttf https://github.com/google/fonts/blob/main/ofl/nanumgothic/NanumGothic-Regular.ttf?raw=true
import matplotlib as mpl
import matplotlib.font_manager as fm
fe = fm.FontEntry(
fname='NanumGothic.ttf',
name='NanumGothic')
fm.fontManager.ttflist.insert(0, fe)
mpl.rcParams['font.family'] = fe.name
구글링 해보면 fontmanager 폴더에 폰트를 추가하는 방법이 가장 근본적인 방법임을 알 수 있지만… 그런 방법이 익숙지 않고 코드 실행만으로 해결하고 싶다, 혹은 노트북 환경을 변경할 수 있는 super user가 아니다, 혹은 주피터허브에서 매번 새로운 환경을 할당받아 사용하는 등의 제약 사항이 있다 등의 경우 가장 간단하게 해결하는 방법인듯 싶다.
스택오버플로 질문에서 도움을 얻었다. 복 받으세요…! how to set up a custom font with custom path to matplotlib global font?