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")
しかしフォント周りは何年たっても良くわからないです…。