図書館員のコンピュータ基礎講座 書字方向【2013-06-26更新】
文字を書き進める方向(書字方向)は、概ね、欧米では左から右の横書き(左横書き)、中東圏では右から左の横書き(右横書き)、漢字文化圏では右から左への縦書き(右縦書き)です。このページでは、左横書き以外の書字方向を持つ現代の文字・言語を挙げ、それらの記述方法について説明しています。 右横書き右から左へ横書きする文字は、主にアラビア文字、ヘブライ文字、シリア文字です。これらの文字で表記される言語は次のとおりです。
左縦書き左から右へ縦書きする文字は、モンゴル文字(蒙古文字)です。これらの文字で表記される言語は次のとおりです。
右縦書き右から左ヘ縦書きする文字は、漢字、平仮名、片仮名、ハングルです。これらの文字で表記される言語は次のとおりです。
これらの文字は、近代以降は、横書きと併用されています。特に、韓国は横書きが多くなっており、縦書きも左縦書きが多くなりつつあると言われています。 記述方法英語では、左横書きをLeft to Right (LTR又はLR)、右横書きをRight to Left (RTLまたはRL)、左横書きと右横書きの混在をBi-Directional (BiDi)といいます。初期のコンピュータは米国を中心とする欧米で発展したため、左横書きが標準(デフォルト)となっています。右横書きや、左横書きと右横書きの混在を扱う時に、特別な記述が必要な場合があります。 UnicodeUnicodeの文字には、各文字の通常の書字方向に基づいて、書字の方向性が定められています。例えば、欧米の文字は右横書き、中東圏の文字は左横書きです。さらに、括弧や感嘆符を含む句読点などの右横書きでも左横書きでも用いられる文字は中立(neutral)とされています。Unicodeのこの仕様を、双方向アルゴリスムまたはBiDiアルゴリズム(Unicode Bidirectional Algorithm)と呼びます。 例えば、右横書きのヘブライ語で「こんにちは」を意味する「שלום」(シャローム)という語を「שלום」の順に文字を記述すると、 שלום と、双方向アルゴリスムに基づいて、自動的に右横書きで表示されます。 しかし、このアルゴリズムが上手く機能しない場合があります。そのため、Unicodeには、書字方向を指定するための制御文字が用意されています。例えば、この語の後に感嘆符「!」を付け、「שלום!」と表記したいとします。 שלום! と表示されます。ヘブライ語の部分は、右から左へ正しく表記されていますが、左端に来るべき感嘆符が右端に配置されています。これは、ユーザ・エージェントが、ヘブライ語の4字を右横書きの文字であると認識して右から左に並べた後、中立な方向性を持つ感嘆符について、右横書き文字として扱うべきか、右横書き文字として扱うべきかを判断できず、デフォルトである左横書き文字として扱い、左横書き文字の語末の位置である右端に並べたため、こうなったのです。 Unicodeの仕様では、一般的に、中立な方向性を持つ文字は周辺の文字の影響を受けるとされており、左横書きの文字の間に挟まれた文字は左横書き、右横書きの文字の間に挟まれた文字は右横書きとして扱われます。例えば、この例文に、ヘブライ語で「みなさん」を意味する「לכולם」(ラ・クラム)という語を追加すると、 שלום!לכולם となります。ヘブライ文字に挟まれた感嘆符が右横書きの文字として扱われ、「שלום」の左に配置されています。 前述の例「שלום!」を正しく表示させるためには、感嘆符の後に右横書きの文字を記述すれば良いということになります。そこで、右横書きの制御文字「U+200E」(文字参照で「‎」または「‏」)を感嘆符の後に置き、「שלום!‏」の順に文字を記述すると、 שלום! と、正しく表示されます。 別の例をご紹介します。ヘブライ語で「5月」を意味する「מאי」(マイ)という語の後に「(5月)」という丸括弧付きの日本語の説明を付け、「מאי(5月)」と記述したいとします。 「מאי(5月)」の順に文字を記述すると、 מאי(5月) と表示されます。ヘブライ語の3字に続き、始め丸括弧「(」とアラビア数字「5」までが右横書きの文字と認識され、右から左に並べられています(始め丸括弧は左右に反転して表示されている)。その後、漢字の「月」と終わり丸括弧「)」は左横書き文字と認識され、左横書き文字の語末の位置である右端に右から左に並べられています。 מאי(5月) と、正しく表示されます。 また別の例をご紹介します。Unicodeで左横書きと定められている日本語の文を右横書きにしたいとします。これは、Unicodeの双方向アルゴリスムを無効化し、右横書きに上書き変更する制御文字「U+202E」(文字参照で「‎」)を用います。例えば、「‮森永チヨコレート‬」と記述すると、 森永チヨコレート と表示されます。なお、記述例の最後の「‬」は、文字の上書き区間を閉じる制御文字です。 ここでご紹介したものを含め、書字方向を指定するためのUnicodeの制御文字は次の通りです。
なお、日本語の文中にヘブライ語を記述する場合は、「lang="he"」と言語を明記する必要がありますが、記述例では省略しました。以下の記述例も同様です。 HTMLHTMLにも、書字方向を指定するための方法が用意されています。 dir属性は、書字方向を指定するためのHTML属性です。
例えば、「<span dir="rtl">שלום!</span>」と記述すると、 שלום! と、正しく表示されます。 しかし、例えば、「מאי(5月)」と記述するために、「מאי<span dir="ltr">(5月)</span>」と記述しても、 מאי(5月) となり、「(5月)」の部分が正しい位置に表示されません(ヘブライ語の左側に表示される)。この場合には、dir属性ではなく、「U+200F」(文字参照:「‏」または‎)を用いて、「מאי‎(5月)」と記述する必要があります。 CSSCSSにも、書字方向を指定するための方法が用意されています。 directionプロパティは、書字方向を指定するためのCSSプロパティです。
ただし、Unicodeの双方向アルゴリスムの方が優先されます。例えば、Unicodeで左横書きと定められている日本語の文を右横書きにしたい場合には、このプロパティは有効ではありません。「<span style="direction:rtl;">森永チヨコレート</span>」と記述しても、 森永チヨコレート と表示されます。 directionプロパティは、unicode-bidiプロパティと併用することができます。
bidi-overrideの値を用いて双方向アルゴリスムを無効化すれば、directionプロパティの指定が有効になります。例えば、「<span style="direction:rtl;unicode-bidi:bidi-override;">森永チヨコレート</span>」と記述すると、 森永チヨコレート と表示されます。 縦書き縦書きについては、このページの執筆時点では、CSS3でサポートすべくW3Cで仕様を策定中です。 ポイント
参照・参考文献
CyberLibrarian : tips on computer for librarians, 1998-
|