Fira Mono と M+ FONTS を合成して等幅和文フォントを作る (2回目)
前回から行間をちょっとだけ広げ、レギュラーとボールドを同時生成するためにスクリプトを2つに分けた。FontForege のスクリプトって環境変数拾えないのかな…。
#!/bin/sh -e FONTFORGE=/opt/local/bin/fontforge tempfile=`mktemp -t $$`.pe trap "rm $tempfile" EXIT set -- Regular Bold for f { case $f in Regular) weight_jp="レギュラー" ;; Bold ) weight_jp="ボールド" ;; esac sed -f /dev/fd/0 $HOME/share/fontforge/firaplus.pe.in >$tempfile <<! /@HOME@/s||$HOME|g /@WEIGHT@/s||$f|g /@WEIGHT_JP@/s||$weight_jp|g ! $FONTFORGE -script $tempfile }
width = 1100 margin = 0 WinAscent = 785 + margin WinDescent = 215 + margin HHeadAscent = 785 + margin HHeadDescent = -215 - margin TypoLineGap = 100 HHeadLineGap = 100 fira = "/usr/local/src/repos/Fira/otf/FiraMono-@WEIGHT@.otf" mx = "/usr/local/src/repos/mplus_outline_fonts/work.d/targets/mplus-\ 2m/@WEIGHT@/mplus-2m-@WEIGHT@.ttf" Open(mx) SelectWorthOutputting() Scale(90) SetWidth(width) if (width >= 1001) SetLBearing((width - 1000)/2,1) endif SetOS2Value("WinAscent", WinAscent) SetOS2Value("WinDescent", WinDescent) SetOS2Value("HHeadAscent", HHeadAscent) SetOS2Value("HHeadDescent", HHeadDescent) SetOS2Value("TypoLineGap", TypoLineGap) SetOS2Value("HHeadLineGap", HHeadLineGap) Open(fira) SetUniqueID(0) SelectWorthOutputting() SetWidth(width/2) if (width >= 1001) SetLBearing(((width - 1000)/2)/2,1) endif SetOS2Value("WinAscent", WinAscent) SetOS2Value("WinDescent", WinDescent) SetOS2Value("HHeadAscent", HHeadAscent) SetOS2Value("HHeadDescent", HHeadDescent) SetOS2Value("TypoLineGap", TypoLineGap) SetOS2Value("HHeadLineGap", HHeadLineGap) MergeFonts(mx) SetFontNames("FiraPlus-@WEIGHT@", \ "Fira Plus", \ "Fira Plus") SetTTFName(0x409, 1, "Fira Plus") SetTTFName(0x409, 2, "@WEIGHT@") SetTTFName(0x409, 4, "Fira Plus") SetTTFName(0x411, 1, "Fira Plus") SetTTFName(0x411, 2, "@WEIGHT_JP@") SetTTFName(0x411, 4, "Fira Plus") Generate("@HOME@/Library/Fonts/" + $fontname + ".otf", "") Quit(0)
ターミナルプレビュ
Fira Plus はグリフ幅 550/1100 で M+ FONTS の分を Fira Mono に合わせるためにスケール 90%。こうしてみるとどっちに合わせるかまた悩む…。
Firefox HTML ソースビューアプレビュ
Fira Plus | M+ 2m Regular |
---|---|
ウェイトが変わっても幅の変動が少ない DejaVu Sans Mono
Fira Mono と M+ FONTS を合成してみて、英語と日本語のバランスはよくなったものの英語部分が DejaVu Sans Mono と比べるとやっぱりなんだか見づらい。日本語に合わせるために Fira Mono の両サイドベアリングを削ってるせいもあってボールドにするとかなりキツキツな感じ。DejaVu Sans のときはあまりこういう印象がなかったんだけど何でだ?と思って Font Book を眺めていたら DejaVu Sans Mono はボールド時に内側に太くなるのでレギュラーとボールドの文字幅の変動が少ないことに気づいた。
黒はレギュラーのライン、赤はボールドのライン。V と W の間なんかを見てみるとわかりやすい。
Fira Mono
DejaVu Sans Mono
最初から DejaVu Sans Mono と M+ FONTS を合わせればよかったのではないか…。