Ubuntu で Rabbit のフォントを変更する

Ubuntu 12.10 で Rabbit のフォントを変更しようと思って、悪戦苦闘したのでメモっておきます。

まず公式サイトのドキュメントを読んでみます。

例えば,各ページ(タイトルページは含まない)にあるタイトルの 文字の色を変更したい場合は以下のように書きます.

match(Page, HeadLine) do |heads|
  heads.prop_set("foreground", "red")
end

なるほど、わからん…。match() の引数には何が指定できるの…。

ということでパス。

Rabbit のソースの中を漁ってると、lib/rabbit/theme/base/base.rb の中に次のような記述がありました。

@font_family = find_font_family("Rabbit")
@monospace_font_family = find_font_family("Rabbit Monospace")

if windows?
  @font_family ||= find_font_family("MS PGothic")
  @monospace_font_family ||= find_font_family("MS Gothic")
else
  @font_family ||= find_font_family("Hiragino Kaku Gothic Pro")
  @monospace_font_family ||= find_font_family("Osaka-Mono")
  @monospace_font_family ||= find_font_family("Osaka")
end

@font_family ||= find_font_family("Sans")
@monospace_font_family ||= find_font_family("Monospace")

Rabbit → Hiragino Kaku Gothic Pro → Sans の順にフォントを探しているようです(等幅フォントは、Rabbit Monospace → Osaka-Mono → Osaka → Monospace の順)。 OS に Rabbit というフォントがあれば良さそうです。

既存のフォントに別名をつけようと思って、~/.fonts.conf に次のように書いてみました。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Rabbit</family>
    <prefer>
      <family>IPAPMincho</family>
    </prefer>
  </alias>
</fontconfig>

以前はこれでフォントに別名をつけることができたような気がするのですが、効いてくれません。 fc-list でも出てきませんし、LibreOffice で指定しても変わりません。

おまけにこんなメッセージも出力されました。

Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 9: reading configurations from ~/.fonts.conf is deprecated.

どうやら最近は ~/.config/fontconfig/fonts.conf に置くのが良いみたいです。

次に /etc/fonts/conf.d/69-language-selector-ja-jp.conf を見ながら、次のように書いてみました。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern">
        <test qual="any" name="family">
            <string>Rabbit</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>IPAPMincho</string>
        </edit>
    </match>
</fontconfig>

fc-list には出て来ませんが、fc-match では、ちゃんと「IPA P明朝」と出てきました。

% fc-match rabbit
ipam.ttf: "IPA P明朝" "Regular"

LibreOffice でも、フォントの一覧には出てきませんが、Rabbit と指定するとちゃんと明朝体になりました。

ところが、肝心の Rabbit 上では変わりません。どうも find_font_family("Rabbit")nil を返すようです。たぶん fc-list で出力されないのと同じ理由でしょう。

最終的に、次のようなテーマファイルを作ったらうまくいきました。

@font_family = 'Rabbit'
include_theme("clear-blue")

@font_family にフォント名を指定してから、既存のテーマを読み込んでます。

フォント名を直接指定すればいいので、システムに Rabbit という名前のフォントを設定する必要もないです。

@font_family = 'IPAPMincho'
include_theme("clear-blue")

しかしフォント周りは何年たっても良くわからないです…。