Windowsで Ricty(Powerline対応版) Fontを使用する

# はじめに

Windows環境でPuttyTerminalを通して、SSHでサーバに接続するときに、おしゃれな見た目にしたい欲求が出てきます。
簡単に導入できるおしゃれ要素として、「Font」と「Powerline」が存在します。
Fontは、おしゃれの代名詞(?)である、Rictyを導入します。
また、RictyをPowerline に対応できるようにカスタマイズする方法を確認します。


# Putty Settings

通常のPuttyはレンダリングが出来なくて、Fontが汚くなるようですが、レンダリング可能なPuttyが公開されているため、まずはこれを導入します

## Install

以下のレンダリング版のPuttyをInstallします
https://ice.hotmint.com/putty/d2ddw.html

## ini settings

解凍したファイルに存在する ini ディレクトリに含まれる [putty.ini]を[putty.exe]と同一のディレクトリに移動します。
これは、通常ではPuttyはレジストリにデータを保存する挙動になりますが、iniファイルへ保存する挙動へと変更します。

## character set

Puttyで以下のConfigを変更する
[Window]-[Translation]-[Remote character set]
`UTF-8`で設定する


## Terminal-type string

Puttyで以下のConfigを変更する
[Connection]-[Data]-[Terminal-type string]
以下の文字列を設定する。defaultでは`xterm`となっている。

```
putty-256color
```

参考URL

http://stonedot.blogspot.com/2012/12/puttytmuxbyobushiftf2shiftf3shiftf5.html


## Anti-aliasing

Puttyで以下のConfigを変更する
[Windows]-[Amto-aliasing]

Anti-aliasing settings : ClearType
Rendering mode settings : Symmetric

Gamma : 1800
Enchanced Contrast : 100
ClearType Lecel : 70

# Windows Settings

## Ricty Font 生成

自分の場合は、Ubuntu18.04マシンが手元にあったので、このマシン上でFontを生成します
Font生成に必要なパッケージを導入します

```
sudo apt install fontforge python-minimal python-fontforge
```

Font生成用ディレクトリを作成

```
mkdir ~/ricty
cd ~/ricty
```

Font生成に必要なInconsolata と Migu 1M をダウンロードします
Inconsolata をwgetでダウンロード

```
wget https://www.rs.tus.ac.jp/yyusa/ricty/ricty_generator.sh
wget https://github.com/google/fonts/raw/master/ofl/inconsolata/Inconsolata-Regular.ttf
wget https://github.com/google/fonts/raw/master/ofl/inconsolata/Inconsolata-Bold.ttf
```

Migu 1M は手動でダウンロードし、fontディレクトリへ格納する。
以下のようにディレクトリが準備出来ればOK

```
sugi@sterm:~/ricty$ ls -la
total 6572
drwxrwxr-x 2 sugi sugi    4096 Jan  7 01:18 .
drwxr-xr-x 6 sugi sugi    4096 Jan  7 01:14 ..
-rw-rw-r-- 1 sugi sugi   60427 Jan  7 01:14 Inconsolata-Bold.ttf
-rw-rw-r-- 1 sugi sugi   60488 Jan  7 01:15 Inconsolata-Regular.ttf
-rw-rw-r-- 1 sugi sugi 3409500 Jul 11  2015 migu-1m-bold.ttf
-rw-rw-r-- 1 sugi sugi 3137552 Jul 11  2015 migu-1m-regular.ttf
-rw-rw-r-- 1 sugi sugi   36173 Dec  3  2017 ricty_generator.sh
```

sh を実行する

```
sh ricty_generator.sh auto
```

実行例

```
sugi@sterm:~/ricty$ sh ricty_generator.sh auto
Ricty Generator 4.1.1

Copyright (c) 2011-2017 Yasunori Yusa
All rights reserved.

This script is to generate Ricty font from Inconsolata and Migu 1M.
The generated fonts are licensed by both SIL Open Font License (OFL)
Version 1.1 and IPA Font License Agreement v1.0.
Due to OFL 1.1 Section 5, it is PROHIBITED to distribute the generated fonts.

Generate modified Inconsolata
Open ./Inconsolata-Regular.ttf
Remove ambiguous glyphs
Clear instructions
Save Modified-Inconsolata-Regular.sfd
Open ./Inconsolata-Bold.ttf
Remove ambiguous glyphs
Clear instructions
Save Modified-Inconsolata-Bold.sfd
Generate modified Migu 1M
Open ./migu-1m-regular.ttf
Scale down all glyphs (it may take a few minutes)
Clear instructions
Save Modified-migu-1m-regular.sfd
Open ./migu-1m-bold.ttf
Scale down all glyphs (it may take a few minutes)
Clear instructions
Save Modified-migu-1m-bold.sfd
Generate Ricty
Merge Modified-Inconsolata-Regular.sfd with Modified-migu-1m-regular.sfd
Edit zenkaku space
Edit zenkaku comma and period
Edit zenkaku colon and semicolon
Edit zenkaku brackets
Edit en and em dashes
Process before saving (it may take a few minutes)
Save Ricty-Regular.ttf
Merge Modified-Inconsolata-Bold.sfd with Modified-migu-1m-bold.sfd
Edit zenkaku space
Edit zenkaku comma and period
Edit zenkaku colon and semicolon
Edit zenkaku brackets
Edit en and em dashes
Process before saving (it may take a few minutes)
Save Ricty-Bold.ttf
Generate Ricty Discord
Save RictyDiscord-Regular.ttf
Generate Ricty Discord
Save RictyDiscord-Bold.ttf
Remove temporary files
Succeeded in generating Ricty!
sugi@sterm:~/ricty$
```

実行後、以下のようのfontファイルが生成されています

```
sugi@sterm:~/ricty$ ls -la /home/sugi/ricty
total 33348
drwxrwxr-x 2 sugi sugi    4096 Jan  7 01:33 .
drwxr-xr-x 7 sugi sugi    4096 Jan  7 01:24 ..
-rw-rw-r-- 1 sugi sugi  108360 Jan  7 01:26 Inconsolata-Bold.ttf
-rw-rw-r-- 1 sugi sugi   95960 Jan  7 01:26 Inconsolata-Regular.ttf
-rw-rw-r-- 1 sugi sugi 3409500 Jul 11  2015 migu-1m-bold.ttf
-rw-rw-r-- 1 sugi sugi 3137552 Jul 11  2015 migu-1m-regular.ttf
-rw-rw-r-- 1 sugi sugi 3674256 Jan  7 01:32 Ricty-BoldOblique.ttf
-rw-rw-r-- 1 sugi sugi 3448640 Jan  7 01:31 Ricty-Bold.ttf
-rw-rw-r-- 1 sugi sugi 3674636 Jan  7 01:33 RictyDiscord-BoldOblique.ttf
-rw-rw-r-- 1 sugi sugi 3449008 Jan  7 01:31 RictyDiscord-Bold.ttf
-rw-rw-r-- 1 sugi sugi 3378516 Jan  7 01:33 RictyDiscord-Oblique.ttf
-rw-rw-r-- 1 sugi sugi 3155020 Jan  7 01:31 RictyDiscord-Regular.ttf
-rw-rw-r-- 1 sugi sugi   36173 Dec  3  2017 ricty_generator.sh
-rw-rw-r-- 1 sugi sugi 3378188 Jan  7 01:32 Ricty-Oblique.ttf
-rw-rw-r-- 1 sugi sugi 3154692 Jan  7 01:29 Ricty-Regular.ttf
```

## RictyをPowerline用にCustomizeする

rictyディレクトリで以下のRepositoryをCloneする

```
git clone https://github.com/powerline/fontpatcher.git
```

以下コマンドを実行する

```
python ./fontpatcher/scripts/powerline-fontpatcher Ricty-Bold.ttf
python ./fontpatcher/scripts/powerline-fontpatcher Ricty-Regular.ttf
```

`Ricty Bold for Powerline.ttf`と`Ricty Regular for Powerline.ttf`が生成されていることを確認します

```
sugi@sterm:~/ricty$ ls -la /home/sugi/ricty
total 40056
drwxrwxr-x 3 sugi sugi    4096 Jan  7 02:03  .
drwxr-xr-x 7 sugi sugi    4096 Jan  7 01:58  ..
drwxrwxr-x 5 sugi sugi    4096 Jan  7 01:56  fontpatcher
-rw-rw-r-- 1 sugi sugi  108360 Jan  7 01:26  Inconsolata-Bold.ttf
-rw-rw-r-- 1 sugi sugi   95960 Jan  7 01:26  Inconsolata-Regular.ttf
-rw-rw-r-- 1 sugi sugi 3409500 Jul 11  2015  migu-1m-bold.ttf
-rw-rw-r-- 1 sugi sugi 3137552 Jul 11  2015  migu-1m-regular.ttf
-rw-rw-r-- 1 sugi sugi 3578516 Jan  7 02:02 'Ricty Bold for Powerline.ttf'
-rw-rw-r-- 1 sugi sugi 3674256 Jan  7 01:32  Ricty-BoldOblique.ttf
-rw-rw-r-- 1 sugi sugi 3448640 Jan  7 01:31  Ricty-Bold.ttf
-rw-rw-r-- 1 sugi sugi 3674636 Jan  7 01:33  RictyDiscord-BoldOblique.ttf
-rw-rw-r-- 1 sugi sugi 3449008 Jan  7 01:31  RictyDiscord-Bold.ttf
-rw-rw-r-- 1 sugi sugi 3378516 Jan  7 01:33  RictyDiscord-Oblique.ttf
-rw-rw-r-- 1 sugi sugi 3155020 Jan  7 01:31  RictyDiscord-Regular.ttf
-rw-rw-r-- 1 sugi sugi   36173 Dec  3  2017  ricty_generator.sh
-rw-rw-r-- 1 sugi sugi 3378188 Jan  7 01:32  Ricty-Oblique.ttf
-rw-rw-r-- 1 sugi sugi 3284580 Jan  7 02:03 'Ricty Regular for Powerline.ttf'
-rw-rw-r-- 1 sugi sugi 3154692 Jan  7 01:29  Ricty-Regular.ttf
```

`Ricty Bold for Powerline.ttf`と`Ricty Regular for Powerline.ttf`の2個のファイルをWindows上へもっていき、ダブルクリックするとFontをInstallすることが出来ます

## 文字の横幅が不自然に大きい場合

以下の手順で修正できます

修正用のshスクリプトをダウンロードします

```
cd ~/ricty
wget https://www.rs.tus.ac.jp/yyusa/ricty/os2version_reviser.sh
```

RictyFontを作り直します

```
sh os2version_reviser.sh Ricty-Regular.ttf
sh os2version_reviser.sh Ricty-Bold.ttf
sh os2version_reviser.sh RictyDiscord-Regular.ttf
sh os2version_reviser.sh RictyDiscord-Bold.ttf
```

Powerline用のFontを作り直します

```
python ./fontpatcher/scripts/powerline-fontpatcher Ricty-Bold.ttf
python ./fontpatcher/scripts/powerline-fontpatcher Ricty-Regular.ttf
```

再度作成した、`Ricty Bold for Powerline.ttf`と`Ricty Regular for Powerline.ttf`の2個のファイルをWindows上へもっていき、ダブルクリックするとFontをInstallすることが出来ます

## 横幅が大きい問題を修正できない場合

あきらめて、Ricty Diminishedを使用します
以下のGithubから、「RictyDiminished-Regular-Powerline.ttf」をダウンロードし、ダブルクリックでInstallします
https://github.com/mzyy94/RictyDiminished-for-Powerline/blob/master/powerline-fontpatched/Ricty%20Diminished%20Regular%20for%20Powerline.ttf


putty上でfontを選択するとエラー「そのFontは存在しません」と出るので、putty.exeと同一のdirectoryに存在する putty.ini を直接編集します

Font=""の行を探し、以下の値に書き換えます

```
[session名]
省略
Font="Ricty Diminished for Powerline"
```



# 参考URL
https://altarf.net/computer/%E6%8A%80%E8%A1%93%E7%9A%84%E3%81%AA%E3%83%9D%E3%82%A8%E3%83%A0/3244
http://jupitrisonlabs.hatenadiary.jp/entry/20170120/1484893021