Re: 行頭役物

村上です。

text-spacingプロパティの値として space-first を追加してそれをデフォルトとすることを提案したのは5年半前です:
https://github.com/w3c/csswg-drafts/issues/2462

ようやくこの提案が認められて、ブラウザにも実装されようとしていること感慨深いです。
(Vivliostyle <https://github.com/vivliostyle/vivliostyle.js>では、ブラウザのレイアウトの拡張としてtext-spacingのpolyfill的な実装 <https://github.com/vivliostyle/vivliostyle.js/pull/1142>をしたのですが、来年には不要になりそう)

どうして trim-auto (行頭の約物はすべて詰める)ではなくて space-first(折り返し行頭は詰めるが段落先頭の行頭は詰めない)をデフォルトとするかというと、trim-auto をデフォルトにしてしまうと、既存コンテンツとの互換性が問題になるからです。(もしHTML+CSSが普及する前にこの仕様を作ることができていたのであれば trim-auto がデフォルトのほうがよかったでしょう)

上記issueで議論しているのですが、既存の日本語EPUBコンテンツや青空文庫のようなコンテンツでは、段落先頭の括弧類を全角幅のままとして、括弧ではじまらない段落先頭には全角スペースを入れて段落字下げとするという手法が多く使われています。このようなコンテンツにデフォルトで trim-auto が適用されてしまうと、括弧類ではじまる段落が天付きとなってしまい、段落の先頭であることが分かりにくくなってしまいます。

全角スペースではなくて text-indent を使って段落字下げを実現しているコンテンツでも、段落の先頭文字が括弧類かどうかで text-indent が変わるようにマークアップで工夫しているコンテンツもあります。例:

HTMLマークアップ:
<p>通常の段落</p>
<p class="no-indent">「括弧」ではじまる段落</p>

スタイルシート:
p {
    text-indent: 1em;
}
p.no-indent {
    text-indent: 0;
}

このようなコンテンツでも trim-auto がデフォルトになったら意図どおりの結果でなくなります。
そのほか、レイアウトが崩れる影響がでる例として、見出しを目立たせるために【 】のような括弧を使っていて、その括弧を半角幅に詰めたいために -0.5em だけ行頭側にずらして配置しているような場合があります。これも trim-auto がデフォルトになったら、括弧が行頭側に突き出るという意図しない結果になります。


> 関連して、去年のリリースあたりから mac / iOS の html でない部分の日本語レイアウトが大幅に良くなったのですが、その改良の一つが行頭行末括弧の扱い。段落頭、折り返し行頭、双方とも詰めているようです。メモアプリなどで確認できます。


macOS Sonomaになってから、行頭・行末・連続の括弧の詰めの処理がされるようになったことに気がつきました。 trim-auto (行頭の約物はすべて詰める)相当の挙動になっているようです。既存コンテンツへの考慮よりも、これからのユーザーにより最適なものにするという方針なのでしょう。


----
村上 真雄 (MURAKAMI Shinyu)
Vivliostyle Foundation



> 2023/10/17 9:00、木田泰夫 <kida@mac.com>のメール:
> 
> 石井さん、
> 
> 私は行頭が揃わないことがとても気になるので、行頭は必ず詰めてほしい派ですが、複数のスタイルが存続しているからにはそれぞれ理由があるんでしょうね。
> 
>> ①リストの行頭が揃わない(木田さんが以前に気にしておられましたね)
> 
> これですが、行頭字下げの段落スタイルを前提とした方法ではないでしょうか? Webもそうですが、段落行頭を下げるのではない方法がデフォルトの場合、この方法の意味がわかりません。
> 
> 敏先生いかがですか?
> 
> 
> 関連して、去年のリリースあたりから mac / iOS の html でない部分の日本語レイアウトが大幅に良くなったのですが、その改良の一つが行頭行末括弧の扱い。段落頭、折り返し行頭、双方とも詰めているようです。メモアプリなどで確認できます。
> 
> 木田
> 
>> 2023/10/16 21:19、Koji Ishii <kojii@chromium.org>のメール:
>> 
>> 約物の配置方法のプロトタイプをChromiumで実装して試用していて、行頭の扱いについてきになりましたので、ご意見いただけますでしょうか?
>> 
>> 今のCSS仕様のデフォルトでは
>> 段落頭の開き括弧類は全角送り(JLREQ用語で「二分アキ」)
>> 改行後の行頭開き括弧類は半角送り(JLREQ用語で「詰める」)
>> となっていて、これは「既存コンテンツとの互換性のため <https://drafts.csswg.org/css-text-4/#valdef-text-spacing-trim-space-first>」「特にePUBコンテンツにおいて」であると明記されています。
>> 
>> Webでプロトタイプを試用していて、気になったケースが2つほどありました。
>> 
>> ①リストの行頭が揃わない(木田さんが以前に気にしておられましたね)
>> <image.png>
>> 
>> ②一行目と二行目が揃わない
>> <image.png>
>> 
>> E-PUBとWebで最適な既定値が異なる、という問題でしょうか。まぁ、この辺は、スタイルなので、百人に聞いたら百の異なる答えが返ってくる問題なだけなのかもしれませんし、そういうルールだと思えば問題ないとも思えますが、Webの既定値としてどれか一つ選ぶとしたら、この挙動でよいか、ご意見いただけましたら幸いです。よろしくお願いします。
> 

Received on Tuesday, 17 October 2023 07:13:19 UTC