Chienomi

My Browser Profile ChooserでServoをサポート

開発::util

ServoはMozillaによって生み出され、The Linux Foundationの手に渡ったRustで書かれたウェブブラウザである。

もともとServo自体はレンダリングエンジンだったのだけど、現在はブラウザ仕立てになっている。といっても、Ladybirdと同じように、レンダリングエンジンのショーケースのような意味合いが強そうだ。

現状機能はほとんどないが、先月0.1.0がリリースされた。

そんなServoは--config-dir=というプロファイルディレクトリの指定方法を持っている。 現状、そもそも設定機能自体を持っておらず、履歴もないので指定する意味はないが、きっとそのうち何かしらサポートされるのだろう。

My Browser Profile Chooserでのサポートは、引数のセットを管理するということと、デフォルト引数を定義するという意味が大きい。

Servoとフォント

Servoは「フォントが欠けている場合にグリフが埋まるまでデフォルトのフォントを引いていく」という挙動がない。 このため、ページ側でフォントが指定されていない場合、デフォルトフォント以外は出ないし、ページ側でsans-serifが指定されていて、かつsans-serifの第一が欧文フォントになっていると和文は豆腐になる。

Servoはコマンドラインでユーザースタイルシートの指定ができる。

--user-stylesheet=<file.css>

のでこれでフォールバックするように指定するのだが、組版がかなり怪しくて、フォントによってちゃんと出るものとガタガタになるものがある。そして、圧倒的にガタガタになるものが多い。

試した限り、クレー Oneが綺麗にでるようだったので、スタイルシートはこんな感じになった。

body {
  font-family: "Klee One", sans-serif, "Twemoji", "Droid Sans";
}

欧文フォントをクレー Oneの前にさらに置いてもいいかもしれない。 sans-serifより後にフォントファミリーを指定するフォームは見慣れない人が多いだろうが、グリフが埋められていない場合の処理がないブラウザ向けのフォールバックとしてこのように書く。 この処理がないということは絵文字フォントの参照もしないということなので、絵文字フォントの明示的な指定も必要。

で、Overrideでこんな感じに指定している。

srv: [servoshell, --user-stylesheet=/home/haruka/.config/reasonset/browsers/.servo/user.css, -M]

Servo自体の印象

まず、機能はほとんどなにもない。非常に貧弱である。

Chienomiはそれなりに表示できる。

Chienomi。ぱっと見には良さそう

しかし、Signal & Marginaliaは壊滅的だ。

Signal & Marginalia。壊滅的に見える

これは何が起きているかというと、まずSignal & Marginaliaはフォントが全面的に指定されている。 だが、見出し部分はウェブフォント+sans-serifである。 私の環境のsans-serifの第一フォントは欧文フォントなので、和文は豆腐になっている。

次に、Servoはgridがちゃんとサポートされていない。 このため、サイドバーが下に来るのだが、トップページは本文が短いのでものすごくぐちゃぐちゃになったように見える。

そして、ServoはAVIFがサポートされておらず、アイコンが表示できていない。

なので、この見た目ほどひどい話ではないのだが、gridがちゃんとサポートされていないのは致命的だし、フォントの欠如を埋められないのもかなり痛い。 実用的には、かなり厳しいと思う。

和文で豆腐になるのを絶対に避けたいのであれば

* {
  font-family: "Klee One", sans-serif, "Twemoji", "Droid Sans";
}

code, input, textarea, button {
  font-family: monospace, "Roboto Mono", "Klee One", "Twemoji", "Droid Sans";
}

みたいな感じにしておけば良い。

ただそれでも実用的にはかなり厳しいと思う。