Re: 和欧文間の空き or Segment Break Transformation Rules

私の案の「和文文字の約物と欧文文字との間での改行を無視する」という規則の追加は、句読点で改行を入れれば間違いないということになるので、理解しやすいものだと思いますが、それでも仕様が複雑になる懸念は理解できます。しかし、

> Richard のコメントにもある通り「英字の前後では改行しない」が一番覚えやすくて、間違えにくいと思っています。それが「文章構造的に自然な位置で改行できる」を目指すことよりも重要だと思います。

文章構造的に自然な位置で改行できることと、覚えやすくて間違えにくいこととは、両立しないものでしょうか? むしろ、文章構造的に自然な位置で改行できなかったら、間違いが多発することになるかと思います。

仕様を覚えやすくシンプルにするのであれば、前のメール <https://lists.w3.org/Archives/Public/public-i18n-japanese/2020AprJun/0239.html>に書いたように、行末だけを見るTeX方式のほうが現状のCSSドラフト仕様よりも優れています。「英字の前後では改行しない」ではなくて「英字の後では改行しない」ようにすれば、余計な空白が入ることを防げます。

TeX方式では片方にだけ空白が入りアンバランスになるケース:

This example tests
日本語のテキスト
in English text.
↓
This example tests 日本語のテキストin English text.

このような場合も、空白を入れたいなら改行は英字の後になるように直せばすみます:

This example tests
日本語のテキスト in
English text.
↓
This example tests 日本語のテキスト in English text.

あるいはHTMLマークアップによっても空白が入ることになるでしょう:


This example tests
<span lang=“ja”>日本語のテキスト</span>
in English text.
↓
This example tests <span lang=“ja”>日本語のテキスト</span> in English text.


したがって、行末だけを見る TeX 方式でもそれほど困ることはないと思います。

このTeX方式を CSS Text 3 の Segment Break Transformation Rules <https://drafts.csswg.org/css-text-3/#line-break-transform> に取り入れるには、その2番目の規則
Otherwise, if both the characters before and after the segment break belong to the space-discarding character set, then the segment break is removed.(改行の前と後ろの両方の文字ともスペース破棄文字セットに含まれる文字なら改行を削除)
を次のように直すとよいでしょう:
Otherwise, if the characters before the segment break belongs to the space-discarding character set, then the segment break is removed.(改行の前の文字がスペース破棄文字セットに属するならば改行を削除)

これで仕様がよりシンプルで覚えやすく、しかも文章構造的に自然な位置で改行できるようになります。
またこの方式で改行を扱うTeXの日本語組版が30年以上の実績があって普及しているということも考慮するべきでないかと思います。
TeXユーザーやエキスパートの意見を聞きたいところです。

まとめ:
CSSでの改行の扱い(Segment Break Transformation Rules)をどうするか、私たちには3つの選択肢があります:

現状のドラフト仕様: 改行の前と後ろの両方とも和文文字なら改行を無視、それ以外はスペースに
修正案 <https://lists.w3.org/Archives/Public/public-i18n-japanese/2020AprJun/0232.html>: 改行の前と後ろの両方とも和文文字なら、あるいは改行の前か後ろのどちらかが和文約物か和文空白なら改行を無視、それ以外はスペースに
TeX方式: 改行の前が和文文字なら改行を無視、それ以外はスペースに

私がよいと思う順番は、修正案 > TeX方式 > 現状のドラフト仕様 です。
皆様の意見はいかがでしょうか?

--
村上 真雄 (MURAKAMI Shinyu)
murakami@vivliostyle.org


> On 2020/05/12, at 13:21, Koji Ishii <kojii@chromium.org> wrote:
> 
> 2020年5月12日(火) 12:31 Shinyu Murakami <murakami@vivliostyle.org <mailto:murakami@vivliostyle.org>>:
> 私のこの提案は、簡単に言うと、和文文字の約物と欧文文字との間での改行をスペースに変換しないで削除する規則を追加するというものです。
> 皆様の意見も聞いたうえで、CSS Text 3への提案としたいと思います。
> 
> 個人的には賛成できません。 とてもいいアイデアだと思います。いろいろ出ている案の中で、正直一番心惹かれます。が、私の考えは
> 覚えやすい、理解しやすい、が私にとっては最重要です。どれだけ工夫しても「なぜここには空白が入らないのに、ここには入ってしまうの?」という疑問は必ず出てきます。これに簡単に答えられて、簡単に記憶できることが重要だと思っています。
> 他のアイデアとの線引が難しい。なぜこのアイデアは採用して、他のアイデアは採用しないのか。英字で始まる文をサポートするなら、前の行がこの文字で終わった時にも空白を削除するべきだ、という広がりが想定されます。
> CSS WG では、一つの Unicode プロパティを使用して、複数のプロパティの組み合わせは避ける、という原則で合意しています。これは Writing Modes の UAX#50 の時に決められた原則で、組み合わせが必要なら、Unicode に依頼して新しい合成プロパティを作ってもらうべきだ、という考えに拠ります。また、実装側としても、文字の多いシンプルなページでは、Unicode プロパティの計算がひとつあたり1%程度の時間を消費しますので、利便を受けないユーザーがCPU・バッテリーのコストを補って余りあるか、というと、そこまでは行かないように感じます。
> Richard のコメントにもある通り「英字の前後では改行しない」が一番覚えやすくて、間違えにくいと思っています。それが「文章構造的に自然な位置で改行できる」を目指すことよりも重要だと思います。

Received on Tuesday, 12 May 2020 07:09:15 UTC