jupyter-themesの fontを見比べてみて

# 背景
jupyter-themesで設定できるfontがたくさんあることをしって、やはりフォントもこだわならなくては！　とおもったのがきっかけ

それではどうぞ


<img width="968" alt="スクリーンショット 2020-04-11 15.16.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/5a0c41c6-23f9-def4-1a85-d72a700079f1.png">
<img width="967" alt="スクリーンショット 2020-04-11 15.16.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/32ef8d39-8f3c-969b-4f50-261759b188e9.png">
<img width="969" alt="スクリーンショット 2020-04-11 15.17.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/641d84bc-cd52-f463-136c-4f3bad14c9d4.png">
<img width="973" alt="スクリーンショット 2020-04-11 15.17.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/c27f9329-1e2e-0207-ce47-35f37dcd55ee.png">
<img width="969" alt="スクリーンショット 2020-04-11 15.17.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/28af4d3d-4782-d2b3-fb76-72f6625371be.png">
<img width="967" alt="スクリーンショット 2020-04-11 15.18.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/7c4604cf-9710-5990-a49b-0808f55931b9.png">























<img width="971" alt="スクリーンショット 2020-04-11 15.18.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/65fe3a59-e362-afe7-c490-4f8f77eb0a6c.png">
<img width="965" alt="スクリーンショット 2020-04-11 15.18.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/85b90cd7-9557-1da3-65c5-faa117e44aa3.png">
<img width="971" alt="スクリーンショット 2020-04-11 15.22.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/085e3ef4-16a1-b897-d905-a4fdad10f854.png">
<img width="967" alt="スクリーンショット 2020-04-11 15.23.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/108996bb-3555-7f72-692f-8ab80b9bd942.png">
<img width="971" alt="スクリーンショット 2020-04-11 15.23.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/391c00f8-fbb2-f545-3c23-9ced12838e78.png">
<img width="965" alt="スクリーンショット 2020-04-11 15.24.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/82af31e7-8ed8-48b8-b523-4c9d8c5a71b7.png">
<img width="970" alt="スクリーンショット 2020-04-11 15.24.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/946eddf8-2c70-3942-19e5-cfb623772cad.png">
<img width="968" alt="スクリーンショット 2020-04-11 15.25.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/2f83c56e-d9c0-68bb-54e6-8531646f0f2f.png">
<img width="969" alt="スクリーンショット 2020-04-11 15.25.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/48649fbc-7aa2-92d6-3099-de7acd40a121.png">
<img width="967" alt="スクリーンショット 2020-04-11 15.25.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/34431761-4fd6-802d-6e1a-fe1c8f8faa23.png">















<img width="974" alt="スクリーンショット 2020-04-11 15.25.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/7acba978-8610-2d67-a15e-e4b09b458b54.png">


<img width="971" alt="スクリーンショット 2020-04-11 15.26.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/9c5e886e-6d57-0d17-8f71-3665ed0ad1c4.png">




<img width="969" alt="スクリーンショット 2020-04-11 15.26.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/ec212a03-4d65-eccb-3b9e-82d4b03995bb.png">




<img width="966" alt="スクリーンショット 2020-04-11 15.26.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/13314a84-ce41-85a3-eb73-edefaade1575.png">
<img width="971" alt="スクリーンショット 2020-04-11 15.26.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/8e51a0c1-9d9c-98e1-cfa3-541b804867e6.png">




<img width="969" alt="スクリーンショット 2020-04-11 15.27.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/cb91cfd6-79d8-6696-dc1f-0c4c1fae5b49.png">



<img width="973" alt="スクリーンショット 2020-04-11 15.27.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/8281f90b-48a6-6ffe-8b42-d3cafe7cc96a.png">



<img width="971" alt="スクリーンショット 2020-04-11 15.27.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/784c1cc6-9ab5-24ca-657f-a6d02a10e699.png">


<img width="969" alt="スクリーンショット 2020-04-11 15.28.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/0e81eb0e-f82f-820c-204a-802e7f1148ef.png">

<img width="970" alt="スクリーンショット 2020-04-11 15.28.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/694bbeb4-0fe8-20a2-1e2b-00881a8db367.png">
<img width="971" alt="スクリーンショット 2020-04-11 15.28.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/1d990041-6df3-5a22-307a-8dd58d9ea284.png">


# 結論
- 避けるべきフォント: 　
    - jupyterのデフォルトフォント：　等幅フォントじゃない
    - saxMono：　1と小文字Lの区別、0と大文字Oの区別がつかない
    - Liberation Mono: 0と大文字Oの区別がつかない
    - Aurulent Sans Mono: 0と大文字Oの区別がつかない
- "避けるべきフォント"以外であれば、あとはお好み。　lと１の区別のつきやすさ＋斜線0+officeよりやや強めの太さ、ということでMesloを選択。



# 備考
ぽちぽちしながらテーマを変更できるようにつくったコード


```python
import subprocess

font_raw = """anka	Anka/Coder
anonymous	Anonymous Pro
aurulent	Aurulent Sans Mono
bitstream	Bitstream Vera Sans Mono
bpmono	BPmono
code	Code New Roman
consolamono	Consolamono
cousine	Cousine
dejavu	DejaVu Sans Mono
droidmono	Droid Sans Mono
fira	Fira Mono
firacode	Fira Code
generic	Generic Mono
hack	Hack
hasklig	Hasklig
inconsolata	Inconsolata-g
inputmono	Input Mono
iosevka	Iosevka
liberation	Liberation Mono
meslo	Meslo
office	Office Code Pro
oxygen	Oxygen Mono
roboto	Roboto Mono
saxmono	saxMono
source	Source Code Pro
sourcemed	Source Code Pro Medium
ptmono	PT Mono
ubuntu	Ubuntu Mono"""

font_list = []
for i in font_raw.split('\n'):
    f_arg     = i.split('\t')[0]
    font_name = i.split('\t')[1]
    font_list.append((f_arg,font_name))

def generateCmd():
    base_cmd = 'jt -t gruvboxd -T -N -ofs 12 -f %(font_name)s'
    for font in font_list:
        print(font[1])
        yield base_cmd % {'font_name':font[0]}, font[1]

changeTheme= generateCmd()
cmd, font_name = next(changeTheme)
print(cmd)
res = subprocess.run(cmd,shell =True)

user_acc = { 'user': 'l1l1_aa_0O0O_2S2S', 'password': 'abcdefghijklmnopqrstuvwxyz0123456789', 'database': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'}
print('font_name:'+font_name)
print('cmd:'+cmd)
for i in user_acc:
    print(i.ljust(15,' ')+user_acc[i])
```