リーダブルコードなどの本で使われているフォントを買いました.
最近買ったフォント情報です pic.twitter.com/k56io4FLAO
— えびちゃん (@rsk0315_h4x) 2019年5月11日
TheSansMono Condensed と呼ばれるフォントで,LucasFonts というサイトから購入することができます. 作者は Windows で使われがちな等幅フォントの Consolas をデザインした人です.
このフォントを知ったのは何年か前だったんですが,お値段がわりと高いので当時は購入をためらっていました. 太さが 8 種類用意されていて,各々に italic かどうかの 2 種類があり,合計 16 個購入すると 364 ユーロになるんですが,冷静に考えてそんなに使わないので,太さ 3 種類の非 italic のみを買うことにしました. 同じ family で太さなどが異なるフォントを複数買うと割引が発生するシステムらしくて*1,60+34+29 = 123 ユーロになりました. PayPal を通して支払いを済ませて 10 分ほど待つと DL できる状態になりました*2.
TeX で使いたい
これを TeX で使えるようにしたくて,一日ほど格闘したので,そのメモをします.
まず,このフォントは CFF-flavoured の OpenType 形式で,TeX では直接扱えない形式なので,変換をします.
cfftot1 TheSansMonoCd-W5Regular.otf TheSansMonoCd-W5Regular.pfb
また,他に必要になるファイルも作っていきます.
otftotfm -e ec.enc --verbose -n thsmcr-t1 TheSansMonoCd-W5Regular.otf
ここで -e
オプションはエンコーディングを指定していて,ec.enc
は T1 エンコーディングに対応するものらしいです.
さらに -fss02
などのオプションを指定するとデフォルト以外のグリフを利用することもできます.数字の高さが変わったり,g
, y
, G
, Q
などの字形が変わったりします.
-f
の引数にできる文字列は以下のコマンドの出力からわかります.
otfinfo -f TheSansMonoCd-W5Regular.otf
また,どのようなグリフが存在しているかは以下のコマンドの出力からわかります.
otfinfo -g TheSansMonoCd-W5Regular.otf | less
.enc
ファイルの中身と otfinfo -g
の出力を見比べながら,自分の好きなグリフを指定する .enc
を作成し,それを渡すことで自由度が増しそうです.望ましい方法ではない気もします.書き方は,ファイルを開くとエスパーできると思います.
^
は上段,*
や ~
は中段にいてほしかったんですが,-fss02
を指定するとそれらすべてが中段に行ってしまって困ったので,thsmc-t1.enc
を作ってそこに書きました.
で,otftotfm
を実行するとカレントディレクトリに a_nyanya.enc
のようなファイルが作成されます.
nyanya
の部分はたぶんハッシュで,中身によって変わります.
cid-x.map
に,次のような内容を追記します.dvipdfmx
に読まれるやつのはず?
thscr-t1--base a_nyanya.enc TheSansMonoCd-W5Regular.pfb
フォントのインストール作業はざっくりこれで終わりです.
記号もいい感じに欲しくなるので,TS1 エンコーディングについても同様の処理を行います.
q-ts1.enc
や q-ts1-uni.enc
の内容を参考にしながら書き換えたりして,いい感じのファイルを用意します.
場所がわからなければ以下のコマンドを叩きます.
kpsewhich q-ts1.enc
直接次のように開くこともできます.
emacs $(kpsewhich q-ts1.enc)
うまくできたら,thsmc.sty
を作って以下のようなことを書きます.
\DeclareFontFamily{T1}{thsmc}{} \DeclareFontShape{T1}{thsmc}{m}{n}{<-> thsmcr-t1}{} \DeclareFontShape{T1}{thsmc}{bx}{n}{<-> thsmcb-t1}{} \DeclareFontFamily{TS1}{thsmc}{} \DeclareFontShape{TS1}{thsmc}{m}{n}{<-> thsmcr-ts1}{} \DeclareFontShape{TS1}{thsmc}{bx}{n}{<-> thsmcb-ts1}{} \renewcommand*{\ttdefault}{thsmc}
\usepackage{thsmc}
などをするとフォントを変更することができます.
listings
を使うときは以下のような設定をしておくと見栄えがよくなります.
\usepackage{textcomp} \lstset{ keepspaces=true, flexiblecolumns=true, showstringspaces=false, upquote=true, basicstyle=\ttfamily, }
詳しくはドキュメントを見るとよいです.
texdoc listings
listings
より minted
の方がいいという話も聞くのでそうするかもしれません.
2019/05/12 追記
minted すごい(ソースコードのコメント中に TeX の数式を書けたりする) pic.twitter.com/qXJ4HdKq5X
— えびちゃん (@rsk0315_h4x) May 12, 2019
italic のフォントも買いました && minted
を使ってみました.
おわり
にゃん.どこに需要があるのかわからない記事でした.