20260918 version
JLReqのデジタル版に向けて、JLReq第2版(11 August 2020)が定義している文字クラスを再構成し、連続約物の空き調整のための文字プロパティ、および、和欧文間の空きのための文字プロパティを定義した。目的は、Unicodeを基礎に置く定義を作ること、文字に対して一意に定まる文字のプロパティとすること、および機能ごとに分けることによって実装の実態に合わせることである。以下、連続約物プロパティ、和欧文間プロパティと略す。
Unicodeを基礎とし、またUnicode全体を対象に定義する。 ただし、日本語組版の中での知見が限られる場合、知見が十分ある部分を規定し、それをUnicode全体に外挿するための規則を参考として示す。
文字に対して一意に定まる文字のプロパティとする。文字のレイヤーより上のレベルの指定が必要なレイアウトに関する規則は分けて扱う。 2020年にJLReq TFにおいて文字クラスの見直しを行ない、高レベルの構造に依存する組版機能を別に扱うこととした。それらは各々の組版機能の項で振る舞いを定義する。この切り離しによりクラスを文字に対して一意に定まるプロパティとして定義することが可能になった。下記「除外するJLReq文字クラス」参照。この方針はすでに「簡便な行組版ルール(案)」にも示されている。
機能別にプロパティを定義する。 JLReq第2版において文字クラスは、文字間の空き量(Appendix B)、文字間での分割の可否(Appendix C)、行の調整処理で詰める処理が可能な箇所(Appendix D)、行の調整処理で空ける処理が可能な箇所(Appendix E)、の四つの機能全てを記述できるように設計されている。現実の実装が機能ごとに文字クラスを定義していることを考慮して、この再構成では機能ごとに分割して必要なプロパティを定義する。
上記2、 3により各々のプロパティは大幅に単純化される。
なお、本文書では次のように語を使い分ける。
プレーンテキストでは存在せず、高レベルの構造に依存する組版機能のために定義されているJLReq文字クラスを除外する。これらは各々の組版機能の項で振る舞いを定義する。これらのクラスに属する全ての文字は、存続するクラスに含まれているため、これらのクラスは単に考慮から除外することができる。
- cl-20 合印中の文字
- cl-21 親文字群中の文字(添え字付き)
- cl-22 親文字群中の文字(熟語ルビ以外のルビ付き)
- cl-23 親文字群中の文字(熟語ルビ付き)
- cl-25 単位記号中の文字
- cl-28 割注始め括弧類
- cl-29 割注終わり括弧類
- cl-30 縦中横中の文字
下記cl-24 連数字中の文字は、コンピュータ組版が開発された当時に和文と組み合わせて使用された半角のアラビア数字である。デジタルではこれはフォント依存であり、また半角のアラビア数字は現在ほとんど用いられない。ゆえ、クラス、組版機能共に廃止する。文字コードとしては通常の数字であり、属する文字は全て存続するクラスに含まれる。また、cl-12前置省略記号、cl-13後置省略記号はcl-24連数字中の文字と共に用いられるべきクラスであり、これらを同時に除外する。含まれる文字は、下記に解説する和欧文間プロパティにおいて、数字とℓを除きクラスOに属する。数字とℓはクラスLに属する。
- cl-24 連数字中の文字
- cl-12 前置省略記号
- cl-13 後置省略記号
従って以下のクラスが再構成の考慮対象となる。
- cl-01 始め括弧類
- cl-02 終わり括弧類
- cl-03 ハイフン類
- cl-04 区切り約物
- cl-05 中点類
- cl-06 句点類
- cl-07 読点類
- cl-08 分離禁止文字
- cl-09 繰返し記号
- cl-10 長音記号
- cl-11 小書きの仮名
- cl-14 和字間隔
- cl-15 平仮名
- cl-16 片仮名
- cl-17 等号類
- cl-18 演算記号
- cl-19 漢字等
- cl-26 欧文間隔
- cl-27 欧文用文字
連続約物のための文字プロパティは、以下の4つの値をとる。
クラスB、 A、 BAに属する文字は、デジタルフォントの実装において、Oと隣接する場合に必要な空間がグリフ内部に埋め込まれており、B、 A、 BAと下の表の組み合わせで隣接する場合には、その空間を削除するというレイアウト動作が必要になる。
ほとんどの日本語フォントにおいて、必要な削除量は全幅の1/2であり、下の表はその場合の量を記している。しかし一般にはどの量の空間を削除するのが適切かは書体デザインに依存する。よって、フォントが適切なテーブルを持ち、削除可能量をアプリケーションに伝える方法での実装が期待される(i。e。 chws)。同時に、そのようなテーブルを持たないフォントに対して、全幅の1/2を仮定してレイアウト側で文字間をマイナスにすることなどにより空間を削除する処理が期待される。
| AFTER | B: 前に空間を持つ約物 | A: 後ろに空間を持つ約物 | BA: 両側に空間を持つ約物 | 行末 | |
|---|---|---|---|---|---|
| BEFORE | ( | ) | ・: | ⇥ | |
| 行頭 | 後ろの文字の前から-1/2 | × | 0 | 0 | |
| B: 前に空間を持つ約物 | ( | 後ろの文字の前から-1/2 | 0 | 0 | × |
| A: 後ろに空間を持つ約物 | )。 | 前後合わせて合計-1/2 * | 前の文字の後ろから-1/2 | 前の文字の後ろから-1/2 | 前の文字の後ろから-1/2 |
| BA: 両側に空間を持つ約物 | ・ | 後ろの文字の前から-1/2 | 0 | 0 | 0 |
* 通常の日本語フォント(全幅かつ削除量が1/2)で前後のサイズが等しい場合、前後のどちらか一方から1/2の削除、または、両方から1/4づつ削除する。どの場合でも結果は同じになる。前後のサイズが異なる場合は、小さい方から1/2削除する、または両方から1/4づつ削除する。大きい方から削除すると、間隔が狭くなりすぎる。
普通の全角=[EAWがFまたはW、かつDecomposition Typeがverticalでもsmallでもない]
プロパティは書記素クラスタ単位で適用し、値はクラスタ先頭の文字から取る。
和字の開き括弧類。
〈U+2329 〈U+3008 《U+300A 「U+300C 『U+300E 【U+3010 〔U+3014 〖U+3016 〘U+3018 〚U+301A 〝U+301D (U+FF08 [U+FF3B {U+FF5B ⦅U+FF5F
上記の文字のUnicodeプロパティによる表現。過不足なくこの15字を指定できる。
和字の閉じ括弧類と句読点。
〉U+232A 〉U+3009 》U+300B 」U+300D 』U+300F 】U+3011 〕U+3015 〗U+3017 〙U+3019 〛U+301B 〞U+301E 〟U+301F )U+FF09 ]U+FF3D }U+FF5D ⦆U+FF60 、U+3001 。U+3002 、U+FF0C 。U+FF0E
上記の文字のUnicodeプロパティによる表現。過不足なくこの20字を指定できる。
普通の全角かつGC=PeおよびU+3001、 U+3002、 U+FF0C、 U+FF0E
・U+30FB :U+FF1A ;U+FF1B 和字間隔 U+3000
「簡便な行組版ルール(案)」に倣い、以下の文字の組み合わせに対し空き量の変更を行った。
JLReq文字クラスの見直しの議論の結果若干の文字の移動があった。
以下のコードポイントはプロポーショナルで実装されることが一般的であり、cl-01 / cl-02から除外し、クラスOに属する。
- « U+00AB(始め二重山括弧引用記号・始めギュメcl-01)
- » U+00BB(終わり二重山括弧引用記号・終わりギュメcl-01)
下のコードポイントも同様である。これらは欧文で頻繁に使われる文字であるため、和文書体であってもプロポーショナルに実装されている。しかし、同時にこれらの文字は和文でも使われ、その場合には和文に適合する全幅の文字が必要であるが、現在それを達成する簡便な方法がない。全幅で使われる場合これらはB/Aに該当する。対応する和文文字をどのようにするかの議論が必要である。
- U+2018 LEFT SINGLE QUOTATION MARK(左シングル引用符cl-01)
- U+201C LEFT DOUBLE QUOTATION MARK(左ダブル引用符cl-01)
- U+2019 RIGHT SINGLE QUOTATION MARK(右シングル引用符cl-02)
- U+201D RIGHT DOUBLE QUOTATION MARK(右ダブル引用符cl-02)
下記のコードポイントが上記と同様な問題を持っている。ただしこれらは両プロパティの定義に影響はなく、和字グリフであろうと欧文グリフであろうと、クラスOに属する。
U+2010 HYPHEN(ハイフン)
U+2013 EN DASH(ダッシュ(二分))
U+2014 EM DASH(ダッシュ(全角))
U+2025 TWO DOT LEADER(二点リーダ)
U+2026 HORIZONTAL ELLIPSIS(三点リーダ)
和欧文間の空きのための文字プロパティは以下の3つの値をとる。
間隔の追加の必要な箇所は、J/L、 L/J間、つまり和欧文間である。調整量は全幅の1/8から1/4程度。フォントによっては、また、見出しのように大きな文字サイスにおいては、全幅の1/8より狭い間隔が視覚的に適切となる場合がある。伝統的には活版における技術的な制限もあり全幅の1/4であった。
適切な間隔は、文字のサイズやボディ矩形中の字面の大きさなどによって変わってくる。文字のサイズが大きい場合は、間隔がより大きく見え、また字面の大きい場合は、和字同士の間隔が狭いという理由で、和欧文間もより狭い間隔が適切となることがある。
プロパティは書記素クラスタ単位で適用し、値はクラスタ先頭の文字から取る。
EAW=W かつ GC=Letter かつ Script=Han/Hiragana/Katakana/Common + 4字(〇 U+3007 ゛U+309B ゜U+309C 〓 U+3013)
長音記号ー、繰返し記号々〻ゝゞヽヾ、〆〼、くの字点 〱〲〳〴〵、〇、ゟヿ が含まれる
EAW = N、Na、またはAかつGC = LetterまたはNd
上記の定義では、Jを日本語組版で知見のある仮名漢字等に制限している。しかし、この間隔調整の意味は、全角ボディの中に設計する文字と、プロポーショナルな文字が隣り合った時の、サイドベアリングの設計の違いの吸収であると考えると、これを全角Letter全てに広げることは妥当な可能性がある。その場合のJの定義は下のようになり、UTR #59にほぼ等しくなる。
EAW=W かつ GC = Letter または Nl + 3字(゛U+309B ゜U+309C 〓U+3013)
この定義では、ハングル、篆書、西夏文字、彝文字、女真文字、契丹小字、女書、ボポモフォ、蘇州号碼などを新たに含む。採用にあたっては、もちろんではあるが、各々のスクリプトにおいて望ましい挙動を調査して決定すべきである。
和欧文間の空間に関して、長期間にわたって空間が適切に確保されない実装が続いているため、この空間を確保する目的でU+0020などのスペースが挿入されているテキストデータが多く存在し、また、コンテキストによってU+0020を挿入するかどうかを切り替えてある例も見受けられる。また、htmlのSegment Break Transformation Rulesにおいて、欧文との界面などに自動的にU+0020が挿入される(「和欧文間の空き or Segment Break Transformation Rules」のメールスレッド参照)。
しかし、欧文空白は通常全角の1/3ほどであるから、四分よりもさらに大きく空くことになり見かけが悪い。
即ち、和欧文間に欧文空白U+0020が挿入されているデータと向き合う必要がある。データにU+0020などが挿入されている場合に、どのような組版になるべきかの議論が必要であろう。
cl-19 / 27の文字と記号との分離は、JLReq TFでの議論の中で提案された方法である。記号類は全角であってもラテンアルファベットとの間に空間をとることの必要性が薄いことによる。この点が、JIS X 4051やJLReq第2版に沿った組版と、このドキュメントで規定する和欧文間プロパティを使用した組版の大きな違いである。今後具体例を見ながら熟成させる必要があろう。 また、くの字点の断片はJLReqではO相当、本規定ではJである。これは、これらの文字の所属よりも、クラス定義の平易さを優先した結果である。ℓ U+2113はJLReqではJ相当、本規定ではLである。