Jupyter Notebook에 특정 폰트(ex: D2Coding)를 설정하는 방법으로는 custom.css 파일에 font-family를 설정해주는 방법(링크)이 널리 알려졌습니다.
하지만 이는 근본적인 방법이 아니므로 어색함과 불편함을 느꼈고, 개발자스러운 근본적인 해결 방법을 찾아봤습니다.
jt -t monokai -f D2Coding -fs 14 -altp -tf D2Coding -tfs 14 -nf D2Coding -nfs 14 -cellw 90% -T -N -ofs 12 -cursc r
제게 근본적인 해결 방법이란 Terminal에서 위와 같은 명령어 입력으로 설정하는 방법입니다.
이 방식이 필요한 이유는 jt -t [테마] 로 설정 시 custom.css 파일이 해당 테마로 덮어쓰기가 되기 때문에, 원하는 폰트를 적용하는 방법이 매우 복잡해집니다.
custom.css에서 수많은 font-family 중에 원하는 부위에 적용되는 부분을 찾아가며 노가다를 하는 것은 개발자스럽지 않은 방법이라고 생각되어 거부감이 생겼습니다.
Jupyter Notebook (Installed via pip)
Name | Version |
---|---|
jupyter core | 4.6.0 |
jupyter-notebook | 6.0.1 |
ipython | 7.8.0 |
ipykernel | 5.1.3 |
jupyter client | 5.3.4 |
OS
Font
jt -t monokai -f D2Coding -fs 14 -altp -tf D2Coding -tfs 14 -nf D2Coding -nfs 14 -cellw 90% -T -N -ofs 12 -cursc r
각 명령어의 옵션 정보를 보려면 여기를 눌러주세요.
에러 내용을 살펴보면 ...\stylefx.py 파일의 line 143에서 에러가 발생했습니다.
stylefx.py를 찾았습니다.
경로를 보고 찾아가도 되고, 제가 사용한 프로그램은 Everything입니다.
VSCode, 메모장등의 에디터로 파일을 열어봅니다.
위의 에러에서 봤던 코드입니다. 이 부분을 고쳐주면 될 것 같습니다.
monofont에 어떤 값이 문제인지 print를 통해 확인해봅니다.
jt -t monokai -f D2Coding ...
해당 코드의 monofont는 -f 옵션에 넣은 폰트명임을 알게 됐습니다.
stored_font_dicts를 살펴보겠습니다.
위에서 봤던 에러 메세지가 보입니다.
dict형의 fonts에 설정하고자 하는 폰트명을 작성합니다. 'mono', 'sans', 'serif' 세 곳에 모두 작성했습니다.
fontdir을 살펴봅니다.
경로: fontdir = ... \monospace\[폰트명] 입니다. 설정하고자 하는 폰트를 어디에 넣어야 될지 찾았습니다.
원하는 폰트를 넣어줄 경로입니다. 해당 경로에서 Admin은 제 PC에 설정된 계정명입니다.
이는 사용자마다 다를 수 있습니다.
해당 위치에 원하는 폰트 이름으로 폴더를 생성하고, 그 폴더에 폰트이름.ttf 형식으로 넣어줍니다.
다시 명령어를 입력해줬더니 아무런 에러도 출력되지 않았습니다. 적용이 제대로 됐는지 확인해보겠습니다.
브라우저는 Google Chrome을 사용했고, cmder에서 jupyter notebook 명령어를 통해 실행했습니다. CSS는 따로 설정하지 않았습니다.
Chrome 웹 스토어에서 설치한 확장 프로그램 WhatFont를 사용해서 적용된 폰트를 확인해봅니다.
D2Coding이 정상적으로 적용된 것을 확인했습니다.
ipynb 내부에서도 잘 적용이 되었는지 확인해봅니다.
Input Cells, Output Cells, Markdown Cells 모두 D2Coding Font가 적용되었음을 확인했습니다.
macOS Big Sur 11.1에서도 위와 동일한 프로세스로 에러 없이 설정하였습니다.
jt -t monokai -f D2Coding -fs 14 -altp -tf D2Coding -tfs 14 -nf D2Coding -nfs 14 -cellw 90% -T -N -ofs 12 -cursc r
cl options | arg | default |
---|---|---|
Usage help | -h | -- |
List Themes | -l | -- |
Theme Name to Install | -t | -- |
Code Font | -f | -- |
Code Font-Size | -fs | 11 |
Notebook Font | -nf | -- |
Notebook Font Size | -nfs | 13 |
Text/MD Cell Font | -tf | -- |
Text/MD Cell Fontsize | -tfs | 13 |
Pandas DF Fontsize | -dfs | 9 |
Output Area Fontsize | -ofs | 8.5 |
Mathjax Fontsize (%) | -mathfs | 100 |
Intro Page Margins | -m | auto |
Cell Width | -cellw | 980 |
Line Height | -lineh | 170 |
Cursor Width | -cursw | 2 |
Cursor Color | -cursc | -- |
Alt Prompt Layout | -altp | -- |
Alt Markdown BG Color | -altmd | -- |
Alt Output BG Color | -altout | -- |
Style Vim NBExt* | -vim | -- |
Toolbar Visible | -T | -- |
Name & Logo Visible | -N | -- |
Kernel Logo Visible | -kl | -- |
Reset Default Theme | -r | -- |
Force Default Fonts | -dfonts | -- |
Jupyter Notebook 환경에서 테마와 폰트를 모두 원하는대로 설정하기 위해 찾아봤으나 마땅한 방법이 없었고, CSS 설정 방법만 나와있어서 안타까웠습니다.
나 자신이 편하고 만족하기 위해서 해결 방법을 찾았고, 이를 널리 공유하고자 블로그를 만들어봤습니다.
출처를 링크로 남겨주신다면 외부 사용은 감사합니다😆
존경합니다 :)