« 2006年01月20日 | メイン | 2006年01月22日 »
2006年01月21日
PDFと文字 (29) – アラビア文字表示形
Unicodeには、アラビア文字表示形のブロックが二つあります。
表示形A(Form-A):U+FB50~U+FDFF
表示形B(Form-B):U+FE70~U+FEFF
なぜ、このような二つのブロックが用意されているのでしょうか?
まず、表示形Bを見ますと、ここにはアラビア文字が140種類あります。
先頭のU+FE70~U+FE7Fには、1文字(U+FE73)を除いて、Harakat(母音記号など)を基底文字と分離した形で表示・印刷する形式、およびHarakatをカシダ(Tatweel:U+0640)の上下に配置した形式の文字があります。
ちなみに、カシダとはアラビア文字の単語を左右に伸ばすときに接合部を引き伸ばすために挿入する横線です。下の例をご覧ください。
・単語にカシダを挿入してない状態
・単語にカシダを挿入した状態
アラビア語の文章を両端揃え(Justification)するときは、単語にカシダを挿入して単語を横に伸ばします。カシダは文字と文字の間に挿入するのですが、どこにいくつのカシダを挿入するべきかは分かっていません。Unicode仕様書にはフォントと可視化ソフトに依存する、とのみ書いてあります。このあたり、まだUnicodeの仕様書を書いている人にもきっと分かっていないのでしょうね。
ご存知の方がいらっしゃいましたら、お教えいただきたいと思います。
次のU+FE76からU+FEF4の区間は、アラビア文字の基本形(U+0621~U+064A)に対して、単独形、左接形、両接形、右接形を全て登録しています。その後ろのU+FEF5からU+FEFCは、ラムとアレフのリガチャのいろいろな形が載っています。すなわち、この部分は、昨日説明しましたプログラムによるCursive接続とリガチャの処理を施したあとのグリフ(以下では、これを文脈依存のグリフと言います)を登録しているわけです。
ここの文字は過去の規格との互換用として用意しているとされています。通常は、適切なグリフをプログラムで選択するべきものです。
一方、表示形A(U+FB50~U+FDFF)の範囲を見てみます。こちらはまさにアラビア文字の符号化の難しさを象徴している部分です。
・ペルシャ語、ウルドゥ語、シンディ語などで拡張された文字に対する文脈依存のグリフ:U+FB50~U+FBB1
・中央アジアの言語で拡張された文字に対する文脈依存のグリフ:U+FBD3~U+FBE9
・2文字のリガチャ:U+FBEA~U+FD3D
ラムとアレフの2文字が連続した場合はリガチャが必須になります。しかし、それ以外の2文字にもオプションのリガチャが使えます。ここではそれらのリガチャのグリフにコードポイントを与えています。
・3文字のリガチャ:U+FD50~U+FDC7
3文字の並びからできるリガチャを文字として扱っているものです。ちなみに、ラテンアルファベットの3文字のリガチャについてはffi(U+FB03)、ffl(U+FB04)の二つにコードポイントが与えられています。
最後の方では、ほとんどロゴマークといってよさそうなリガチャにまでコードポイントを与えています。
Arabic Ligature Jallajalalouhou:U+FDFB
これは、U+062C, U+0644, U+0020(空白), U+062C, U+0644, U+0627, U+0644, U+0647の、実に8文字の並びからできるリガチャを文字として扱っていることになります。
現在の時点で、このブロックをすべて実装したものはない、とされています。
(Unicode仕様書V4.0 p.204)
※参考資料
リガチャ(合字)については、以下をご参照ください。
日本語:合字(未完成)
英語:Ligature