Migu Nerd Font のアイコンフォントを narrow にしたい
以前、Nerd Fonts のfont-patcher
で Migu に Narrow サイズの Symbol グリフぶちこみゃええやんけ、まで来てた。
その後を記す。
Nerd Fonts
Nerd Font の font-patcher を試す。事前にパッチ済みの M+を見ると完璧なので期待に胸が高ぶる。実行してみると Python モジュールに Windows のライブラリが含まれていたので WSL2 内の Ubuntu では実行できなかった。Windows で実行する。
fontforge -script font-patcher migu-1m-regular.ttf -s -l -w -c --careful --progressbars -out patched
結果、全然アカン... -s, --mono, --use-single-width-glyphs
オプションを有効にすると全グリフが single-width になってしまい日本語フォントとして使いものにならなくなる。
逆にこの完璧な M+が惚れ惚れする出来なので、こちらに半濁音を移植するだけでいい気がしてきた。
font-merger 再び
コードポイントがわからないので、取得するための関数を PowerShell で作る。
function UC {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true,
Position = 0,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true)]
[ValidateNotNullOrEmpty()]
[String[]]$s
)
process {
foreach ($c in $s) {
[Convert]::ToInt32($c -as [char]).ToString("x")
}
}
}
('がぎぐげござじずぜぞだぢづでどばぱびぴぶぷべぺぼぽゔ'+''+''+'ゞガギグゲゴザジズゼゾダヂヅデドバパビピブプベペボポヴヷヸヹヺ').ToCharArray() | UC
これで置き換えたい文字(Migu のチャーミングな濁音半濁音たち)のコードポイントを取れるよにした。 特定のコードポイントの移植といえば font-merger 使えるやん!というところではあるが、ほしいコードポイントは連続せず細切れになっているので、これを 1 個ずつ設定に書くのはめんどい... ということで font-merger の改造をした。
Add codepoint option to copy glyph from specific code points. · krymtkts/fontmerger@33c775e
/usr/bin/fontforge -script fontmerger/__init__.py -x migu-1m-regular -o patched --suffix=migu -- ./source/M+1mNerdFontCompleteWindowsCompatible.ttf
コードポイントを個別に指定できるようにしまして実行したところ、なんかそれっぽく半濁点が反映されてる。 いや待てよ...微妙に縦長になってしまった...これは M+と Migu でフォントの縦横比が異なるせいやろな。
もう FontForge のスクリプティング真面目にやってくしか残された将来はない気がしてきた。😰
font-merger 再び 再び
Nerd Fonts の font-patcher を読んでいるときに気づいたのが、--mono
オプションを有効にしている場合すべての glyph に narrow 幅を設定するようになっていたこと。
nerd-fonts/font-patcher at master · ryanoasis/nerd-fonts · GitHub
日本語フォントの場合 wide 幅を書き換えてしまうから先述の通り Nerf Fonts はえらいことになってしまっていたので、これをパッチするグリフにのみ適用すれば良いという力技に気づく。 ということで更に font-merger を改造した。
Adds mono command line option that forces glyph to be single width. · krymtkts/fontmerger@25ed2b1
現状
これにより全ての追加したアイコングリフが narrow 幅になることで、漸く Windows Terminal でもミニミニアイコンフォントにならずに表示できるようになった。
しかしご覧の通り、右に寄るべきフォントの見た目が非常に残念なので、今後もちょいちょいいじらねばならない。完成はいつになるのか...😪 (幅 500 以上になってるためずれる)
なんとなく、次は Powerline グリフの narrow 幅を大きく超過するものを左右の align をつけて変形しないといけない気がしている。 この辺の頂点の xmax, ymax からどないか計算できんかな → fontforge — FontForge 20201107 documentation
お亡くなりになられた fontmerger を Python3 化して動かす
最新の Migu に対して fontmerger で Nerd font patch する
0xE0B0
を始めとした Cascadia でだけうまく表示されるグリフを Migu に移植するそして効果なし!
Nerd Fonts の font-patcher で Migu にパッチしてみる
フォントが使い物にならなくなった
Migu のチャーミングな部分を M+に移植
縦横比の違いから縦長に...
font-merger がパッチするグリフのみ narrow 幅にしてみる
おしい!右よりフォントが残念
完璧な Migu の完成!
To Be Continued...