Ubuntu日和

【第33回】フォントと日本語入力の、ホントの話(Wayland編)

今回の話を要約するとこのようなスクリーンショットになる

 前回の記事はUbuntuでのフォントと日本語入力の話であったが、今回はWaylandでのフォントと日本語入力の問題について取り上げる。

Waylandとはなにか

 GUIアプリケーションに最低限必要なものは何かというと、キーボードやマウスなどの各種ポインティングデバイスやその他さまざまなデバイスから入力された情報を、各アプリケーションに渡す機能だ。これをベースに、次は各ウィンドウの描画はどうするのか、フォントや日本語入力はどうかという話になってくる。

 この仕組みをディスプレイサーバーという。ディスプレイサーバーを実現するためには、複数のソフトウェアが連携しなくてはならない。そのために用意されたプロトコルのうち、Unix/Linuxで広く使われていたのが、X Window Systemだ。以後Xと略すが、Twitterの新名称と紛らわしいので気をつけてほしい。今回はTwitter(旧名称)のではない。少し前まではこんなことを気にしなくてもよかったというのに。こちとら40年近い歴史があるのだ。

 それはさておき、正確には現在X Window SystemのX11というプロトコルが広く使用されている。11はバージョンで、1987年9月15日にリリースされている。実装はX.Orgだ。

 Xは現代のハードウェアや要求(セキュリティなど)とは合わなくなってきたので、Xに代わるディスプレイサーバープロトコルとして登場したのがWaylandだ。

 WaylandはWaylandコンポジターというサーバーが中核となる。カーネルとやり取りする機能と、各種クライアントと通信する機能を担う。通信するということはプロトコルを用いるということである。Waylandコンポジターの実装はたくさんあり、UbuntuではGNOMEのMutterがその役割を担っている。

 世の中すべてのアプリケーションがWaylandに対応している(Waylandクライアントになれる)といいのだが、なかなかそうもいかない。Xにしか対応しないアプリケーションがたくさんあり、それらはもちろんWaylandでは動作しない。それだと困ってしまうので、XwaylandというWaylandクライアントになりXサーバーにもなるサーバーも存在している。これのおかげで、ユーザーはWayland対応アプリケーションかX対応アプリケーションかを意識する必要がない。もちろん両方に対応しているものも多いのだが。

 Ubuntuでは21.04からWaylandがデフォルトになっている。ということは、これから書くことは多くのUbuntuユーザーに当てはまることだ。

 なおWaylandがデフォルトではあるものの、ログイン時にXも選択できる。この選択できる候補をセッションといい、XセッションやWaylandセッションといったりする。

Ubuntu(Wayland)かUbuntu on Xorgかを選択できる

フォントの問題

 結論から先に述べれば、フォントの問題ではなくXwaylandの問題だ。

 高解像度でサイズが小さいディスプレイでは「設定」-「ディスプレイ」-「任意倍率のスケーリング」を有効にし、「サイズ調整」で「125%」や「150%」などに設定すると読みやすくなる。しかしこの設定を施すと、Xwaylandで動作しているアプリケーションの文字がボケる。

任意倍率のスケーリングの設定

 FirefoxはデフォルトではXwaylandで動作しているが、Waylandネイティブで動作させることもできる。というわけで、両者のスクリーンショットを比較してみよう。

Xwaylandで動作しているFirefox。文字がボケている
Waylandネイティブで動作しているFirefox。文字のボケがない

 ずいぶん前にバグ報告されているので、修正を期待したいところだ。

日本語入力の問題はMozcのバージョン

 前回の記事にもあるとおり、UbuntuのリポジトリにあるMozcのバージョンは古い。このことにより、XとWaylandで候補ウィンドウの表示に差が出ている。

 Xセッションではこのように用例が表示されている。

用例が表示されている

 しかしWaylandセッションでは表示されない。

用例は表示されず、変換候補のみが表示されている

 この問題は、IBusからFcitx5に変更するか、Mozcのバージョンを上げることによって対処できる。

最新版MozcをWaylandセッションで動作させたところ。用例が表示されているが、入力した「会う」の色が変更されてない。2つ前のスクリーンショットと見比べてみよう

 Mozcをビルドした上、Qt5の設定を変更しないと候補ウィンドウが正しい位置に表示されないので、難易度は高めだ。

 IBusではなくFcitx5をインストールするという選択肢もある。切り替えは簡単で、次のコマンドを実行する。

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

 再起動し、ログインするとFcitx5が起動しているはずだ。

Fcitx5を使用するという手もある

 Fcitx5にはInput Method PanelというGNOME Shell拡張機能があり、こちらをインストールするとよりよい。

Input Method Panel拡張機能をインストールすると、たとえばテーマの色と合うといったメリットがある

ChromiumのWaylandサポート状況

 実際にWaylandセッションでUbuntuを使用していると、あまり大きな問題を感じない。あえて問題点を挙げるとしたら、ChromiumのWaylandサポート状況がよくないことだ。

 Chromiumは、Googleが開発しているWebブラウザで、Google ChromeやMicrosoft Edgeなどのベースとなっていることはすでにご存知であろう。またElectronというフレームワークの基礎になっており、こちらはMicrosoft Visual Studio Codeなどで採用されている。

 Chromiumには各種OSの抽象化レイヤーがあり(これ自体は珍しくない)、Wayland対応はそちらで行なっている。名称はOzoneだ。このドキュメントを読み進めていくと、現在はIgaliaという企業が開発していることが分かる。確かにGoogleはWaylandサポートを必要としている場面がまったくない。

 前述のとおりWaylandはプロトコルであり、日本語入力のためのプロトコルも存在する。「text input」というそっけない名称で、現在正式にサポートされているのはtext input v1text input v3だ。

 ここまで来たら推測できそうだが、UbuntuというかGNOMEではv3のみのサポートとなるものの、Chromiumはv1のみのサポートだ。ということはWaylandネイティブでChromiumを起動すると日本語入力が行なえない。従ってXwaylandでの起動が必須となるが、前述のとおり表示倍率によっては文字がボケる。

 もちろんIssue 1039161として登録されており、開発も進んでいるが、いまだ取り込まれるまでには至っていない。

最初のスクリーンショットを再掲しよう。文字がボケているところを見逃さないでおこう

 Wayland関連はなかなかに一筋縄では行かないところがあるが、Chromiumにtext input v3サポートが入り、それが各種ブラウザやElectronで使用できるようになったら、実用に向かって大きな峠を超えたことになるのではなかろうかと筆者は考える。