Re: 簡便化字間クラスのUnicode への拡張、および問題点

先に書いた簡便化字間クラスを Unicode に拡張する可能性について考えました。条件は下農さんが考えてくれたものをベースにしています。

先に結論を言ってしまうと、Unicode に拡張における主な課題は下の二点のように考えられます。
・アルファベットとの間にアキを要求する文字(仮名漢字)、および仮名漢字との間にアキを要求する文字(例えばアルファベット)、をどこまで広げるかを決める
・B / C (もしくは元の cl-05/06/07)の定義には必要なアキ(値は例えば:なし、上流、下流、両方)を示すプロパティが必要


木田
–––––––––
簡便化字間クラスのUnicode への拡張

まず「普通の全角」を定義する
East Asian Width = W/F(全角)
Decomposition Type != <vertical> or <small>


A: 前に空間を必要とする約物:始め括弧類の拡張
普通の全角かつ General Category = Ps (Open_Punctuation: an opening punctuation mark (of a pair))

議論
・この条件に外れる cl-01 文字が二つあります。クラス見直しの議論の際に、独自のコードポイントが必要ではないかとの議論になった「左シングル引用符」と「左ダブル引用符」です。これらは U+2018, U+201C ということになっていますが、これらのコードポイントは和文書体であってもプロポーショナルで実装されています。それは当然のことで、これらは英文で頻繁に使われる文字ですから、これらが全角になってしまうと、英文を作るのに使い物にならないフォントになってしまいます。現状の和文書体の実装を追認すると、U+2018/201C は cl-01 から外れます。
・この条件で新規に下二つの文字が加わります。どちらも全角で A の中に含めて問題がなさそうです。
〈	U+2329	LEFT-POINTING ANGLE BRACKET
〚	U+301A	LEFT WHITE SQUARE BRACKET


B: 後ろに空間を必要とする約物:終わり括弧類と句読点の拡張
普通の全角かつ
General Category = Pe (cl-02: Close_Punctuation: a closing punctuation mark (of a pair))
または
PropList に Terminal_Punctuation がある (cl-06, 07)

議論
・cl-01 と同様に、この条件に外れる cl-01 文字が二つあります。クラス見直しの議論の際に、独自のコードポイントが必要ではないかとの議論になった「右シングル引用符」と「右ダブル引用符」、 U+2018, U+201C です。cl-01 と全く同じ議論が当てはまります。
・この条件で新規に下三つの文字が加わります。どちらも全角で B の中に含めて問題がなさそうです。
〉 U+232A RIGHT-POINTING ANGLE BRACKET
〛 U+301B RIGHT WHITE SQUARE BRACKET
〞 U+301E DOUBLE PRIME QUOTATION MARK(終わりダブルミニュートに類似)
・上の条件で区切り約物 cl-04 と中点類 cl-05 の全角コロン、セミコロンが混入します。これらはどれも句読点と同様に文を区切る役割があり、約物の役割としては同一というわけです。cl-06, 07 を独特にしているのはアキの必要量だけだと考えられますので、これらを見分けるには、アキの必要量を示す属性が Unicode に必要なことになります。
・cl-02, cl-06, cl-07 を分離したい場合、General Category = Pe だけにすれば cl-02。PropList has Terminal_Punctuation で cl-06/07。cl-06 / cl-07 を分離するには PropList に Sentence_Terminal が含まれているかどうかで見分けることができますが、上で述べたように cl-04 / cl-05 が混入します。


C: 両側に空間を必要とする約物:中点類の拡張
普通の全角かつ General Category = Po (Other_Punctuation) かつ
PropList に Hypen がある(中点)
または
PropList に Terminal_Punctuation がある(全角コロン、セミコロン)

議論
・漏れる文字も新たな文字もないのですが、B で述べたように上の全角コロン、セミコロンを捕まえる条件で cl-04 区切り約物、cl-05/06 句読点も捕まってしまいます。見分けるにはアキの必要量を示す属性が Unicode に必要です。


D: そのものが空間な約物:和字間隔
これは一文字ですので簡単。U+2000 決め打ちです。


E: アルファベットとの間に空間を必要とする文字 = 仮名や漢字
アルファベットとの間に空間を要求する文字たち。どう決めるかによってクラスを定義する条件が異なってきますが、ざっくりとは PropList に Ideographic があるかどうか、Script = Han、および細かい調節、になりそうです。全て全角文字です。

主な論点は:
・漢字と交換して使われる記号をどうするか。これらを入れる場合には、文字コード決めうちの例外となります。例外はない方が良いのですが、敏先生との会話によると〇と〓は入れたほうが良さそう。〇 は数字の十や百などと入れ替わります。〓 は漢字のないことを示すことが多い。〃 〆 単独が多い。〼 は絵文字的なのでベタ?〽 も絵文字的、でしょうか。
〃 U+3003 DITTO MARK
〆 U+3006 IDEOGRAPHIC CLOSING MARK
〇 U+3007 IDEOGRAPHIC NUMBER ZERO
〓 U+3013 GETA MARK
〼 U+303C MASU MARK
〽 U+303D PART ALTERNATION MARK
・偏や旁のブロックをどうするか。これらはほぼ文の中では使われず、文中でで使われる場合には周りの文字と紛らわしくないように引用符付きでしょうから、記号と同じ扱い、ベタでしょうかね。
・契丹文字、西夏文字など全角かつ ideographic なものをどうするか。これは日本語文の中で使われることはごく稀でしょうから、どちらでも良いのだと思います。Script=Han で除外できます。


F: 漢字類との間に空間を必要とする外国語文字
漢字類との間に自動的に空きを作る文字たち。ラテンアルファベットだけに絞るか、他の言語の音を表す文字(かつ全角でないもの)を全て含めるか。漢字とアラビア文字やデヴァナガリやギリシャ文字が隣あった時に空間は必要でしょうか? どう決めるかによってクラスを定義する条件が異なってきます。


G: 残り全て = どの文字ともベタ
上のどれでもないもの。全ての文字とベタ組です。記号で ABCD に含まれるもの以外、および言語の音を表す文字で  EF に含まれるもの以外、全てです。

––––––––––––––––––––

Received on Sunday, 4 April 2021 11:31:00 UTC