character shaping selector format characters

続け字

[3] 続け字

仕様書

Unicode における続け字

[8] 用字系により、またフォントにより、 隣接する文字が互いに筆記体的に接続する (cursively join) 形でレンダリングされることがあります。 アラビア文字ではほぼすべてのフォントで行われます。 ラテン文字では手書き風のフォントで行われることがあります。 >>7

[9] この筆記体的な接続は、 接続する形になった2つの文字グリフを選んで組み合わせる場合のほかに、 2つの文字が一緒になったグリフを選んで使う場合があります。 (後者を合字 (ligature) と呼び、 筆記体的なフォントでもそうでないフォントでも起こり得ます。) 言語によっては音節をまたいで合字を使わないといった規則があるので、 合字を使うかどうかは必ずしも機械的に決められません。 >>7

[10] 次の場合のように、 著者がこのグリフの接続や合字の利用を制御したいことがあります。 >>7


[15] U+200C ZERO WIDTH NON-JOINER (ZWNJ) と U+200D ZERO WIDTH JOINER (ZWJ) は、 文字間の接続 (connection) をより増減せしめるものです。 接続には、 単純な筆記体的な接続 (cursive link) も、 合字の利用も含みます。 >>7

[29] ZWJ, ZWNJ による筆記体的な接続の制御は、 文脈に依存してグリフを選択する処理に介入するというよりは、 グリフ選択のための文脈を変更する文字であると解されています。 >>7 例えば <「次が同種の文字なら語中形、そうでないなら語末形」の文字, U+0020> という列の最初の文字は語末形が選択されることになりますが、 <「次が同種の文字なら語中形、そうでないなら語末形」の文字, ZWJ, U+0020> のように “みなし「同種の文字」” である ZWJ を挿入すると語中形が選択されるという具合です。

[36] OpenTypeAAT のような近代フォント技術では、 フォント開発者は ZWJ を適宜合字写像表に追加するべき (should) です。 (例えば f + i の写像を持つ場合には、 f + ZWJ + i の写像をも追加するべきです。) 逆に ZWNJ は通常特に何もしなくても望む効果が得られます。 >>7

[37] フォントは、 ZWJZWNJ (や他の format character) 自体には零幅の不可視のグリフを使うべきです。 >>7

[25] 2文字の間に <ZWJ, ZWNJ, ZWJ> を挟むことで、 合字化を抑制し、 筆記体的に接続することは求めることができます。 >>7

[31] 後方互換性のため、 アラビア文字の間の ZWJ は、 <ZWJ, ZWNJ, ZWJ> のように機能します。 平文においてアラビア文字合字を使うよう求める手段はありません。 >>7

[26] <ZWJ, ZWNJ> のようにすれば、 前の文字は筆記体的な形、 後の文字は孤立形にすることを求められます。 >>7

[35] インド系文字では、 子音virama の列の後に ZWJ を使うと、 子音の「半形 (half-form) 」 を要求します。 ZWNJ を使うと、 接続した形 (conjunct formation) を分断することを要求するのであって、 通常は子音に明示的に virama を示すことになります。 その他特殊な用法があります。 >>7


[32] 特性 Joining_Type = Transparent文字は、 筆記体的な接続に干渉するべきではありません (should not) 。 これにはすべての nonspacing mark と、 ほとんどの format control character が含まれます。 >>7

[33] 従って、結合文字の有無は接続の有無に影響しません。 (ただし個別の事例で接続や合字化に結合文字の有無と種別を考慮することは認められています。 結合文字 )

[34] U+20DD COMBINING ENCLOSING CICRLCE のような囲み文字結合文字までこれに含まれるので、 囲んだからといって前後の文字との接続が抑制されることにはなりません。 >>7

[43] この性質が主な理由なのでしょうが、 ZWJ, ZWNJ は定義上結合文字ではないにも関わらず、 結合文字列の定義では結合文字に準じるものとされています。 結合文字 書記素クラスター (やカーソル位置の決定) でも結合文字と似たような挙動を示します。

[44] ZWJ, ZWNJ中置演算子のような機能を持ちますが、 結合文字列としては他の結合文字同様後置演算子的な性質を持ちます。 従って ZWJ, ZWNJ は直前の文字語中形語末形のどちらかを決定する (および直後の文字の字形選択のための文脈を限定させる) 異体字セレクター的なものであると捉えることも出来ます。

[45] 文頭の ZWJ, ZWNJ は、欠陥結合文字列扱いになります。 欠陥結合文字列


[16] ZWJ, ZWNJ は、 平文で利用することを想定しています。 上位層プロトコル合字化と筆記体 (cursive) の制御の機能を有しているときは、 使うべきではありません (should not) >>7

[17] ZWJ, ZWNJレンダリングシステムへの要望に過ぎず、 レンダリングシステムはこれを受けなくても構いません。 >>7

[18] ZWJ, ZWNJ合字化や筆記体的な接続が必須または禁止となる例外的な場合の利用を想定しており、 必ず使うことを想定したものではありません。 通常の挙動を上書きしたいときのみ使うのがよいとされます。 >>7

[19] ということで Unicode としてはいつ文字がつながり、 いつつながらないのかの挙動をほぼ実装依存としていて、 相互運用性は何も保証してくれません。 基本の状態が規定されていない上に、 ZWJ, ZWNJ が挟まったときの状態も曖昧です。

アラビア文字のように原則的につながる文字が基本的につながることと、 ZWNJ を入れるとつながらなくなることが 「可能性がかなり高い」 といえるくらいです (それすら断言できない)。 例えば「fi」がつながるか、つながらないかは何も言えません。

[27] 合字ではなく続け字の字形を連ねた時に、 2つの字形がただ並べられるだけなのか、 真に図形的に接続されるべきなのか、 Unicode は明記していません。 Unicode レベルでは記述できないと考えるべきでしょうか。 この2つの違いは普段は気づきにくいですが、 字間を空ける時や、 白抜き文字化する時などに違いがでてきます。

[28] <ZWJ, ZWNJ, ZWJ> によって合字化は抑制しつつ接続はさせることができますが、 つまりこの場合の ZWNJ で接続を完全に切断してしまっては都合が悪いことになります。

[46] IDS 内部では構文的に利用できません。 IDS の前後には挿入できますが、 どう機能するべきかは明らかではありません。


[38] ZWNJ, ZWJ は、 format control character であるため、 テキスト内容を分析する処理、 例えば綴検査器検索操作では、 一致の検査にあたって除去するのが普通です。 例外として、 インド系文字など一部用字系では、 正書法的に意味のある用法があるため、 無条件に除去するわけにはいきません。 >>7

[39] このテキスト処理に関する要件も、 マーク付け言語など上位層プロトコルで扱うべきという要件も、 ラテン文字fi合字に代表されるような装飾的な性質の強い合字・接続の制御を念頭に置いたものだったのでしょう。 その場合は確かに無視する方が処理しやすいですし、 テキストデータそのものというよりはスタイルに関わる付加情報として分離するべきという考え方ももっともなものです。 インド系文字の記述のような、 通常の文字列の表示に必須なものまで同じ文字で制御することにしたせいで、 事情はそう簡単ではなくなってしまいました。

[40] IDNA文脈的規則などはこれが原因でプロトコルが過剰に複雑化した事例です。


[30] イラン文字コード規格の ISIRI 3342 は、 ZWNJ, ZWJ に相当するものを “pseudo space”, “pseudo connection” としていました。 >>7

character shaping selector format characters

[47] paired stateful controls である非推奨書式文字character shaping selector format characters は、 Arabic presentation forms (例えば U+FE80 - U+FEFC) と併用し、 表現 (presentation) 過程にあって特定の letter form 同士を筆記体的に接続 (cursive connection) したり合字化したりして連結する際に、 この文字字形決定 (character shape determination) (グリフ選択 (glyph selection) ) 過程を有効にするか否かを示すものです。 >>48

[50] 状態は inhibited か否かの2つです。 入れ子にして使うことはできません。 >>48

[51] 未使用の場合の既定の状態は、 inhibited です。 >>48 上位層プロトコルで上書きできます。

[55] これらの文字は状態を切り替えるもので、 前後の文字に作用する ZWJ, ZWNJ とは仕組みが大きく異なります。 直前の文字に作用する結合文字異体字セレクターとも異なります。 numeric shape selector format characters とは似ています。

[54] これらの文字は、 非推奨 (deprecated) であり、避けるべき (should) です。 >>48

[53] この指定は通常のアラビア文字 U+0600 - U+06FF には適用されず、それらは常にグリフ選択の対象となります。 >>48

言語

[58] タグ文字character joining に影響する指定に使える可能性があるとされていました。

メモ

[1] 米国でも筆記体は衰退の危機 ? - スラッシュドット・ジャパン ( 版) http://slashdot.jp/article.pl?sid=09/07/28/0416221

[2] 【おそロシア】ロシア人「ロシアの筆記体?普通に読めるよ?」(追記あり) - Togetterまとめ ( 版) http://togetter.com/li/783934

[4] 連綿体 - Wikipedia () https://ja.wikipedia.org/wiki/%E9%80%A3%E7%B6%BF%E4%BD%93

[5] よくあるご質問, , https://web.archive.org/web/20110128042151/http://www.nec.co.jp/bungo/10info/support/2011.html

[6] IKれんめんちっく | かなフリーフォントのダウンロード | dwuk () https://www.dwuk.jp/font/ikrenmenchic/