Raspberry Pi OS bookwormの日本語環境を設定するついでに、ベテランラズパイユーザーが秒殺する、あの不思議なフォントの謎に迫ってみた

先日、ラズベリーパイ用の新linux、Raspberry PI OS bookwormが発表されました。

そこでラズパイの日本語設定について説明しようと思い、いろいろ調べていたのですが、たまたまフォント周りの設定で衝撃的な話を見つけたので、今日はそれをレポートしようと思います。

日本語の設定方法もひと通り分かるように書いてありますので、初心者の方も安心してお読みいただけます。衝撃的なだけでなく、実際の設定のヒントになる話も最後に書いてあります。

日本語の入力の設定

えー。この設定は簡単ですし先は長いので、さっさと終わらせましょう(そうでもなかった。詳しくは追記を参照)。ターミナルを開いて、

sudo apt install fcitx5-mozc
im-config -n fcitx5

これでリブートしてください。画面右上に言語入力のアイコンが表示されていれば成功です。

Raspberry Pi Bookworm 言語入力アイコン(fcitx)
fcitx5のインストールで表示されるキーボードアイコン

ただし、wayland環境ではchromiumに日本語入力できない場合があります。この場合chrome://flagsと入力して、ozone-platform-hintをx11に設定してchromeを再起動(relaunchではない)すると、とりあえず入力できるようになるようです。

また、fcitx5利用時に、キーボードが日本語配列とならない場合は、こちらをお試しください。

本日の本題: ラズパイのデフォルト日本語表示はなんか怪しい

では本題に移りましょう。ラズパイをインストールしたことがある日本人なら誰でも見たことがあるこの最初の場面です。

Raspberry PI デフォルトの日本語表示は少しおかしい。
デフォルトのラズパイのデスクトップの日本語表示。漢字が直線的なだけじゃなく、ちょっとおかしな表記もある。
Raspberry Pi のおかしな日本語表記 - 「編集」を拡大。
編集の部分を拡大。ありそうでなさそうな不思議な表記。

なんとなく感じる違和感、ですよね。漢字が全般的に直線的でバランスもおかしいかなというのが第一印象で、よく見たら「編集」の編の字とかの日本語表記がおかしい。これだからLinuxは…とかいう舌打ちが日本全国から聞こえてきそうで、ちょっと悲しくなります。

ただこれも、対処は簡単です。

  • sudo apt install fonts-noto-cjk で東アジアフォントをインストール。
  • 設定 > 外観の設定 > システム で デフォルトフォントのPibotoLt Regular の代わりに Noto Sans CJK JP Regular を指定。

やるのはこれだけで、ログインしなおす(あるいはリブート?)して設定を反映させてください。この設定はラズパイあるあるで、ベテランユーザ(ってなんだろ?)なら、毎回やるので覚えてしまっている方も多いのではないでしょうか。

Raspbeery Pi デフォルトのフォントはPibotoLt Regular
fonts-noto-cjkをインストールして、「外観の設定」でフォントを設定しなおす。デフォルトフォントはPibotoLt Regularだが、これをNoto CJK JP Regularに変更。

変更前と変更後で「吾輩は猫である」を見比べてみました。漢字が多い文章だと、ラズパイのデフォルト日本語表示の問題がさらに目立ちます。

Raspberry PI - デフォルト状態で表示した「吾輩は猫である。」
ラズパイのデフォルトでの日本語表示。漢字が多い文章だと違和感が目立つ。「所」や「今」などの表記がおかしい。
Raspberry PI - システムフォントにNotoを設定した場合の「吾輩は猫である。」
Notoを設定して表示した吾輩は猫である。すっきりした日本語表示で読みやすい。

以上がラズパイの日本語フォント設定の説明となります。

これで終わりとしてもいいのすが、でも、ちょっと気になりませんか?

あの不思議な日本語フォントって何者?

そして、

なぜあんなフォントをラズベリーパイ財団は採用し続けるの?

あるいは、

日本語がちゃんと表示されないラズパイって、
アジアを軽視してない?

とか。

本日はこの日本語フォントの謎に迫ってみたいと思います。

どうしてこんな表示になるの? PibotoLtが悪いのか?

まずはNotoを設定する前のラズパイを調べてみましょう。ここで、デフォルトでシステムに設定されているPibotoLtについての重要な情報が分かります。実は、

PibotoLtは欧文フォント。
なので日本語表示には関係していない。

これは日本語フォントがおかしいというより、日本語表示をどうしていいか分からないので、仕方なく最終手段としてインストールされていたフォントを、フォールバックとして表示させている状態、ということだと思います。

ではフォールバックとして表示されるフォントは何なのでしょうか? Linux(あるいはunixの)フォント関係(とサウンド関係)の話は、何回読んでもすぐに忘れてしまう(あるいは5年周期で話がころころ変わる印象)なので、私は理解するのを諦めていますが、とにかくfontconfigというシステムが絡む話であるらしく、デフォルトフォントは以下のコマンドで調べることができるようです。

pi@raspberrypi:~ $ fc-match sans-serif # これをNotoをインストールする前に実行

DroidSansFallbackFull.ttf: Droid Sans Fallback" "Regular"

このDroid Sans Fallback が、あの不思議な日本語表示の正体です。

PibotoLtを作ったのはなんとあの会社

まずデフォルトで設定されているPibotoLtについてですが、作ったのはこの人(Simon Longさん)です。

Interview with Simon Long of Raspberry Pi about the Raspberry Pi Desktop, UI design, and much more! - pi3g.com
Important background information: this interview was done in early July 2018, so some applications to which Simon refers...

そして、この記事によれば、つまり

PibotoLtを作ったのはラズベリー財団自身

また、

PibotoLtのPiはラズパイのPi

さらには

PibotoLtの元になったのはgoogleのRobotoフォント

つまりPi + Roboto => Piboto

なのです。

いやすごくないですか。PibotoのPiってラズパイのPiですよ。私はこれにすごい衝撃を受けたのですが(もしくは今まで気づかなかった私があほなのか?)この文章の上の方で、なぜ使われるのか分からないと書きましたが、 PibotoLtは財団がラズパイのためにわざわざ作ったフォントですから、使われ続けるのは当たり前ですよね。

PibotoLTのもとになったgoogleのRobotoというフォントなのですが、これはウェブで何かを作ったことがある人なら知らない人はいないだろうというくらい有名なフォントで、googleのサイト以外にも、さまざまなサイトや企業に採用されています。読みやすいことで有名なフォントで、ラズパイに採用されているのもうなずけます。

ちなみに先の英語の記事なのですが、芸術肌のサイモンさんとインタビュワーのマックスさんが回りくどいデザイン論を長々と語り合うのを、そのまま文字起こししたような内容です。口語の英語も私には理解しづらく、読むのを途中で諦めてしまいましたが、フォントに関する部分を引用すると

サイモン: 私が最初に始めたとき、オペレーティング・システムに入れたブランドは、デスクトップにラズベリーを置いているということだけでした。それ以外はLXDEで、それ以外には何もしていませんでした。スティーブ・ジョブズがよく言っていたように、フォントは本当に重要で、タイポグラフィは重要だ。ブランドを象徴するビジュアルイメージを作ろうとするとき、そういうことが大切なんだ。少し気取った言い方をすれば、「人が見るもの」を作るということです。人々が見て、「ああ、これはPiデスクトップだ」と思うようなものを作ることです。

マックス:タイポグラフィといえば、デフォルトで使っているシステムフォントはどんなものですか?

サイモン:「Roboto」というGoogleのパブリックドメインフォントだよ。少し手を加えました。フォントオタクなら興味深い質問ですね。LXDEのデフォルトフォントは醜いので、文字通り初日にほとんど最初にやったことでした。

にしてもdeeplの翻訳すげーな

ジョブズならそういうこと言いそうだな、とか。LXDEのデフォルトフォントがディスられてるなとかと、いろいろ興味深い話です。そこまで思うなら東アジアのフォントのことも少しは考えてくれよ、とも言いたくなりますが、こういう複雑な文字を使う人々がいることが、彼ら西洋人には想像がつかないのだと思います。これについては、 日本人は日本人同士の内輪でものごとを解決しがちで、情報を海外に発信することが少ないのが原因だという批判もあります。

Droid Sans Fallback はあの携帯のために作られた

フォールバック側のフォントのDroidですが、まあ、Android用なんだろうなぁというのは名前で誰でも想像できますよね。

携帯に組み込むために作られたフォントで、サイズが大変に小さいのが特徴です。それを実現するために、漢字を部首のような部品に細かく分けて、それらを合成して表示する手法によりサイズの縮小を実現しているようです。

もともと非力で少容量のストレージしか持たないラズパイに、このフォントを採用したのは妥当という他ないでしょう(名前にもfallbackって書いてあるし)。あの訳の分からないフォントも、中身が分かった上で見て見ると愛着が湧いてくるのが不思議です(笑)

「外観の設定」のフォント変更は本当に必要か?

とはいえ、見栄えが悪いのはやっぱり嫌なので(笑) Notoフォントをインストールしましょう。

sudo apt install fonts-noto-cjk 
sudo reboot # たぶんログインしなおすだけでもOK

今回はあえて「外観の設定」のフォント変更を行わないままで、ログインしなおす(あるいはリブート)してください(すでに「外観の設定」をしてしまった人はPibotoLt Regularに戻してみてください)これだけで、フォールバックのフォントはNotoに設定されます。

pi@raspberrypi:~ $ fc-match sans-serif # 今度はNotoインストール後に実行

NotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular"

このため、「外観の設定」のフォント変更を行わなくても、リブートだけで違和感のない日本語表示になります。

Raspberry Pi - Notoフォントをインストールして、リブートしただけで、違和感のない日本語表示になる。
Notoフォントをインストールして、リブートしただけのデスクトップ画面。「外観の設定」のフォントはPibotoLtのままでも違和感ない日本語表示になっている(「編集」の編の字が正しく表記されていることに注目)。日本語部分はNotoだが、英数字の部分はPibotoLtのまま。

とはいえ「外観の設定」のフォント変更を行った場合と同じというわけではなくて、英数字部分にはPibotoLtが使われています。これは基本の設定がPibotoLtで、それで表示できない日本語部分のフォールバックとしてNotoが補っているからです。

「外観の設定」でNotoを設定した場合が次のスクリーンショットですので、見比べてみてください。英数字の表示が違うのが分かるでしょうか?

Noteフォントをインストールして、さらに「外観の設定」のフォントもNotoに設定した場合。 こちらは英数字の表記もNotoになっていて、ちょっと太字に見える。

で、英数字部分を見比べてみて思うのですが… これって「外観の設定」のフォント変更しないほうが読みやすくないですか? Pibotoはgoogle製のRobotoとほぼ同じであることは先に説明しました。同じgoogle製のNotoではありますが、読みやすさという意味ではRoboto(あるいはPiboto)に叶うはずがないので、Pibotoをそのまま残したほうのスクリーンショットのほうが読みやすく感じるのだと思います。

そういうわけで私は今後「外観の設定」のフォント変更は行わない方向でいくことに決めました。そもそもフォント変更をしても、設定ファイルのアップデートとかでもとに戻りがちな設定なので、デフォルトのままで使えた方が便利だという事情もあります。

まとめ

  • PibotoLtはラズパイ専用にラズパイ財団が作ったフォントで、有名なgoogleのRobotoから派生したもの。名前の由来は Pi + Roboto => Piboto。
  • Pibotoは欧文フォントで、日本語表示ができない。代わりに使われるのがDroid Sans Fallbackというフォントで、これがあの独特の日本語表示の原因。
  • Droid Sans Fallbackは漢字を部首ごとに分解して収録した、サイズが非常に小さいフォント。見た目はあれだが、とても優秀なフォントで、ラズパイに採用されているのは妥当。
  • fonts-noto-cjkをインストーした後、「外観の設定」のフォント変更を行わないほうが、英数字部分にPibotoLtが使われて読みやすいので、「外観の設定」は変更はしないほうがむしろいいかもしれない。

いや、実は前からあの独特のフォントが気になってしょうがなくて、今回の調査で疑問が解消してスッキリしました(笑)

前回のポストではbullseyeからbookwormへのラズパイOSのアップグレードについて説明しましたが、新たにクリーンインストールする初心者の方も多いと思うので、次回もこのようなラズパイの設定で役立ちそうな情報を共有していきたいと思います。

本サイトではSoqAlbumというファイル転送サービスを開発しています。これは、だれでもどこでも1分で、準備なしアカウントなしインストールなしで送れるファイル転送サービスで、ラズパイの新OS bookwormでもブラウザ一本ですぐに利用できます。ラズパイでnearby shareやairdropのようなファイル転送サービスをお探しの方は、一度お試しください。

Get Started With SoqAlbum
SoqAlbum instantly links your smartphone and your PC with a simple QR code operation, allowing direct file exchange betw...

先の記事では、SoqAlbumが前回のアップグレード作業でどう役立ったのかを解説しています。

追記: fcitx5利用時にキーボード配列が日本語に設定されない場合

Raspberry Piの設定のローカライゼーションを試す

ラズパイの 「メインメニュー」 > 「設定」 > 「Raspberry Piの設定」 で ローカライゼーション タブを選択後、ロケールとキーボードを、日本語に指定してください。

注意1: この設定で一時的に日本語キーボードが設定された場合でも、ログアウトしてログインしなおすと、設定が元に戻ってしまう場合があります。

そのような場合は、次の「fcitx5の設定で、日本語キーボードを指定する」をお試しください。

注意2: sudo権限がないユーザー(デフォルトユーザーではなく、後から手動で追加したユーザー等)では、「Raspberry Piの設定」がうまく働かない場合があるようです。

この場合は、次の「fcitx5の設定で、日本語キーボードを指定する」と、さらにその下の「sudo権限がないユーザーで、wayfireでの日本語キーボードを設定する」をお試しください。

注意1-2の意味がよく分からない場合は、以下の設定をすべて行っていただいて構いません。特に副作用はないと思われます。

fcitx5の設定で、日本語キーボードを指定する

まずはfcitxの設定画面を開きます。

  • 上部パネル内の日本語入力アイコンを右クリック、fcitxの設定を開く。

「キーボード – 英語(US)」となっている場合には、これを「キーボード – 日本語」に入れ替えます。

  • 「キーボード – 英語(US)」をダブルクリックして消去。
  • 右側から「キーボード – 日本語」を移動。
  • mozcとの順番を上下の矢印を使って入れ替える。
  • 「OK」で設定を有効化(レイアウト変更を促されるのでYESで許可)
FCITX(IME)の設定画面。「キーボード - 英語(US)」とある部分を、「キーボード - 日本語」に入れ替えます。
FCITX(IME)の設定画面。「キーボード – 英語(US)」とある部分を、「キーボード – 日本語」に入れ替えます。
FCITX(IME)の設定を変更した後、「OK」で設定を反映する。
FCITX(IME)の設定を変更した後、「OK」で設定を反映する。

sudo権限がないユーザーで、wayfireでの日本語キーボードを設定する

最初に触れた「Raspberry Piの設定」メニューですが、sudo権限がないユーザー(デフォルトユーザーではなく、後から手動で追加したユーザー等)では実行に失敗することがあるようです。

wayland環境(wayfire)を利用の場合は、手っ取り早くターミナルで~/.config/wayfire.iniを書き換えてください。

# 以下はwaylandを利用していることが前提の設定です(X11では無意味です)

cp -p ~/.config/wayfire.ini ~/.config/wayfire.ini.bk # バックアップを取りたい場合
nano ~/.config/wayfire.ini

下の方の[input]部分を次のように書き換える。

[input]
xkb_model = pc105
xkb_layout = jp
xkb_variant =

X11環境では、上の「fcitx5の設定で、日本語キーボードを指定する」だけでうまくいくのではないかと思います。

昔の知識のままだと、これはちょっと思いつきませんね。日本語設定は簡単だといいましたが、やはり難しいです。

コメント

タイトルとURLをコピーしました