双方向スクリプト・サポート

WebSphere Business Integration 製品は、双方向スクリプトの言語に対する 双方向言語サポートを提供します。双方向スクリプトには、右から左に書かれるテキストと、左から右に書かれるセグメントの両方が含まれます (左から右に書かれるテキストには、文中に埋め込まれる数字や、英語、フランス語、キリル文字の諸言語、ギリシャ語などのローマ字ベースの スクリプトのテキストがあります)。

アラビア語およびヘブライ語は、双方向スクリプトを使用する 主要な 2 つの言語グループです。アラビア語スクリプト・グループには、アラビア語、ペルシア語、ウルドゥー語などの言語が含まれます。ヘブライ語スクリプト・グループには、ヘブライ語だけでなく、イディッシュ語やラディノ語も含まれます。いずれの言語にも アルファベット (27 文字のみ) があるため、単一バイト・エンコード・スキームに 合わせることができます。

双方向言語の特性

双方向スクリプトと西洋諸言語のスクリプト (英語、フランス語、ドイツ語、ギリシャ語など) の間には、主に 2 つの特性の違いが あります。これらの 2 つの特性は 双方向性整形 です。

双方向性

双方向性は、次の 7 つの主要な概念から構成されます。

注:
下記に示す例では、いずれも大文字 (DCBA など) を使用して アラビア語またはヘブライ語の文字を表しています。

セグメンテーション
セグメンテーションは、方向が異なるストリング内にテキストの一部を持つ ストリングとして定義します。したがって、スクリプトは、右から左の方向で構成される主要部分と、左から右の方向で構成されるその他の部分を持つことができます。双方向セグメンテーションの例として、番地 Entrance B 25 Maple Street があげられます。この住所は、ヘブライ語では B ECNARTNE 25 TEERTS ELPAM と書きます。この例では、ストリング・テキストの主要部分 B ECNARTNE および TEERTS ELPAM の 方向は右から左ですが、番号 25 の方向は 左から右です。

ネスト
ある方向を持つテキスト・セグメントの中に、方向が反対の追加のセグメントも存在する場合に、このテキスト・セグメントをネストとして 定義します。ここでも番地 B ECNARTNE 25 TEERTS ELPAM を使用します。この住所のネスト・レベルは 1 です。番地 TEERTS ELPAM は 右から左の方向に書かれていますが、その後で方向が反転し、番地 25 (方向は左から右) が 正しく配置できるようになっています。番地の後、方向が再度反転し、B ECNARTNE では右から左になっています。

グローバル方向
グローバル方向は書き順、読み順、段落方向とも呼ばれ、テキストの書き込みを開始する画面、ウィンドウ、またはページの側を 指定します。グローバル方向は文脈にも依存します。つまり、テキストの意味は文脈によって変わります。双方向スクリプトとして書かれた文を使用して 文脈に依存する例を示します。文は次のようになっています。
FRED DOES NOT BELIEVE taht yas syawla i.
 

この文では、左から右に読んだときの意味 (Fred does not believe I always say that) と、右から左に読んだときの意味 (I always say that Fred does not believe) が 異なります。グローバル方向は文脈から常に明らかとは限らないため、アプリケーション開発者は、テキストがどのように読まれるか (左から右か右から左か) を 意識する必要があります。

物理および論理テキスト順序
双方向テキストは、論理順序または物理順序のいずれかで 格納できます。ワークステーション環境では、双方向テキストの入力および処理に 適した方法は論理順序です。論理順序によれば、テキストをローマ字テキストと同様に 処理できます。格納に論理順序を使用する場合は、グローバル方向とは方向が逆のセグメントを反転する 手段を提供する必要があります。例えば、グローバル方位が英語 (左から右) である場合は、アラビア語およびヘブライ語のセグメントでは、本来の右から左の方向で表示されるように 特別な処理が必要になります。逆に、双方向テキストの入力および処理のために メインフレームで双方向テキストを格納するために適した方法は 物理順序です。したがって、メインフレームおよびワークステーション環境から 双方向テキストを統合する場合は、すべてのテキストのテキスト順序が同じレイアウトになるように テキストを変換する必要があります。

双方向スクリプトでテキスト順序を使用する場合は、物理順序と論理順序も重要です。物理順序はテキスト・セグメントの物理的な表現方法を指し、論理順序はテキスト・スクリプト・セグメントの入力方法 (声に出して読む場合の発音方法) を 指します。状況によっては、一部のセグメントを論理順序または物理順序のいずれかで 再配列する必要もあります。例として次の文を示します。

my wife's name is ILIN
 

全体として、この文の方向は左から右です。読み手は、最初の文字が m で次に y が続く (以下同様) テキストを 読みます。物理順序では、文字 i および s の 後には ILIN を含むセグメントの文字 I が続きますが、ヘブライ語では ILIN を NILI と発音するため、論理順序では名前セグメントの最初の文字は I ではなく N になります。

テキスト・タイプ
テキスト・タイプは、特定のテキストを記録するために 最適なアプローチです。つまり、テキスト・タイプごとに異なる記録手法が必要です。記録に使用する テキスト・タイプには、ビジュアル、暗黙 (論理)、および明示の 3 種類があります。

ビジュアル・テキスト・タイプは最も古い記録形式であり、単なる画面全体のコピーです。この形式のテキスト・タイプでは、プログラマーが埋め込みセグメントの位置とその処理について 知っている必要があります。ほとんどのレガシー・アプリケーション およびそのファイルでは、このタイプのテキストを使用します。

暗黙のテキスト・タイプによる記録では、ローマ字アルファベットの文字には固有の左から右への方向があり、アラビア語、ウルドゥー語、およびヘブライ語のアルファベットには 固有の右から左への方向があると想定します。双方向性に適合させるために、暗黙テキスト処理のアルゴリズムを使用して固有の方向特性に基づいてセグメントを認識し、自動的にセグメントを反転できるようにします。暗黙テキスト・タイプの主な制限は、部品番号のように数字と文字 (左から右と右から左) が混在するストリングを 処理できないことです。

明示テキスト・タイプによる記録では、テキスト・ストリングに 追加の制御文字が埋め込まれていることを前提とします。これにより、明示アルゴリズムに対してセグメント反転、整形、数表示の選択などの変換を 指示します。明示テキスト・タイプの制限は、埋め込み制御を処理するための自動処理が必要になることです。暗黙テキスト・タイプと 明示テキスト・タイプの橋渡しをする特定の技法があります。この技法は、基本表示アルゴリズム として Unicode 標準 BIDI アルゴリズムで 定義されています。

対称スワッピング
対称スワッピングは、<、(、[、{ など、反対方向の意味を持つ対称的な文字 >、)、]、} がある 文字を処理できる機能です。グローバルにスワッピングすると、例えば A > BB > A に変換されてしまうため、これらの文字では問題が発生しやすくなります。対称スワッピングにより、この記号を B < A に文字変換できます。

ウィジェット・ミラーリング

翻訳後の GUI のウィジェット・ミラーリングでは、GUI を 言語の方向に合わせてミラーリングします。例えば、ウィジェット・ミラーリングでは、メニュー・ボタンおよびナビゲーション・ツリーを左ではなく、右に移動できます。それ以外の場合は、フレームおよびウィンドウはミラーリングされません。図 44 に、ドロップダウン・メニューのウィジェット・ミラーリングを示します。
この図は、双方向言語でのウィジェット・ミラーリングの例を示しています

図 44. ウィジェット・ミラーリングされたウィンドウに表示された双方向ラベル

整形

整形は、多くの複雑な言語、特にアラビア語やヘブライ語などの筆写体の 言語に見られる特性です。相互につながった単語中で隣接する文字がある場合、書記システムは筆写体となります。筆写体は、印刷よりも手書きに 適しています。例えば、アラビア語では、一部の文字のみを右側の文字につなぐことができます。さらに、単語中の位置および隣接する文字との連結特性に応じて 文字の形が異なる場合があります。これらの点から、整形は 双方向テキストを分かりやすくするために重要です。整形処理では、文字の抽象表現を適切な形状で置換することにより、文字を適切な表示形式にレンダリングします。これを行うには、文字の基本型を使用し、形状を指定せずに 特定の筆写体文字を選択できるようにします。

次に、形状決定ルーチンで文字の適切な形状を選択します。このルーチンでは、ソフトウェアかユーザーのいずれかによって指示された文脈に応じて 適切な形状を自動的に (アルゴリズムによって) 選択できます。ほとんどの場合、筆写体言語のテキストの基本形状が格納されます。整形を構成する特性は、ほかにも 2 つあります。これらは文字の合成と固有の数字です。

文字の合成は、格納されているテキスト文字の番号と 表示されるテキスト文字の番号の対応関係として 定義されます。対応関係を管理するために、合字発音符などの方法を 使用します。 合字は、複数の文字を、1 つの表示セルを占有する単一の文字で表現できる場合に 使用します。 双方向スクリプトでの 発音符は、子音字の特定の方向 (上、中、下、近くのいずれか) に置いて 母音を表すマークです。これらのマークを格納するときには、物理的な位置を占有しますが、表示に使用する場合には 関連する子音字と同じセルを占有します。アラビア語では、現在スペーシング発音符が別個の文字として実装されており、発音符が属する文字の後に置くことになっています。

固有の数字も他の言語と使用方法が異なるため、特別な処理が必要です。例えば、ヘブライ語では、数字はアラビア数字 (1、2、3、...0) を使用して表記します。しかし、アラビア語、ペルシア語、ウルドゥー語などの筆写体言語では、固有の記号で数字を表記します。筆写体言語で使用する数字のラベルは、ヒンディ数字かアラブ・インド数字のいずれかです。アラビア数字、ヒンディ数字、アラブ・インド数字のいずれであっても、単純な数値は左から右に表記されますが、数式の表記は言語ごとに異なります。例えば、アラビア語では数式を左から右に書きますが、ペルシア語では右から左に書きます。このため、通常、数字はアラビア数字でエンコードし、ユーザーまたは開発者の意図に応じて 各国語固有の記号またはアラビア数字で表示します。

Copyright IBM Corp. 1997, 2004