WebKitが公開しているSafari Technology Previewの最新版に、文字の見え方を細かく決めるCSSの追加がまとまって並んでいた。先行版のリリースノートは地味な項目の羅列になりがちだが、今回は日本語の組版に直接関わるものが混じっていて目に留まった。正式版に入る前の段階とはいえ、どこへ向かっているかは読み取れる。
ひとつはルビの張り出しを扱う ruby-overhang というプロパティだ。ルビは親文字より横に長くなることがあり、既定でははみ出した分が隣の文字に少しかぶる。指定できる値はこれまで、ブラウザの判断に任せる auto と、はみ出しを一切許さない none の二つだった。リリースノートによると、ここに spaces という値のサポートが加わり、張り出してよい相手を隣り合う空白や約物に限る、という中間的な指定ができるようになった。none は spaces の別名という扱いに変わっている。MDNのリファレンスでも、このプロパティの形式的な構文はすでに auto と spaces の二つで書かれていて、仕様側で進んでいた整理が実装に降りてきた形になる。
あわせて white-space-trim も入った。これは white-space を構成するプロパティのひとつで、要素の前後や内側に残る空白を捨てるかどうかを指定する。値は discard-before、discard-after、discard-inner を組み合わせて使う。テンプレートの改行やインデントがそのまま余白として出てしまう場面を、HTMLの書き方を詰めて回避するのではなく、CSS側で処理できるようにするものだ。MDNの white-space のページには、この構成プロパティはまだどのブラウザにも実装されていない、という注記が残っている。先行版に限った話とはいえ、実装が一つ出てきたことになる。
ほかにも、下線の位置をずらせる text-decoration-inset、箇条書きの記号そのものに content を指定できるようになった ::marker、要素の内側での折り返し方を扱う wrap-inside が並んでいる。修正の側にも、::selection に指定した text-decoration が描画されない問題や、直交する書字方向の子要素を持つブロックの幅がつぶれる問題が挙がっている。どれも派手さはないが、縦組みや細かな文字詰めを一度でも触ったことがあれば思い当たる類の話だ。
いま使うというより、頭の隅に置く段階
ここで挙げたものはSafariの先行版に入った段階で、正式版や他のブラウザで使えるかどうかはこれからの話になる。中小企業のサイトで来週から使う、という性質のものではない。ただ、ルビや余白の詰めは、これまで全角スペースの調整やJavaScriptでしのいできた領域でもある。ブラウザ側で素直に扱える方向へ仕様が動いていることを知っておくと、次に組版で困ったときに探す場所が一つ増える。リリースノートは項目ごとに短くまとまっているので、気になる分野だけ拾い読みしておくのでも十分だろう。













