国際化文字クラスのTerminal_Punctuation (PropList/binary)からLine_BreakとEAW!=F/W対応

 shimonoです

 これまでspacingを取り去るかどうかについていわゆる和文文字間についてUnicode対応文字クラスを
検討していた[1]ところへ、EAW!=F/Wとの間ではどうするんだ?という話が出て、というので木田さん
といろいろ検討していました(前回のメール)のですが、その中でTerminal_Punctuationを利用して分
類をかけている現状ではクラス間での重複などの要検討点がすでに指摘されています。
 同じく、EAW!=F/Wの文字との間についても定義しようとする場合、A/BAなどに対応する「普通の全角」
以外の文字のセットを取ってきた場合、同様にクラス間で重複する文字がかなり入ってくるために、素
直に受け止められる定義にならなさそうという点が懸念としてありました。(というのが前回のメール

*1 https://github.com/w3c/jlreq/blob/gh-pages/docs/spacing_property/spacing_property.md


 というところで、現在のPeまたはTerminal_PunctuationがあるというAの定義は
https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp?a=%5B%5B%3AGeneral_Category+%3D+Pe%3A%5D%5B%3ATerminal_Punctuation%3A%5D%5D+%26+%5B%5B%3A+East_Asian_Width+%3D+W+%3A%5D+%5B%3A+East_Asian_Width+%3D+F+%3A%5D%5D+%26+%5B%3ADecomposition_Type+%21%3D+vertical+%3A%5D+%26+%5B%3ADecomposition_Type+%21%3D+small+%3A%5D%0D%0A&g=&i=

というセットになり、U+FFXXの「:」や「?」などが入ってきます。というのに対し、PropListのbinary
でなく、UAX #14のLine_Break [2]でclose_punctuationを取ってきた方が素直なのかな?という気がし
始めています。AをPeまたはLine_Break = close_punctuationとすると
https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp?a=%5B%3Aline_break+%3D+close_punctuation%3A%5D+%26+%5B%5B%3A+East_Asian_Width+%3D+W+%3A%5D+%5B%3A+East_Asian_Width+%3D+F+%3A%5D%5D+%26+%5B%3ADecomposition_Type+%21%3D+vertical+%3A%5D+%26+%5B%3ADecomposition_Type+%21%3D+small+%3A%5D%0D%0A&g=&i=

となりJLreqの文字クラスのリストにほぼ一致します。「普通の全角」以外についても、
https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp?a=%5B%3Aclose_punctuation%3A%5D%0D%0A&g=&i=

を見る限り想定内の文字のセットになっていそうです。
# もしかするとGeneral_Categoryでフィルターを入れた方がいいかもしれませんが、、、

*2 https://unicode.org/reports/tr14/


 中点類については同様にするならばLine_break = non_starter (& Po)でしょうか。
https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp?a=%5B%3ALine_Break+%3D+non_starter%3A%5D%26+%5B%3Ageneral_category+%3D+po%3A%5D+%26+%5B%5B%3A+East_Asian_Width+%3D+W+%3A%5D+%5B%3A+East_Asian_Width+%3D+F+%3A%5D%5D+%26+%5B%3ADecomposition_Type+%21%3D+vertical+%3A%5D+%26+%5B%3ADecomposition_Type+%21%3D+small+%3A%5D%0D%0A&g=&i=


 行末泣き別れ禁止などにも文字クラスを利用するという議論もありましたが、改行関連のプロパティー
を利用した方がそちらとも整合性が取りやすいのかな、という気もするところです。
 binaryでなく、そういうプロパティーを持ってくる、というので参照コストが上がって実装で速度低下
の要因になりえる、というのはあるかもしれませんが。。(が、どちらにしてもLine_Breakは参照せざる
を得ない??)


 だいぶ前に行っていた議論の蒸し返し感は多少はあるのですが、とりあえずの議論のとっかかりとして
投げさせてください。

Received on Thursday, 20 October 2022 15:44:53 UTC