動作仕様

英文(ASCII文字)のみの場合でも異なる動作

下記の点が標準のSoft Wrapと異なります。

禁則処理

JIS X 4051を参考に作成されたW3C技術ノート「日本語組版処理の要件」2012年4月3日版に準じます。 http://www.w3.org/TR/jlreq/ja/

JIS X 4051そのものでは無いことに注意してください。また、縦組みのみ対象となる表記に関しては基本的に無視しています。

ぶら下げ

空白文字のぶら下げ

標準のSoft Wrapと同じく、後に続く文字が空白文字のみの場合は行幅を越えてぶら下げを行います。ただし、下記動作が異なります。

句読点のぶら下げ

句読点についてぶら下げを行います。対象は設定で変更可能です。

禁則処理の例外

W3Cの資料と異なる点を記載します。

基本ラテン文字領域(ASCII文字)にある記号の扱い

基本ラテン文字領域(ASCII文字)の記号に対して行頭禁則と行末禁則は行わず、代わりに半角・全角形の全角文字を対象とします。

半角文字

半角・全角形の半角文字(JIS X 0201 片仮名図形文字集合)は設定で禁則処理の対象にするかを選択できます。デフォルトは有効です。

縦組みの「く」の字記号

組み合わせでの禁止がうまくできていません。縦組みにしか使われないため、常に横組み表示のAtomでは無視すべきかもしれません。

処理が難しい文字

小書き片仮名フと半濁点付きの組み合わせは二つで1文字扱いとするのですが、処理が複雑になるため実装していません。また、本来は「プ」の小文字表記になるべきですが、ほとんどの処理系では正しく表示されません。

文字幅

Atomでは"x"の文字幅を基準として1行に入る文字数を計算しています。このパッケージでも同様に"x"の何倍の幅であるかどうかを各文字に割り当てて、計算していきます。

Shift_JISでのいわゆる2バイト文字は2倍幅とします。Shift_JISにマッピングされていない文字は「MS ゴシック」(MS Gothic)での文字幅を参考にして規則を作成しています。「MS ゴシック」に含まれない文字は似たようなカテゴリーは似たように処理することを原則とします。下記説明では一部重なる文字があります。計算の順序として、0倍幅、1倍幅、2倍幅と確認していくため、前の定義が優先となります。

なお、なるべく文字のカテゴリーで処理を行うため、厳密ではありません。また、Shfit_JIS自体についても、Windowsの実装であるCP932のみではなく、Mac OS XのShift_JIS拡張も参考にしています。

0倍幅で計算する文字

サロゲートペアは上位で文字幅を決めるため、下位部分は常に0倍幅で計算します。

ゼロ幅文字およびLRMとRLMを0倍幅で計算します。

前の文字と結合させる文字(/^COMBINING /という名称)を0倍幅で計算します。

1倍幅で計算する文字

Shfit_JISにおける1バイト文字(JIS X 0201)である半角文字は1倍幅で計算します。これには記号や拡張や変形を含めたラテン文字が含まれます。

半角片仮名等も1倍幅で計算します。なお、Shift_JISに含まれない"HALFWIDTH *"というUnicodeも1倍幅にします。これにはハングルの半角文字が含まれています。

Mac OS XにおけるShfit_JISで1バイトになる文字も1倍幅で計算します。なお、いくつかは上とかぶります。

そのほか、CJK互換文字以外はなるべく1倍幅にしていますが、厳密ではありません。

2倍幅で計算する文字

Shift_JISにおける2バイト文字(JIS X 0208)は基本的に2倍幅で計算します。

次の文字はデフォルトでは2倍幅で計算しますが、オプションで選択できるようにする予定です。これはShfit_JISでは2バイト文字であり、MS Gothicでは全角幅になっていますが、フォントによってはラテン文字とほぼ同じ幅の場合があるためです。使用するフォントによって変えてください。

上の文字で注意が必要なのは、Shift_JISに含まれない基本形以外の文字も2倍幅で計算することです。多くの日本語フォントではこれらの文字はラテン文字と同じ幅になりますので、正しくありません。しかし、処理を単純化するために全て同じ幅としています。この動作は将来変更する可能性があります。

その他の文字

上記に含まれない文字は範囲指定として、下記の通りとします。

なお、U+10000以降はサロゲートペアで上位で幅を計算し、下位は0倍幅としています。