Eric Muller からの提案

皆さま、大変お待たせしました。10/19 に Eric Muller が送ってくれた提案の翻訳です。原文を JLReq の GitHub に入れましたのでそちらも参照してください。
https://github.com/w3c/jlreq/issues/242 <https://github.com/w3c/jlreq/issues/242>

私が覚えている限り今までに議論されたことのないアイディアがいくつか含まれていて、議論の価値のある提案に思えます。

用語のメモ
この議論において Eric は “grapheme cluster occurrence” という専門的な用語を使っています。ざっくり言って、これは一つか複数の Unicode 文字で表される不可分一塊のインクの塊です。もっとざっくり言うとこれは我々にとって通常の意味での「文字」で、カーソルはその単位で動きます。

日本語においては <仮名>+<combining 濁音文字> の塊が、複数の文字(Unicode 文字)で一つの文字(“grapheme cluster”)を表しているケースです。このように「文字」という言葉には階層性があり文脈によって曖昧になるので、Eric は “grapheme cluster occurrence” と言う用語を使っています。長いので翻訳ではこれを GCO と省略することにします。Unicode 文字単位の議論でない限り、GCO = 文字だと思って構いません。逆に Eric の文で character という用語が出てくる場合にはそれは Unicode 文字のことですから、Unicode 文字、と訳すことにします。

また glue = 糊、という用語が使われています。これは字間と読み直して大丈夫でしょう。おそらく字間というもの自体を議論の対象にするときに、文字の間ではなくて、糊といった物に例えるとやりやすいということかのなと思います。後に glue settings = 糊の設定、という言葉も出てきますが、これは字間の調整の流儀と読み換えても良いかもしれません。JLREq Appendix D のテーブル 3, 4, 5 に、JLReq の方法、JIS X 4051 で使われている方法、書籍で使われる方法、での字間の詰めかたが示されていますが、そのような流儀のことです。Eric はその字間調整の流儀も自由に切り替えられるようにしようと提案しています。

では以下が本文です。


–––––––––––––––––––––
これは実装する立場としての私達の視点です。内容はまだ荒いですが、不明な点などがあれば遠慮なく教えてください。

Eric.
---

文字クラスは二つの目的に使われます:行の折り返し可能位置を見つけること、そして字間を決めることです。

行の折り返しは Unicode により適切に定義されています。問題が残っているとしても、UAX14 (Unicode の付属文章の一つ)や CLDR (Unicode を適切に実装するためのデータ集)による言語ごとの最適化の調整をいくらか行えば良い程度です。ゆえ、行の折り返しについてはここでは議論しません。

(木田:Unicode の定義による行の折り返しと、JLReq の比較が必要)

---
字間調整の考え方の一つの方法は、それぞれの文字の両側に伸び縮みする「糊」を想定することです。この「糊」は自然な長さ(JLReq Appendix B)をもち、行長の調整を行うために長さを変えることができます(Appendix D 詰める処理、Appendix E 伸ばす処理)。

それぞれの「糊」の幅は、マークアップによって明示的に指定することもできますが、ほとんどの場合はクラスの繋がりを以て決定することができます。つまり、左側の「糊」の幅は、その文字の左に来るもののクラスとその GCO のクラスで、同様に右側の「糊」の幅は、その GCO のクラスと右側にくるもののクラスを使って決めることができます。

一つの GCO の左(または右)に来るものは、別の GCO かもしれません。その場合は、「左に来るもの」はその GCO のクラスです。しかし、左側に GCO がない場合や、 GCO 以外の視覚要素である可能性もあります。つまり:
パラグラフの最初や最後
折り返しの最初や最後
違なる bidi レベル(このクラスの目的は行長測定の際に bidi 文字の再配列を含めないように)
margin, border, padding などで 0 でないアキが設定された箱の中
そのような箱の外
インラインオブジェクト(例えばイメージ)
縦中横
割注の外側や内側

GCO のクラスはマークアップによって明示的に指定することもできます、が、多くの場合はその GCO を構成する Unicode 文字からクラスを決定します(その場合、同じ GCO はどれも同じクラスとなります)。そしてそのクラスはその GCO を構成する Unicode 文字にアサインされたクラスにより決定することができます。通常は GCO のベース Unicode 文字のクラスがその GCO のクラスです。しかし、その他の文字がクラスを乗っ取ることもあります。例えば:<U+00A0 NO-BREAK SPACE> は一つのクラスで <U+00A0 U+0301 COMBINING ACUTE> は別のクラスかもしれません(木田:ここ、意味がわからなかったので、Eric に聞きます)。

いよいよ Unicode 文字のクラスについてです。以下は、全 Unicode 文字をどのようにクラスに振り分けるかの提案です。殆どの場合は JLReq に沿っていますが、いくつかの違いがあります。

まだ文字が割り当てられていない Unicode コードポイントに対しては、将来このような文字が割り付けられるに違いない、という予想に基づいて振り分けています
JLReq は全角文字の存在を全く無視しています。これによって、多くの曖昧な文字が生まれています。例えば U+0041 LATIN CAPITAL LETTER A は欧文文字 cl-27 かもしれませんし、また表意文字のクラス cl-19 かもしれません。現実には著者達は U+0041 とU+FF21 を正確に使うことによって文字クラスを使い分けています。
提案では、横組みに使われるクラスと縦組みで使われるクラスを分けています
分離不可文字のクラスを分けています(以下に説明)
InDesign による開き/閉じ括弧クラス(角、丸、等)の改良を採用しています

提案はまた、UAX50 の縦書きプロパティを参照しています。字間クラスと密接な関わりがあるからです。

---
曖昧な文字

殆どの文字は文脈に関係なく曖昧さなく一つのクラスに属しますが、いくつかの日本語組版で一般に使われる文字は本質的に曖昧です。

    U+2018 ‘ LEFT SINGLE QUOTATION MARK
    U+201C “ LEFT DOUBLE QUOTATION MARK
    U+00AB « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
    U+2019 ’ RIGHT SINGLE QUOTATION MARK
    U+201D ” RIGHT DOUBLE QUOTATION MARK
    U+00BB » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
    U+2010 ‐ HYPHEN
    U+2013 – EN DASH
    U+203C ‼ DOUBLE EXCLAMATION MARK
    U+2047 ⁇ DOUBLE QUESTION MARK
    U+2028 ⁈ QUESTION EXCLAMATION MARK
    U+2049 ⁉ EXCLAMATION QUESTION MARK
    U+00B7 · MIDDLE DOT
    U+2022 • BULLET
    U+2014 — EM DASH
    U+2026 … HORIZONTAL ELLIPSIS
    U+2025 ‥ TWO DOT LEADER

この曖昧性は、指定されたロケールを使って解決することもできますし、文脈から推定したスクリプトを使って解決することもできます。

ロケールを使うことの問題点は、文書を作る人が正しくロケールを指定してくれるとは限らないことです(全く指定しないか、または句読点に注意深く設定しない(?))。

スクリプトを使う方法の利点は、文章を作る人からの手助け(つまり著者が言語をちゃんと設定してくれること)が不要なことです。OpenType のレイアウトエンジンもスクリプトを必要とするので、スクリプトは OpenType 処理のために既に得ています。

---
分離禁止文字

現在(JLREq では)、全ての分離禁止文字は一つのクラスにひとまとめになっており、脚注において、実際には同じ文字が続く場合のみが分離禁止である、と説明されています。分離禁止文字はそれぞれが別のクラスである方が良いでしょう。そうすることで脚注が不要になりますし、分離禁止文字それぞれに異なる字間を定義することができます。(ask eric それが嬉しい具体的なケースは?)

---
論理的 vs 視覚的順番

実際的な「糊」の定義は視覚的な順番に基づいていることをはっきり説明しておくべきでしょう。それゆえ、左、右、といった用語を使いました。

(木田:アラビア語など見かけの順番が英語と逆になる場合があるので、logical order / visual order という概念があります。なので、Unicode において何かを正確に定義する場合、使われている順番の概念が visual なのか logical なのかを意識しておく必要があります)

---
クラスを Unicode property として定義すること

現実的な視点で、私は、縦書きプロパティがそうであるように、字間クラスもプロパティとして Unicode 文字データベースの一部であるべきだと考えています。一番の理由はそれが一番信頼のおける定義の方法で、かつ Unicode と同期できるからです。プロパティを加えることは Unicode にとっては、縦書きプロパティで見たように、比較的容易い作業です。(実際、最初の UAX50 のドラフトは字間クラスを含んでいました)。

そのような Unicode プロパティは単に(組版を決定するための)第一歩に過ぎないことを確認しておくべきでしょう。最初の方に述べたように、「糊」に影響を与えるマークアップは常に使えるようになっているべきです。そのため、この Unicode プロパティは完全である必要はありません。しかし、アクセスしやすく(?)安定である必要があります。

========
クラスと「糊」の設定

文字クラスは最終的な見かけを決定するための一つの要素でしかありません。そこに「糊」の設定も関わってきます。文字クラスの設計に影響を与える可能性もありますので、そのことについて少し触れておく価値があるでしょう。

---
「糊」の設定と行揃え

テキストを揃えるとき(本文では一般的ですが)、プログラムは「糊」を任意の幅に広げる必要があるかもしれません。例えば、二文字しか含まれないパラグラフに text-align-last: justify が指定された場合を考えてみましょう。「糊」は(行長-2em)の幅である必要があります。このように長い「糊」は異常な状況の結果であることもありますが、例えば字取り処理のように意図的な場合もあります。これを許すために、ほぼ全ての「糊」はいくらでも大きくなれるようにすることが望ましいでしょう。

---
「糊」の設定は主に本文のためにある

JLReq は三種類の「糊」の設定を説明しています(Appendix D 表3, 4, 5 に、JLReq のデフォルトと、JIS と、book の方法が示されています。これらは行を縮める場合にのみ違っていますが、理論的には自然な長さや行を広げる場合にも違なる設定を考えることが可能です)。これらの設定は主に本文のために考えられているように見え、見出しなどには適切ではありません。例えば、デフォルトの方法ではパラグラフ(行)先頭と開き括弧の間は 0 幅(ベタ)、閉じ括弧とパラグラフの終わりの間に 0.5em を指定しています。もしこの設定がタイトルに使われたとすると、もしタイトルが括弧で始まり括弧で終わりまた二つの行にわたっていて中央揃えになっていたら、非対称さが気に障るかもしれません。

この設定が本文だけに適用されることを説明し、また、それがどのような場合に適切でないかについて説明する価値があるでしょう。また他の場合に適切な設定を含めるとさらに良いでしょう。私の思いつく一番重要なケースは、見出し、ルビの親文字、ルビ自体、です。

---
「糊」の設定の交換

ここまでの議論は、文字からクラスを決めること(CSS など体裁を決めるシステムがクラスを明示的に指定できる余地を残しつつ)についてでした。クラスを決めることはもちろん最終結果に至る一つの要素でしかありません。もう一つの要素はそのクラスから生じる「糊」の大きさです(JLReq Appendix B, D, E)。体裁を決めるシステムがこの「糊」の設定の変更を許すように推奨することは有益でしょう。ドキュメントに対して、いくつかある設定の中から選択したり、または既存の設定を自由に変更できる、といった風にです。

---
字間クラスと CSS text-indent プロパティ

上に示したモデルにおいて、CSS text-indent プロパティは基本的に無条件に定まった大きさを持つ「糊」であって、これがパラグラフの最初の文字の左に来ることになります。実際的な観点で、日本語組版においてはこれを可変にすると有益です。例えば、漢字なら前に 1 em、開き括弧なら 0.5 em です。私はこの先、次のことを推奨するのがベストだと思っています:パラグラフがここで議論されている字間のモデルを使う場合、「糊」はその字間モデルに従い(つまりテーブルによる)text-indent はゼロに設定されること。

========

カラムの説明:
コードポイント
UAX50の縦書きプロパティ
横書きクラス
H ならカラム 5 に書いてあるクラス
ブランクなら漢字(と同じ扱い)
縦書きクラス
V ならカラム 5 に書いてあるクラス
ブランクなら漢字(と同じ扱い)
クラス
A と書いてあれば、もしこのテキストのスクリプトが中国語か日本語(Hans, Hant, Jpan)でないなら、クラスは westernChar

        0x000000 | R  | H | V | unknown
        0x000009 | R  | H | V | tab
        0x00000A | R  | H | V | lineEdge
        0x00000B | R  | H | V | unknown
        0x00000D | R  | H | V | lineEdge
        0x00000E | R  | H | V | unknown
        0x000020 | R  | H     | justifyingSpace
        0x000021 | R  | H     | westernChar
        0x000080 | R  | H | V | unknown
        0x000085 | R  | H | V | lineEdge
        0x000086 | R  | H | V | unknown
        0x0000A0 | R  | H     | justifyingSpace
        0x0000A1 | R  | H     | westernChar
        0x0000A7 | U  | H     | westernChar
        0x0000A8 | R  | H     | westernChar
        0x0000A9 | U  | H     | westernChar
        0x0000AA | R  | H     | westernChar
        0x0000AB | R  | H | V | openingBracket_other
        0x0000AC | R  | H     | westernChar
        0x0000AD | R  | H | V | unknown
        0x0000AE | U  | H     | westernChar
        0x0000AF | R  | H     | westernChar
        0x0000B0 | R  | H     | postfixedAbbrev
        0x0000B1 | U  | H     | westernChar
        0x0000B2 | R  | H     | westernChar
        0x0000BB | R  | H | V | closingBracket_other
        0x0000BC | U  | H     | westernChar
        0x0000BF | R  | H     | westernChar
        0x0000D7 | U  | H     | westernChar
        0x0000D8 | R  | H     | westernChar
        0x0000F7 | U  | H     | westernChar
        0x0000F8 | R  | H     | westernChar
        0x0002EA | U  | H | V | ideographic
        0x0002EC | R  | H     | westernChar
        0x001100 | U  | H | V | ideographic
        0x001200 | R  | H     | westernChar
        0x001401 | U  | H     | westernChar
        0x001680 | R  | H     | westernChar
        0x0018B0 | U  | H     | westernChar
        0x001900 | R  | H     | westernChar
        0x00200B | R  | H | V | transparent
        0x00200D | R  | H | V | unknown
        0x002010 | R  | H | V | hyphen_middlePunctuation
        0x002014 | R  | H     | inseparable_emDash
        0x002016 | U  | H     | westernChar
        0x002017 | R  | H     | westernChar
        0x002018 | R  | H | V | openingBracket_other
        0x002019 | R  | H | V | closingBracket_other          | A
        0x00201A | R  | H     | westernChar
        0x00201C | R  | H | V | openingBracket_other
        0x00201D | R  | H | V | closingBracket_other
        0x00201E | R  | H     | westernChar
        0x002020 | U  | H     | westernChar
        0x002022 | R  | H     | westernChar
        0x002025 | R  | H     | inseparable_twoDotLeader
        0x002026 | R  | H     | inseparable_ellipsis
        0x002027 | R  | H     | westernChar
        0x002028 | R  | H | V | lineEdge
        0x00202A | R  | H | V | unknown
        0x00202F | R  | H     | westernChar
        0x002030 | U  | H | V | postfixedAbbrev
        0x002032 | R  | H | V | postfixedAbbrev
        0x002034 | R  | H     | westernChar
        0x00203B | U  | H | V | ideographic
        0x00203C | U  | H | V | dividingPunctuation
        0x00203D | R  | H     | westernChar
        0x002042 | U  | H     | westernChar
        0x002043 | R  | H     | westernChar
        0x002047 | U  | H | V | dividingPunctuation
        0x00204A | R  | H     | westernChar
        0x002051 | U  | H     | westernChar
        0x002052 | R  | H     | westernChar
        0x00205F | R  | H     | westernChar
        0x002060 | R  | H | V | unknown
        0x002065 | U  | H | V | ideographic
        0x002066 | R  | H | V | unknown
        0x002070 | R  | H     | westernChar
        0x0020AC | R  | H | V | prefixedAbbrev
        0x0020AD | R  | H     | westernChar
        0x0020DD | U  | H     | westernChar
        0x0020E1 | R  | H     | westernChar
        0x0020E2 | U  | H     | westernChar
        0x0020E5 | R  | H     | westernChar
        0x002100 | U  | H | V | ideographic
        0x002102 | R  | H     | westernChar
        0x002103 | U  | H | V | postfixedAbbrev
        0x002104 | U  | H | V | ideographic
        0x002109 | U  | H | V | postfixedAbbrev
        0x00210A | R  | H     | westernChar
        0x00210F | U  | H | V | ideographic
        0x002110 | R  | H     | westernChar
        0x002113 | U  | H | V | postfixedAbbrev
        0x002114 | U  | H | V | ideographic
        0x002115 | R  | H     | westernChar
        0x002116 | U  | H | V | prefixedAbbrev
        0x002117 | U  | H | V | ideographic
        0x002118 | R  | H     | westernChar
        0x00211E | U  | H | V | ideographic
        0x002124 | R  | H     | westernChar
        0x002125 | U  | H | V | ideographic
        0x002126 | R  | H     | westernChar
        0x002127 | U  | H | V | ideographic
        0x002128 | R  | H     | westernChar
        0x002129 | U  | H | V | ideographic
        0x00212A | R  | H     | westernChar
        0x00212E | U  | H | V | ideographic
        0x00212F | R  | H     | westernChar
        0x002135 | U  | H | V | ideographic
        0x002140 | R  | H     | westernChar
        0x002145 | U  | H | V | ideographic
        0x00214B | R  | H     | westernChar
        0x00214C | U  | H | V | ideographic
        0x00214E | R  | H     | westernChar
        0x00214F | U  | H | V | ideographic
        0x00218A | R  | H     | westernChar
        0x00218C | U  | H | V | ideographic
        0x002190 | R  | H | V | ideographic
        0x00221E | U  | H | V | ideographic
        0x00221F | R  | H | V | ideographic
        0x002234 | U  | H | V | ideographic
        0x002236 | R  | H | V | ideographic
        0x002300 | U  | H | V | ideographic
        0x002308 | R  | H | V | ideographic
        0x00230C | U  | H | V | ideographic
        0x002320 | R  | H | V | ideographic
        0x002324 | U  | H | V | ideographic
        0x002329 | Tr | H | V | openingBracket_other
        0x00232A | Tr | H | V | closingBracket_other
        0x00232B | U  | H | V | ideographic
        0x00232C | R  | H | V | ideographic
        0x00237D | U  | H | V | ideographic
        0x00239B | R  | H | V | ideographic
        0x0023BE | U  | H | V | ideographic
        0x0023CE | R  | H | V | ideographic
        0x0023CF | U  | H | V | ideographic
        0x0023D0 | R  | H | V | ideographic
        0x0023D1 | U  | H | V | ideographic
        0x0023DC | R  | H | V | ideographic
        0x0023E2 | U  | H | V | ideographic
        0x002423 | R  | H     | westernChar
        0x002424 | U  | H | V | ideographic
        0x002500 | R  | H     | inseparable_emDash
        0x002580 | R  | H     | westernChar
        0x0025A0 | U  | H | V | ideographic
        0x00261A | R  | H | V | ideographic
        0x002620 | U  | H | V | ideographic
        0x002768 | R  | H     | westernChar
        0x002776 | U  | H | V | ideographic
        0x002794 | R  | H | V | ideographic
        0x002800 | R  | H     | westernChar
        0x002900 | R  | H | V | ideographic
        0x002B12 | U  | H | V | ideographic
        0x002B30 | R  | H | V | ideographic
        0x002B50 | U  | H | V | ideographic
        0x002B5A | R  | H | V | ideographic
        0x002BB8 | U  | H | V | ideographic
        0x002BD2 | R  | H | V | ideographic
        0x002BD3 | U  | H | V | ideographic
        0x002BEC | R  | H | V | ideographic
        0x002BF0 | U  | H | V | ideographic
        0x002C00 | R  | H     | westernChar
        0x002E80 | U  | H | V | ideographic
        0x003000 | U  | H | V | fullSpace
        0x003001 | Tu | H | V | comma_ideo
        0x003002 | Tu | H | V | fullStop_ideo
        0x003003 | U  | H | V | ideographic
        0x003005 | U  | H | V | iterationMark
        0x003006 | U  | H | V | ideographic
        0x003008 | Tr | H | V | openingBracket_other
        0x003009 | Tr | H | V | closingBracket_other
        0x00300A | Tr | H | V | openingBracket_other
        0x00300B | Tr | H | V | closingBracket_other
        0x00300C | Tr | H | V | openingBracket_corner
        0x00300D | Tr | H | V | closingBracket_corner
        0x00300E | Tr | H | V | openingBracket_corner
        0x00300F | Tr | H | V | closingBracket_corner
        0x003010 | Tr | H | V | openingBracket_other
        0x003011 | Tr | H | V | closingBracket_other
        0x003012 | U  | H | V | ideographic
        0x003014 | Tr | H | V | openingBracket_other
        0x003015 | Tr | H | V | closingBracket_other
        0x003016 | Tr | H | V | openingBracket_other
        0x003017 | Tr | H | V | closingBracket_other
        0x003018 | Tr | H | V | openingBracket_other
        0x003019 | Tr | H | V | closingBracket_other
        0x00301A | Tr | H | V | openingBracket_corner
        0x00301B | Tr | H | V | closingBracket_corner
        0x00301C | Tr | H | V | hyphen_other
        0x00301D | Tr | H | V | openingBracket_other
        0x00301E | Tr | H | V | closingBracket_other
        0x003020 | U  | H | V | ideographic
        0x003030 | Tr | H | V | ideographic
        0x003031 | U  | H | V | ideographic
        0x003033 | U  | H | V | inseparable_repeatUpper
        0x003034 | U  | H | V | inseparable_repeatVoiceUpper
        0x003035 | U  | H | V | inseparable_repeatLower
        0x003036 | U  | H | V | ideographic
        0x00303B | U  | H | V | iterationMark
        0x00303C | U  | H | V | ideographic
        0x003040 | U  | H | V | hiragana
        0x003041 | Tu | H | V | smallKana
        0x003042 | U  | H | V | hiragana
        0x003043 | Tu | H | V | smallKana
        0x003044 | U  | H | V | hiragana
        0x003045 | Tu | H | V | smallKana
        0x003046 | U  | H | V | hiragana
        0x003047 | Tu | H | V | smallKana
        0x003048 | U  | H | V | hiragana
        0x003049 | Tu | H | V | smallKana
        0x00304A | U  | H | V | hiragana
        0x003063 | Tu | H | V | smallKana
        0x003064 | U  | H | V | hiragana
        0x003083 | Tu | H | V | smallKana
        0x003084 | U  | H | V | hiragana
        0x003085 | Tu | H | V | smallKana
        0x003086 | U  | H | V | hiragana
        0x003087 | Tu | H | V | smallKana
        0x003088 | U  | H | V | hiragana
        0x00308E | Tu | H | V | smallKana
        0x00308F | U  | H | V | hiragana
        0x003095 | Tu | H | V | smallKana
        0x003097 | U  | H | V | hiragana
        0x00309B | Tu | H | V | hiragana
        0x00309D | U  | H | V | iterationMark
        0x00309F | U  | H | V | hiragana
        0x0030A0 | Tr | H | V | hyphen_katakana
        0x0030A1 | Tu | H | V | smallKana
        0x0030A2 | U  | H | V | katakana
        0x0030A3 | Tu | H | V | smallKana
        0x0030A4 | U  | H | V | katakana
        0x0030A5 | Tu | H | V | smallKana
        0x0030A6 | U  | H | V | katakana
        0x0030A7 | Tu | H | V | smallKana
        0x0030A8 | U  | H | V | katakana
        0x0030A9 | Tu | H | V | smallKana
        0x0030AA | U  | H | V | katakana
        0x0030C3 | Tu | H | V | smallKana
        0x0030C4 | U  | H | V | katakana
        0x0030E3 | Tu | H | V | smallKana
        0x0030E4 | U  | H | V | katakana
        0x0030E5 | Tu | H | V | smallKana
        0x0030E6 | U  | H | V | katakana
        0x0030E7 | Tu | H | V | smallKana
        0x0030E8 | U  | H | V | katakana
        0x0030EE | Tu | H | V | smallKana
        0x0030EF | U  | H | V | katakana
        0x0030F5 | Tu | H | V | smallKana
        0x0030F7 | U  | H | V | katakana
        0x0030FB | U  | H | V | middleDot_middlePunctuation
        0x0030FC | Tr | H | V | prolongedSoundMark
        0x0030FD | U  | H | V | iterationMark
        0x0030FF | U  | H | V | katakana
        0x003100 | U  | H | V | ideographic
        0x003127 | Tu | H | V | ideographic
        0x003128 | U  | H | V | ideographic
        0x0031F0 | Tu | H | V | smallKana
        0x003200 | U  | H | V | ideographic
        0x003300 | Tu | H | V | ideographic
        0x003303 | Tu | H | V | postfixedAbbrev
        0x003304 | Tu | H | V | ideographic
        0x00330D | Tu | H | V | postfixedAbbrev
        0x00330E | Tu | H | V | ideographic
        0x003314 | Tu | H | V | postfixedAbbrev
        0x003315 | Tu | H | V | ideographic
        0x003318 | Tu | H | V | postfixedAbbrev
        0x003319 | Tu | H | V | ideographic
        0x003322 | Tu | H | V | postfixedAbbrev
        0x003324 | Tu | H | V | ideographic
        0x003326 | Tu | H | V | postfixedAbbrev
        0x003328 | Tu | H | V | ideographic
        0x00332B | Tu | H | V | postfixedAbbrev
        0x00332C | Tu | H | V | ideographic
        0x003336 | Tu | H | V | postfixedAbbrev
        0x003337 | Tu | H | V | ideographic
        0x00333B | Tu | H | V | postfixedAbbrev
        0x00333C | Tu | H | V | ideographic
        0x003349 | Tu | H | V | postfixedAbbrev
        0x00334B | Tu | H | V | ideographic
        0x00334D | Tu | H | V | postfixedAbbrev
        0x00334E | Tu | H | V | ideographic
        0x003351 | Tu | H | V | postfixedAbbrev
        0x003352 | Tu | H | V | ideographic
        0x003357 | Tu | H | V | postfixedAbbrev
        0x003358 | U  | H | V | ideographic
        0x003371 | U  | H | V | postfixedAbbrev
        0x00337B | Tu | H | V | ideographic
        0x003380 | U  | H | V | postfixedAbbrev
        0x0033E0 | U  | H | V | ideographic
        0x00A4D0 | R  | H     | westernChar
        0x00A960 | U  | H | V | ideographic
        0x00A980 | R  | H     | westernChar
        0x00AC00 | U  | H | V | ideographic
        0x00D800 | R  | H     | westernChar
        0x00E000 | U  | H | V | ideographic
        0x00FB00 | R  | H     | westernChar
        0x00FE10 | U  | H | V | ideographic
        0x00FE17 | U  | H | V | openingBracket_other
        0x00FE18 | U  | H | V | closingBracket_other
        0x00FE19 | U  | H | V | ideographic
        0x00FE20 | R  | H     | westernChar
        0x00FE30 | U  | H | V | inseparable_twoDotLeaderV
        0x00FE31 | U  | H | V | inseparable_emDashV
        0x00FE32 | U  | H | V | hyphen_middlePunctuation
        0x00FE33 | U  | H | V | ideographic
        0x00FE35 | U  | H | V | openingBracket_round
        0x00FE36 | U  | H | V | closingBracket_round
        0x00FE37 | U  | H | V | openingBracket_other
        0x00FE38 | U  | H | V | closingBracket_other
        0x00FE39 | U  | H | V | openingBracket_other
        0x00FE3A | U  | H | V | closingBracket_other
        0x00FE3B | U  | H | V | openingBracket_other
        0x00FE3C | U  | H | V | closingBracket_other
        0x00FE3D | U  | H | V | openingBracket_other
        0x00FE3E | U  | H | V | closingBracket_other
        0x00FE3F | U  | H | V | openingBracket_other
        0x00FE40 | U  | H | V | closingBracket_other
        0x00FE41 | U  | H | V | openingBracket_corner
        0x00FE42 | U  | H | V | closingBracket_corner
        0x00FE43 | U  | H | V | openingBracket_corner
        0x00FE44 | U  | H | V | closingBracket_corner
        0x00FE45 | U  | H | V | ideographic
        0x00FE47 | U  | H | V | openingBracket_other
        0x00FE48 | U  | H | V | closingBracket_other
        0x00FE49 | R  | H     | westernChar
        0x00FE50 | Tu | H | V | ideographic
        0x00FE53 | U  | H | V | ideographic
        0x00FE58 | R  | H | V | ideographic
        0x00FE59 | Tr | H | V | ideographic
        0x00FE5F | U  | H | V | ideographic
        0x00FE63 | R  | H | V | ideographic
        0x00FE67 | U  | H | V | ideographic
        0x00FE70 | R  | H     | westernChar
        0x00FEFF | R  | H | V | unknown
        0x00FF00 | R  | H     | westernChar
        0x00FF01 | Tu | H | V | dividingPunctuation
        0x00FF02 | U  | H | V | ideographic
        0x00FF03 | U  | H | V | prefixedAbbrev
        0x00FF05 | U  | H | V | postfixedAbbrev
        0x00FF06 | U  | H | V | ideographic
        0x00FF08 | Tr | H | V | openingBracket_round
        0x00FF09 | Tr | H | V | closingBracket_round
        0x00FF0A | U  | H | V | ideographic
        0x00FF0C | Tu | H | V | comma_western
        0x00FF0D | R  | H | V | ideographic
        0x00FF0E | Tu | H | V | fullStop_western
        0x00FF0F | U  | H | V | ideographic
        0x00FF1A | Tr | H | V | middleDot_colon
        0x00FF1C | R  | H | V | ideographic
        0x00FF1F | Tu | H | V | dividingPunctuation
        0x00FF20 | U  | H | V | ideographic
        0x00FF3B | Tr | H | V | openingBracket_other
        0x00FF3C | U  | H | V | ideographic
        0x00FF3D | Tr | H | V | closingBracket_other
        0x00FF3E | U  | H | V | ideographic
        0x00FF3F | Tr | H | V | ideographic
        0x00FF40 | U  | H | V | ideographic
        0x00FF5B | Tr | H | V | openingBracket_other
        0x00FF5C | Tr | H | V | ideographic
        0x00FF5D | Tr | H | V | closingBracket_other
        0x00FF5E | Tr | H | V | ideographic
        0x00FF5F | Tr | H | V | openingBracket_round
        0x00FF60 | Tr | H | V | closingBracket_round
        0x00FF61 | R  | H     | westernChar
        0x00FFE0 | U  | H | V | postfixedAbbrev
        0x00FFE1 | U  | H | V | prefixedAbbrev
        0x00FFE2 | U  | H | V | ideographic
        0x00FFE3 | Tr | H | V | ideographic
        0x00FFE4 | U  | H | V | ideographic
        0x00FFE5 | U  | H | V | prefixedAbbrev
        0x00FFE6 | U  | H | V | ideographic
        0x00FFE8 | R  | H     | westernChar
        0x00FFF0 | U  | H | V | ideographic
        0x00FFF9 | R  | H | V | transparent
        0x00FFFC | U  | H | V | inlineObject
        0x00FFFD | U  | H | V | ideographic
        0x00FFFE | R  | H | V | unknown
        0x010000 | R  | H     | westernChar
        0x010980 | U  | H     | westernChar
        0x0109A0 | R  | H     | westernChar
        0x011580 | U  | H     | westernChar
        0x011600 | R  | H     | westernChar
        0x011A00 | U  | H | V | ideographic
        0x011AB0 | R  | H     | westernChar
        0x013000 | U  | H     | westernChar
        0x013430 | R  | H     | westernChar
        0x014400 | U  | H     | westernChar
        0x014680 | R  | H     | westernChar
        0x016FE0 | U  | H | V | ideographic
        0x018B00 | R  | H     | westernChar
        0x01B000 | U  | H | V | katakana
        0x01B001 | U  | H | V | hiragana
        0x01B130 | R  | H     | westernChar
        0x01B170 | U  | H | V | ideographic
        0x01B300 | R  | H     | westernChar
        0x01D000 | U  | H     | westernChar
        0x01D200 | R  | H     | westernChar
        0x01D2E0 | U  | H | V | ideographic
        0x01D300 | U  | H     | westernChar
        0x01D380 | R  | H     | westernChar
        0x01D800 | U  | H     | westernChar
        0x01DAB0 | R  | H     | westernChar
        0x01F000 | U  | H | V | ideographic
        0x01F200 | Tu | H | V | ideographic
        0x01F202 | U  | H | V | ideographic
        0x01F800 | R  | H | V | ideographic
        0x01F900 | U  | H | V | ideographic
        0x01FA70 | R  | H     | westernChar
        0x020000 | U  | H | V | ideographic
        0x02FFFE | R  | H | V | unknown
        0x030000 | U  | H | V | ideographic
        0x03FFFE | R  | H | V | unknown
        0x040000 | R  | H     | westernChar
        0x0F0000 | U  | H | V | ideographic
        0x0FFFFE | R  | H | V | unknown
        0x100000 | U  | H | V | ideographic
        0x10FFFE | R  | H | V | unknown
        0x110000

===========

Received on Thursday, 29 October 2020 11:44:46 UTC