ciguwerao

<< 前の記事 | main | 次の記事 >>

2017/02/25の記録:Linux Mint 18.1 Cinnamonのフォント設定(その2)

この前の続き。

表題にはLinux Mint 18.1 Cinnamonと書いたが、それに限らずそれなりに多くの環境で使えるはず。ただし、毎度のことながらその有効範囲がどの程度なのかは、僕は知らない。

この前はCinnamonを使う上でのデフォルトフォントをCinnamonが用意してくれているGUIの仕組みであるところの「メニュー>設定>フォント」を使って設定しなおして、さしあたりの問題を解決した。

さしあたりの問題は解決したものの、不満がひとつあって、それはそのやり方だと、下のパネルで使われているフォントを変えることができない点。

せっかくウインドウなどで使われるフォントを設定しても、パネルと一緒にできないと、デスクトップ環境としてはちぐはぐで冴えない。

より根本的な部分でのフォントの優先順位の設定をいじる必要があると思っていた。

が、そのやり方がよくわからず、例えばこれはDebian LXDEについてのものだが2016/03/28の記録で紹介した
/etc/fonts/conf.d/
の中の

  • 40-nonlatin.conf
  • 45-latin.conf
  • 60-latin.conf
  • 65-nonlatin.conf

などをいじる方法を試してみたのだが、これでは特に状況に変化を与えられなかった。

ネットで "linux mint font priority setting" で検索してみたら、次のようなページが見つかった。

これらのページでは、
ホーム/.config/fontconfig/fonts.conf
という書類を(場合によっては自分で作って)いじることを教えてくれている。

実はこの書類は、Debian LXDEやLubuntuではすでに作ってある。先週くらいにそれをそのままLinux Mint Cinnamonの機械にも移植してみたのだが、思うように機能してくれなくて、この環境ではダメなのか、と放棄していた書類だった。

これこれのフォントはセリフですよ、これこれはサンセリフですよ、と書いて、その下でセリフ・サンセリフ・モノスペースのそれぞれについてフォントの順位付けをするような書類。

この書類は、Debian用にいつかどこかで教えてもらって試してみたものなのだが、その時その作業のメモをとっておかなかったので、いつどこで教わったのかも、その結果うまくいったのか否かも、もう忘れてしまっていた。
(さっき手元にあるLubuntuを確認してみたら、Lubuntuでは機能してないことがわかった)

それで、あまり乗り気はしなかったがせっかくだからビバ!Linuxさんの紹介してくださっている内容をそのままコピーして、インストールしていないフォントの部分だけを削除して試してみた。

意外にもうまくいった。

どうやら、環境に合わないのは書類自体ではなくて、記述の仕方だったようだ。

ビバ!Linux さんの書類を見ると僕が前に試した書類とは書いてあることが違う。

上の方に書いてあるのは例えば "serif" という文字列を探して、それがあったら "Takao P明朝" をそこに当てはめる、といった内容だと思われる。同様の内容がunix.stackexchange.comの方にも書いてある。

下の方に書いてあることの意味はよくわからない。

そこで、僕はとりあえずセリフとサンスとモノでフォントの優先順位の指定さえできればいいので、よくわからない下の方の記述は削除して、次のような内容だけを使うことにした。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

    <match target="pattern">
        <test qual="any" name="family">
            <string>serif</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Playfair Display</string>
            <string>Liberation Serif</string>
            <string>TakaoExMincho</string>
        </edit>
    </match>
 
    <match target="pattern">
        <test qual="any" name="family">
            <string>sans-serif</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Noto Sans CJK JP</string>
            <string>VL PGothic</string>
        </edit>
    </match>

    <match target="pattern">
        <test qual="any" name="family">
            <string>monospace</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Noto Sans Mono CJK JP</string>
            <string>VL Gothic</string>
        </edit>
    </match>

</fontconfig>

それぞれの字体について複数のフォント名を書いておくのは、トップに置いたフォントがカバーしてない文字を二番目以下が補うようにするため。

セリフで言えばPlayfair Displayはラテン文字やキリル文字はおさえていたはずだが、タカオに入ってない文字を十分におさえていたか多少不安だったので、Liberationを補佐に置いておいた。そしてその2つに入っていない日本語をタカオで受ける。

その点、サンスとモノについては、両者にカバー範囲の違いはそんなにありそうでもないが、両方書いておいて、気分によって上下入れ替えれば楽だと思って2つ書いておいた。

フォント名の記述は、スペースが入るか否かなどで悩むことがあって、書き換える都度調べるのは面倒なので。

この書類でこう設定してしまえば、各アプリケーションでのフォントの指定は(もしそれができるのであれば、だが)具体的なフォント名は書かずにserifかsans (-serif) かmono (space) かだけ指定しておけば、この書類に従ってフォントが選ばれる。

この書類を書き換えれば、全部のアプリケーションにその変更が反映される。

つまりフォントがこの書類で一元管理できるわけで、大変便利だ。

というわけで、この前やった「メニュー>設定>フォント」でも、OperaやFirefox等でも、そのように設定しなおした。

なお、この
ホーム/.config/fontconfig/fonts.conf
は個人設定の書類だが、上掲のunix.stackexchange.comのページや
/etc/fonts/fonts.conf
という書類の記述によると、
/etc/fonts/local.conf
という書類を作って同様の内容を書いておけば、システムの設定として使えるらしい。

最後にもう二点ひとつメモ。【

ひとつ目。

うまく機能しているか否かはこのブログのフォントの指定を一時的にserifだけにして、Firefoxでどう表示されるか確認する、というやり方で判断した。

Linux Mint Cinnamonでは、ローマ字はPlayfair Display、日本語はTakaoExMinchoという、期待通りの表示になった。

しかし、Lubuntuで同じことをすると、日本語もローマ字も全てTakaoExMinchoになる。

TakaoExMinchoを試しにVL Gothicに書き換えてみたらちゃんとVL Gothicになったので、書類が効いていないわけではないのだが、Linux Mint Cinnamonと違う結果になるのはなぜだか、よくわからない。

ふたつ目。

Linux MintのFirefoxだと、今書いたように思い通りになるのだが、Operaだとローマ字はPlayfair Displayになるが日本語は、なぜかサンセリフの方のNoto Sansになる。

TakaoExMinchoをトップに持ってくればちゃんとそれになる、つまりこの書類がオペラに効かないわけではないのだが、もちろんローマ字もTakaoになる。

昔のオペラはサイトのcssで指定したフォントの、最初のやつしか使ってくれない、という特徴があったのだが、それは最近のバージョンでは解消されている。

しかし、パソコンの方のフォント設定で同じことが起こるとは。

理由はよくわからない。

== 訂正 ==

ひとつ目のメモとして書いたLubuntuの件は、確認不足に過ぎませんでした。LubuntuのFirefoxの設定で、デフォルトのフォントとしてTakaoExMinchoが選んであり、それを上に書いたようにSerifと直すのを怠ったままテストしたため、Linux Mintと違う結果になっただけでした。

Operaの方は、解決策があるのかどうか、まだわかりません。

== 02/28追記 ==

記事本文では
ホーム/.config/fontconfig/fonts.conf
という書類を使ったフォント設定について扱っているわけですが、この書類は本文中にもあるようにDebian (Jessie) でも使っています。

Debianで僕がもともと使っていたこの書類には例えば次の様な記述がありました。(長くなるのでセリフに関する部分だけを抜き書きします。他の字体についてもフォント名以外同様の記述です)

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Playfair Display</family>
    <default><family>serif</family></default>
  </alias>
  <alias>
    <family>TakaoExMincho</family>
    <default><family>serif</family></default>
  </alias>
  <alias>
    <family>TakaoPMincho</family>
    <default><family>serif</family></default>
  </alias>

  <alias>
    <family>serif</family>
    <prefer>
      <family>Playfair Display</family>
      <family>TakaoExMincho</family>
      <family>TakaoPMincho</family>
    </prefer>
  </alias>
</fontconfig>

この上半分は、それぞれのフォントがどの字体か(ここではセリフ)を記述したもので、本文でも紹介した

  • /etc/fonts/conf.d/40-nonlatin.conf
  • /etc/fonts/conf.d/45-latin.conf

という書類にすでに同様の記述がある場合は必要ないと思われます。

下半分はそれぞれの字体(ここではセリフ)について、優先順位を記述したもので、

  • /etc/fonts/conf.d/60-latin.conf
  • /etc/fonts/conf.d/65-nonlatin.conf

に記述された順番と別の順番にしたい場合や、これらの書類に記述されていないフォントに高い優先順位をつけたい場合に使うものと思われます。

これらの記述は、なぜかはわかりませんが、本文にも書いたようにLinux MintやLubuntuでは機能しないようです。

しかし、Debianでは機能します。

ただし、Debianでも、これもなぜかはわかりませんが、TakaoやIPA、VL Gothic等の日本語フォントであれば、それぞれの字体についてトップに置いたものがちゃんとブラウザ等のアプリケーションで使われるのですが、上に書いたPlayfair Displayや、もっとメジャーなTimes New RomanやGeorgiaなどを記述しておいても、欧文やローマ字用のフォントとして使ってもらえず、その下に書いた日本語フォントが使われてしまいます。

この理由については、僕の環境が日本語環境であることが関係しているかも、ととりあえず推測するくらいで、よくわかりません。

一方本文で書いたような記述の仕方をすれば、Debianでも、欧文フォントも含めた優先順位の指定として有効に機能します。

それでDebianの機械でもそのような記述に改めておいたのですが、上述の挙動の理由がよくわからないので、どうもしっくり来ません。

記述の内容として、本文で書いたような記述はやや強引な感じがするのに対し、Debianの機械でもともとしていた記述はそれに比べると穏やかな印象なので、どちらかといえば後者を使いたい気分なのですが、欧文やローマ字は欧文フォント、かな漢字は日本語フォント、と使い分けたいので、やむを得ません。

なぜ欧文には欧文フォントを使いたいかというと、フランス語等に使われるアクサン付きラテン文字は日本語フォントでカバーしていないことが多く、他は日本語フォントなのにアクサン付き文字だけ別の欧文フォントが使われるくらいなら、いっそラテン文字は全て欧文フォントを使ってくれたほうが美しい、というのがひとつ。それに加えて、こちらがより重要なのですが、キリル文字はカバーされているものの全角になってしまい、ひと単語程度ならともかく文章としてはとても読めたものではない、という点があります。

ただし、この点VL (P)Gothicは優秀で、アクサンも出ますしキリル文字も半角で出ます。これが僕がVLを偏愛する理由で、VL (P)Minchoもできてくれないものか、と、切に願っているのですが、難しいのでしょうか。
(アクサンの方はTakaoも出るので、その点はいいのですが、キリル文字はやっぱり全角です。Macでつかうヒラギノは、日本語は美しいと思いますが、この点を残念に思っています。最近どうなってるかについては、実はよく確認していませんが)

以上、特に役立つ情報でもありませんがメモしておきます。

========
| Linux関連 | 02:56 | comments(0) | trackbacks(0) |

スポンサーサイト

| - | 02:56 | - | - |
コメント
コメントする








この記事のトラックバックURL
http://ciguwerao.jugem.jp/trackback/578
トラックバック
ciguwerao
CALENDAR
S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< August 2017 >>
LATEST ENTRIES
SELECTED ENTRIES
CATEGORIES
ARCHIVES
SPONSORED LINKS
qrcode