LilyPondのフォントにまつわるあれこれ


EmmentalerとCentury Schoolbookの組み合わせはエロいとかそういうことを書きたいわけじゃなくって。

備忘録的な感じです。ちなみにLilyPondとはテキストファイルから楽譜を生成する浄書ソフトです。

基本の話は公式リファレンスへ。

使用できるフォントの一覧を見(てgrepす)る

参考: http://lilypond.org/doc/v2.18/Documentation/notation/fonts.html

ターミナル上で、

lilypond -dshow-available-fonts x

をすればLilyPondで使用可能なフォントの一覧が出力されます。

family ヒラギノ角ゴ Pro
 ヒラギノ角ゴ Pro,Hiragino Kaku Gothic Pro,Hiragino Kaku Gothic Pro W3,ヒラギノ角ゴ Pro W3:style=W3,Regular
…

LilyPondでフォント名を指定する際は、上の出力でHiragino Kaku Gothic Pro W3とかヒラギノ角ゴ Pro W3にあたる所を使うと良いと思います。

さて、インストールされているフォントの数が多いと、出力が膨大になるので、grepとかで検索をかけたくなると思います。しかし、どうやら出力がstderrになってるようで、そのまま| grepしてもうまくいきません。そこでstderrをstdoutに変えてやる必要があります。具体的にはこうです。

lilypond -dshow-available-fonts x 2>&1 | grep ヒラギノ

2>&1の部分がstderrをstdoutにして出力してくれるおまじないです。これで思う存分grepできますね。ちなみに私のおすすめはpecoです。便利。

(本題)macOSでユーザーインストールのフォントが認識されない

LilyPondはデフォルトのフォントセットが欧文フォントなので、日本ユーザーは特にフォント変更をする場面が多いと思います。しかし、macOS環境ではどうやら~/Library/Fonts以下のフォントをデフォルトでは認識してくれないようです。

通常では、先のリストアップコマンドの出力の最後が以下のようになってるはずです。

Config dir: /usr/share/fonts
Config dir: /Library/Fonts
Config dir: /System/Library/Fonts
Config dir: /Users/***/.local/share/fonts
Config dir: /Users/***/.fonts
Font dir: /usr/share/fonts
Font dir: /Library/Fonts
Font dir: /System/Library/Fonts
Font dir: /Users/***/.local/share/fonts
Font dir: /Users/***/.fonts

確かに見つかりませんね。

さて、~/Library/Fontsのフォントを認識させるためには、fontconfigの設定ファイルをいじる必要があります。LilyPondは専用のfontconfigがバンドルされていて、設定ファイルもそちらのものを編集しなければいけません。(Homebrewとかで入れた環境だとどうなるんでしょう?以下の話は公式サイトからバイナリを落としてきた時の話です。)

場所はLilyPondをインストールしたディレクトリからetc/fonts/local.confです。(fonts.confは編集しないでくださいって書いてありました。)

以下のように追記します。

local.conf
 <fontconfig>
 <selectfont>
  <rejectfont>
  <pattern>
   <patelt name="scalable"><bool>false</bool></patelt>
  </pattern>
  </rejectfont>
 </selectfont>

 <cachedir>~/.lilypond-fonts.cache-2</cachedir>
+<dir>~/Library/Fonts</dir>
 </fontconfig>

これでもう一回lilypond -dshow-available-fonts xするとフォントが認識されることを確認できるはずです。

余談

218行目。

share/lilypond/current/scm/font.scm
                (font-encoding . latin1) ;; ugh.

多言語対応の道は長い。