Vivliostyleの開発状況をOnline.tex 2020で報告

はじめに

だいぶ報告が遅れてしまいましたが、去る11月21日、オンラインで開催された「Online.tex 2020」で、Vivliostyle Pubの開発状況について報告しました。この日のスライドを下記で公開しています。Vivliostyle Pubのデモを実際に公開の場でおこなったのは、この時が初めてだったと思います。

実績あるTexコミュニティの主催だけあって、大変歯ごたえのあるフィードバックがいただけました。あらためて感謝いたします。

とはいえ、ライブということもあって、とっさに的確な回答ができず申し訳ありませんでした。そこで、あらためて代表の村上と協議した上で回答することにします。この日のフィードバックは、下記のようなものでした。

1. 行頭インデントが消えてしまっている

A text document created with a double return code to separate paragraphs

お恥ずかしいことに、これは私のケアレスミスです。本来、VFMでは段落区切り(ハード改行)はリターン2つです。なのに当日私がデモで使った原稿は、1つしか入っていませんでした。この場合GFMなどでは無視するのですが、VFMの場合は段落区切りではないソフト改行と解釈され、HTMLでは <br> に変換されます(右図上)。

そのために改行はされたものの、段落の区切りではないので行頭はインデントはされませんでした。段落区切りをリターン2つに修正したスクリーンショットをご覧ください(右図下) 。

2. ルビ文字のサイズが大きすぎる

この問題、じつは以前から指摘されていましたが、この機会にIssueとして登録しました。

簡単に説明しましょう。元来 Vivliostyle はブラウザの補完を目的とするpolyfill(ポリフィル)の一種です。つまり、多くの機能はブラウザにまかせ、そこで実装されていない、たとえばページネーション等の機能を自前で実装しているわけです。

このルビ文字の組版も同様で、Vivliostyleではなくブラウザ(Chrome)のレンダリング結果になります。ここで、もともとChromeでは最小文字サイズのデフォルト値は10pxです。ところが、CSSの指定によってはルビ文字のサイズがChromeの最小文字サイズを上回ってしまうため、結果としてルビが大きくレンダリングされてしまうのです(下図上)。

Typesetting results with the default minimum font size (10px) in Chrome

対処法として、Chromeの設定で最小文字サイズを0pxにすると、CSSの指定どおりにレンダリングされます(下図下)。

ちょっと脇道に逸れますが、よくみるとこのスクリーンショットのルビ組版は、ルビが親文字よりはみ出した場合、親文字に掛けるよう処理するJLReq 3.3.8 通りではないことに気付きでしょうか。じつは、Vivliostyle はページネーションのためのW3C仕様の実装も十分にできていません。その結果、細部ではしばしばルールどおりに組版できないのが実情なのです。図らずもこのルビ組版は、そんなVivliostyleの開発状況を示す一例と言えるかもしれません。

3. テーブル中のテキストにルビが使えないか

実際にテーブルの中でルビを指定してみたところ、ルビの指定に使うパイプ文字 | が、セルの区切りとして解釈されてしまいました。VFMのバグですね。これについてIssue登録しました(現在、熱心な討論がつづいているので、興味のある方はぜひ覗いてみて下さい)。

ただし、この現象を回避する方法があります。VFMは生のHTMLをそのままパースしますので、HTMLでルビを指定すればよいのです。もともと、MarkdownはHTMLの簡易記法です。だから簡易記法で書けないことは本来の記法で書けばよいという思想からきた実装とも言えます。

なお、この件について当日私は、以前から登録されているIssue 図表キャプション内で他の記法が使えない #35と同様の問題で、ある要素の中で別の要素をネストできないと説明をしましたが、これはまた別の問題であり間違いです。お詫びして取り消します。

4. フォーカスが最初のページに戻ってしまう

はい、確かに現状は好ましくない動作であり、既に Issue として登録されています。

5. エディタのカーソル位置が、プレビュー画面で表示されるとよい

確かに。これも既に ver. 1 の実装要件を定めた「Vivliostyle Pubv1 要件仕様 (WIP)」に盛り込まれており、実装する予定です。

こうしてまとめると、図らずも Vivliostyle Pub の開発がまだまだ初期段階であることを示すような事例ばかりです。とくに組版について積み残しが多いことがお分かりいただけると思います。もちろん、これで良いわけがありません。Online.tex 2020への参加により、そうした現状をあらためて認識させられました。感謝すると共に、これらの課題を克服する決意を新たにしているところです。