Jupyter Notebook에서 matplotlib 한글 폰트 깨짐을 코드로 간단하게 수정하기

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?

Leave a Reply

Your email address will not be published. Required fields are marked *