書字方向【2013-06-26更新】
文字を書き進める方向(書字方向)は、概ね、欧米では左から右の横書き(左横書き)、中東圏では右から左の横書き(右横書き)、漢字文化圏では右から左への縦書き(右縦書き)です。このページでは、左横書き以外の書字方向を持つ現代の文字・言語を挙げ、それらの記述方法について説明しています。
|
文字 | 言語 | ISO 639言語コード | 備考 | |
---|---|---|---|---|
2文字 | 3文字 | |||
アラビア文字 | アゼルバイジャン語 | az | aze | 主にイランで使用 |
アラビア語 | ar | ara | ||
ウイグル語 | ug | uig | ||
ウルドゥー語 | ur | urd | ||
カザフ語 | kk | kaz | 主に中国で使用 | |
カシュミール語 | ks | kas | ||
キルギス語 | ky | kir | 主に中国で使用 | |
クルド語 | ku | kur | ||
シンド語 | sd | snd | ||
タタール語 | tt | tat | ||
パシュトー語 | ps | pus | ||
バルーチー語 | bal | |||
パンジャーブ語 | pa | pan | 主にパキスタンで使用 | |
ペルシャ語 | fa | per/fas | ||
ベルベル語派(その他) | ber | |||
マレー語 | ms | may/msa | 主にブルネイで使用 | |
ヘブライ文字 | イディッシュ語 | yi | yid | |
ヘブライ語 | he | heb | ||
シリア文字 | アラム語 | arc | ||
シリア語 | syr | |||
ターナ文字 | ディベヒ語 | dv | div |
左から右へ縦書きする文字は、モンゴル文字(蒙古文字)です。これらの文字で表記される言語は次のとおりです。
文字 | 言語 | ISO 639言語コード | |
---|---|---|---|
2文字 | 3文字 | ||
モンゴル文字 | モンゴル語 | mn | mon |
右から左ヘ縦書きする文字は、漢字、平仮名、片仮名、ハングルです。これらの文字で表記される言語は次のとおりです。
文字 | 言語 | ISO 639言語コード | |
---|---|---|---|
2文字 | 3文字 | ||
漢字 | 中国語 | zh | chi/zho |
ハングル、漢字 | 朝鮮語(韓国語) | ko | kor |
漢字、平仮名、片仮名 | 日本語 | ja | jpn |
これらの文字は、近代以降は、横書きと併用されています。特に、韓国は横書きが多くなっており、縦書きも左縦書きが多くなりつつあると言われています。
英語では、左横書きをLeft to Right (LTR又はLR)、右横書きをRight to Left (RTLまたはRL)、左横書きと右横書きの混在をBi-Directional (BiDi)といいます。初期のコンピュータは米国を中心とする欧米で発展したため、左横書きが標準(デフォルト)となっています。右横書きや、左横書きと右横書きの混在を扱う時に、特別な記述が必要な場合があります。
Unicodeの文字には、各文字の通常の書字方向に基づいて、書字の方向性が定められています。例えば、欧米の文字は右横書き、中東圏の文字は左横書きです。さらに、括弧や感嘆符を含む句読点などの右横書きでも左横書きでも用いられる文字は中立(neutral)とされています。Unicodeのこの仕様を、双方向アルゴリスムまたはBiDiアルゴリズム(Unicode Bidirectional Algorithm)と呼びます。
例えば、右横書きのヘブライ語で「こんにちは」を意味する「שלום」(シャローム)という語を「שלום」の順に文字を記述すると、
שלום
と、双方向アルゴリスムに基づいて、自動的に右横書きで表示されます。
しかし、このアルゴリズムが上手く機能しない場合があります。そのため、Unicodeには、書字方向を指定するための制御文字が用意されています。例えば、この語の後に感嘆符「!」を付け、「שלום!」と表記したいとします。
「שלום!」の順に文字を記述すると、
שלום!
と表示されます。ヘブライ語の部分は、右から左へ正しく表記されていますが、左端に来るべき感嘆符が右端に配置されています。これは、ユーザ・エージェントが、ヘブライ語の4字を右横書きの文字であると認識して右から左に並べた後、中立な方向性を持つ感嘆符について、右横書き文字として扱うべきか、右横書き文字として扱うべきかを判断できず、デフォルトである左横書き文字として扱い、左横書き文字の語末の位置である右端に並べたため、こうなったのです。
Unicodeの仕様では、一般的に、中立な方向性を持つ文字は周辺の文字の影響を受けるとされており、左横書きの文字の間に挟まれた文字は左横書き、右横書きの文字の間に挟まれた文字は右横書きとして扱われます。例えば、この例文に、ヘブライ語で「みなさん」を意味する「לכולם」(ラ・クラム)という語を追加すると、
שלום!לכולם
となります。ヘブライ文字に挟まれた感嘆符が右横書きの文字として扱われ、「שלום」の左に配置されています。
前述の例「שלום!」を正しく表示させるためには、感嘆符の後に右横書きの文字を記述すれば良いということになります。そこで、右横書きの制御文字「U+200E」(文字参照で「‎」または「‏」)を感嘆符の後に置き、「שלום!‏」の順に文字を記述すると、
שלום!
と、正しく表示されます。
別の例をご紹介します。ヘブライ語で「5月」を意味する「מאי」(マイ)という語の後に「(5月)」という丸括弧付きの日本語の説明を付け、「מאי(5月)」と記述したいとします。
「מאי(5月)」の順に文字を記述すると、
מאי(5月)
と表示されます。ヘブライ語の3字に続き、始め丸括弧「(」とアラビア数字「5」までが右横書きの文字と認識され、右から左に並べられています(始め丸括弧は左右に反転して表示されている)。その後、漢字の「月」と終わり丸括弧「)」は左横書き文字と認識され、左横書き文字の語末の位置である右端に右から左に並べられています。
これを解決するためには、「(5月)」の前に、左横書きの制御文字「U+200F」(文字参照で「‏」または「‎」)を置きます。つまり、「מאי‎(5月)」の順に文字を記述すると、
מאי(5月)
と、正しく表示されます。
また別の例をご紹介します。Unicodeで左横書きと定められている日本語の文を右横書きにしたいとします。これは、Unicodeの双方向アルゴリスムを無効化し、右横書きに上書き変更する制御文字「U+202E」(文字参照で「‎」)を用います。例えば、「‮森永チヨコレート‬」と記述すると、
森永チヨコレート
と表示されます。なお、記述例の最後の「‬」は、文字の上書き区間を閉じる制御文字です。
ここでご紹介したものを含め、書字方向を指定するためのUnicodeの制御文字は次の通りです。
Unicode | 名称 | 略称 | 文字参照 | 説明 |
---|---|---|---|---|
200E | Left-To-Right Mark | LRM | ‎ または ‎ | 文字を左から右へ表記する。 |
200F | Right-To-Left Mark | RLM | ‏ または ‏ | 文字を右から左へ表記する。 |
202A | Left-To-Right Embedding | LRE | ‪ | 文字を左から右へ埋め込む。 |
202B | Right-To-Left Embedding | RLE | ‫ | 文字を右から左へ埋め込む。 |
202C | Pop Directional Formatting | ‬ | 文字の上書き区間を閉じる。 | |
202D | Left-To-Right Override | LRO | ‭ | Unicodeの双方向アルゴリスムを無効化し、文字方向を左から右へと上書き変更する。 |
202E | Right-To-Left Override | RLO | ‮ | Unicodeの双方向アルゴリスムを無効化し、文字方向を右から左へと上書き変更する。 |
なお、日本語の文中にヘブライ語を記述する場合は、「lang="he"」と言語を明記する必要がありますが、記述例では省略しました。以下の記述例も同様です。
HTMLにも、書字方向を指定するための方法が用意されています。
dir属性は、書字方向を指定するためのHTML属性です。
属性 | 値 | 説明 |
---|---|---|
dir | ltr | 文字を左から右へ表記する。 |
rtl | 文字を右から左へ表記する。 |
例えば、「<span dir="rtl">שלום!</span>」と記述すると、
שלום!
と、正しく表示されます。
しかし、例えば、「מאי(5月)」と記述するために、「מאי<span dir="ltr">(5月)</span>」と記述しても、
מאי(5月)
となり、「(5月)」の部分が正しい位置に表示されません(ヘブライ語の左側に表示される)。この場合には、dir属性ではなく、「U+200F」(文字参照:「‏」または‎)を用いて、「מאי‎(5月)」と記述する必要があります。
CSSにも、書字方向を指定するための方法が用意されています。
directionプロパティは、書字方向を指定するためのCSSプロパティです。
プロパティ | 値 | 説明 |
---|---|---|
direction | ltr | 文字を左から右へ表記する。 |
rtl | 文字を右から左へ表記する。 |
ただし、Unicodeの双方向アルゴリスムの方が優先されます。例えば、Unicodeで左横書きと定められている日本語の文を右横書きにしたい場合には、このプロパティは有効ではありません。「<span style="direction:rtl;">森永チヨコレート</span>」と記述しても、
森永チヨコレート
と表示されます。
directionプロパティは、unicode-bidiプロパティと併用することができます。
プロパティ | 値 | 説明 |
---|---|---|
unicode-bidi | normal | directionプロパティの値を無視し、Unicodeの双方向アルゴリスムを適用します。 |
embed | 対象がインライン要素の場合、directionプロパティの値が追加・変更されます。ただし、Unicodeの双方向アルゴリズムは有効で、通常は双方向アルゴリズムが優先されます。 これは、Unicodeの制御文字U+202AまたはU+202Bを要素の先頭に、U+202Cを要素の末尾に記述した場合と同じ結果となります。 |
|
bidi-override | Unicodeの双方向アルゴリスムを無効化し、directionプロパティの値を上書きします。 これは、Unicodeの制御文字U+202DまたはU+202Eを要素の先頭に、U+202Cを要素の末尾に記述した場合と同じ結果となります。 |
bidi-overrideの値を用いて双方向アルゴリスムを無効化すれば、directionプロパティの指定が有効になります。例えば、「<span style="direction:rtl;unicode-bidi:bidi-override;">森永チヨコレート</span>」と記述すると、
森永チヨコレート
と表示されます。
縦書きについては、このページの執筆時点では、CSS3でサポートすべくW3Cで仕様を策定中です。
ポイント
Unicodeで収録されている古代の文字で、左横書き以外の書字方向を持っているものには、次のようなものがあります。
文字 | Unicode範囲 | 説明 |
---|---|---|
イ文字 | A000~A48F、A490~A4CF | 右横書き、右縦書き |
オガム文字 | 1680~169F | 左横書き、左縦書き(下から上) |
突厥文字 | 10C00~10C4F | 右横書き、稀に右縦書き(下から上) |
パスパ文字 | A840~A87F | 左縦書き |
ヒエログリフ | 13000~1342F | 左横書き、右横書き、左縦書き、右縦書き、1行ごとに書字方向が逆になる犂耕体(れいこうたい) |