- ウルドゥー語/ヒンディー語の内部表現
前記事の末尾で、
他言語では内部表現を変えているという話をしたので、
具体的にウルドゥー語/ヒンディー語について書いてみる。
サンスクリットと大いに違う点は、鼻母音の存在である。
普通の母音+アヌスヴァーラまたはアヌナーシカのように処理してもいいのだし、
現にウルドゥー語ではそのように扱われている。
しかし現在のヒンディー語の参考書ではまず例外なく、
普通の母音とは別、しかも鼻音を別ものとしない、
「一つの母音」という形での取り扱いをしている。
技術的にも、一つの母音を母音+鼻母音記号に切り分けるのと、
母音+鼻母音記号を一つの母音として処理をするのでは、
前者のほうがはるかにラクである。
そこで鼻母音10種類のコードを母音の間にぶちこむこととなった。
もともと10進数二桁で1文字を表すので、00〜99の100種類しか文字を表現できない中で、
10種類もそんなコードを入れるのは、サンスクリットと互換性を保つ中では不可能である。
これが、サンスクリットとのコードの互換性を無視した最大の理由である。
あとは、サンスクリットにない
、、、、、、、を、
点のない
、、、、、、、のあとにぶちこむ。
具体的には以下のとおり。
細かい点の説明はそのあとである。
文字 |
|
|
|
|
|
|
Unicodeで、 *はあとに2305を出力、
+はあとに2306を出力。
|
まんどぅーか式 |
aa~ |
ai~ |
au~ |
a~ |
ii~ |
i~ |
内部コード |
03 |
17 |
22 |
01 |
07 |
05 |
Unicode(記号) |
2366*( काँ ) |
2376+( कैं ) |
2380+( कौं ) |
*( कँ ) |
2368+( कीं ) |
2367+( किं ) |
Unicode(独立) |
2310*( आँ ) |
2320+( ऐं ) |
2324+( औं ) |
2309*( अँ ) |
2312+( ईं ) |
2311*( इँ ) |
文字 |
|
|
|
|
|
|
まんどぅーか式 |
uu~ |
u~ |
e~ |
o~ |
e^ |
o^ |
内部コード |
11 |
09 |
14 |
19 |
15 |
20 |
Unicode(記号) |
2370*( कूँ ) |
2369*( कुँ ) |
2375+( कें ) |
2379+( कों ) |
2374( कॆ ) |
2378( कॊ ) |
Unicode(独立) |
2314*( ऊँ ) |
2313*( उँ ) |
2319*( एँ ) |
2323+( ओं ) |
2317( ऍ ) |
2322( ऒ ) |
文字 |
|
|
|
|
|
|
|
|
まんどぅーか式 |
aa |
ai |
au |
a |
ii |
i |
uu |
u |
内部コード |
04 |
18 |
23 |
02 |
08 |
06 |
12 |
10 |
Unicode(記号) |
2366( का ) |
2376( कै ) |
2380( कौ ) |
---- |
2368( की ) |
2367( कि ) |
2370( कू ) |
2369( कु ) |
Unicode(独立) |
2310( आ ) |
2320( ऐ ) |
2324( औ ) |
2309( अ ) |
2312( ई ) |
2311( इ ) |
2314( ऊ ) |
2313( उ ) |
文字 |
|
|
|
|
|
|
ヴィラーマ |
まんどぅーか式 |
r1 |
e |
o |
h3 |
m3 |
' |
w |
内部コード |
13 |
16 |
21 |
24 |
25 |
26 |
27 |
Unicode(記号) |
2371( कृ ) |
2375( के ) |
2379( को ) |
2307( कः ) |
2306( कं ) |
2365( ऽ ) |
2381( क् ) |
Unicode(独立) |
2315( ऋ ) |
2319( ए ) |
2323( ओ ) |
文字 |
|
|
|
|
まんどぅーか式 |
z2 |
z |
f |
x |
内部コード |
41 |
39 |
57 |
31 |
Unicode |
2333 2364( झ़ ) |
2395( ज़ ) |
2398( फ़ ) |
2393( ख़ ) |
文字 |
|
|
|
|
|
まんどぅーか式 |
r3h |
r3 |
l3 |
g2 |
q |
内部コード |
48 |
46 |
64 |
33 |
29 |
Unicode |
2397( ढ़ ) |
2396( ड़ ) |
2355( ळ ) |
2394( ग़ ) |
2392( क़ ) |
文字 |
|
|
|
|
|
まんどぅーか式 |
kh |
k |
gh |
g |
n1 |
内部コード |
30 |
28 |
34 |
32 |
35 |
Unicode |
2326( ख ) |
2325( क ) |
2328( घ ) |
2327( ग ) |
2329( ङ ) |
文字 |
|
|
|
|
|
まんどぅーか式 |
ch |
c |
jh |
h |
n2 |
内部コード |
37 |
36 |
40 |
38 |
42 |
Unicode |
2331( छ ) |
2330( च ) |
2333( झ ) |
2332( ज ) |
2334( ञ ) |
文字 |
|
|
|
|
|
まんどぅーか式 |
t3h |
t3 |
d3h |
d3 |
n3 |
内部コード |
44 |
43 |
47 |
45 |
49 |
Unicode |
2336( ठ ) |
2335( ट ) |
2338( ढ ) |
2337( ड ) |
2339( ण ) |
文字 |
|
|
|
|
|
まんどぅーか式 |
th |
t |
dh |
d |
n |
内部コード |
51 |
50 |
53 |
52 |
54 |
Unicode |
2341( थ ) |
2340( त ) |
2343( ध ) |
2342( द ) |
2344( न ) |
文字 |
|
|
|
|
|
まんどぅーか式 |
ph |
p |
bh |
b |
m |
内部コード |
56 |
55 |
59 |
58 |
60 |
Unicode |
2347( फ ) |
2346( प ) |
2349( भ ) |
2348( ब ) |
2350( म ) |
文字 |
|
|
|
|
まんどぅーか式 |
y |
r |
l |
v |
内部コード |
61 |
62 |
63 |
65 |
Unicode |
2351( य ) |
2352( र ) |
2354( ल ) |
2357( व ) |
文字 |
|
|
|
|
まんどぅーか式 |
s2 |
s3 |
s |
h |
内部コード |
66 |
67 |
68 |
69 |
Unicode |
2358( श ) |
2359( ष ) |
2360( स ) |
2361( ह ) |
文字 |
|
|
|
|
|
|
|
|
|
|
まんどぅーか式 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
内部コード |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
Unicode |
2406( ० ) |
2407( १ ) |
2408( २ ) |
2409( ३ ) |
2410( ४ ) |
2411( ५ ) |
2412( ६ ) |
2413( ७ ) |
2414( ८ ) |
2415( ९ ) |
文字 |
|
|
|
|
|
|
|
|
|
|
ヒンディノンスペース |
|
|
まんどぅーか式 |
. |
, |
- |
! |
? |
; |
: |
( |
) |
~ |
+ |
$ |
% |
内部コード |
80 |
81 |
00 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
Unicode |
2404( । ) |
2405( ॥ ) |
|
2416( ॰ ) |
|
文字 |
|
|
|
まんどぅーか式 |
_ |
@ |
\ |
内部コード |
97 |
98 |
99 |
- 補足説明
前記事同様、ところどころヘンな順序になっているのは、
変換ルーチンでのキーワード(トークン)解析の優先順である。
鼻母音はUnicodeでは定義されていないので、
自分でピンドゥないしチャンドラビンドゥを出力しなければならない。
しかも、どちらを出すべきかをこちら側で判断しなければならないわけである。
とは、実際にはローマ字として以外は出力することはない。
後述のように、これが出てくる単語はプリプロセスで別の字に変換してしまうからである。
はサンスクリットでいうである。
ウルドゥー語/ヒンディー語でと書くとの反舌音になるので、
別のローマ字表記をあてた。
もっとも、これにお目にかかる機会はほとんどないだろう。
ヴィラーマにwというローマナイズを与えて、
独自の内部コードをわりあてている件については後述する。
はUnicodeのデーヴァナーガリーに見当たらない。
そこでに点のコード(2364)を追加する形にした。
それでも正しく組みあがるはずである。
はヒンディー語では不要だが、念のため入れておいた。
ヒンディノンスペースについては次で。
一応これで、ほぼデーヴァナーガリーの順番に並ぶはずである。
違いは、ヴィサルガが前に来ないことくらいである。
- ヴィラーマとヒンディーノンスペース
サンスクリットでは、子音で終わる場合や子音が連続する場合には、
ヴィラーマのコードを出力していた。
しかしヒンディー語では、これらはほとんどが潜在母音を含む形で表記されているので、
そのまま子音を出せばいい。
ただしヒンディー語でも時々結合子音で表記される場合がある。
これが上記のwで表現したヴィラーマである。
wは、ローマ字で出力するときは無視し、
デーヴァナーガリーで出力するときはヴィラーマを出せというしるしである。
このことによって、デーヴァナーガリーでは結合子音になるし、
ローマ字では余計なものが見えなくなるというわけである。
ヒンディーノンスペースというのは、
のような、代名詞のあとに後置詞がついた場合などの処理用である。
ローマ字とウルドゥー語ではスペースを出したいのだが、
ヒンディー語では続けて書かれる。
こういうときに+を用いて打っておき、
ローマ字とウルドゥー語ではスペースに変換して出し、
ヒンディー語では無視してしまえばいいわけである。
- 特殊なスペルの語
ヒンディー語ではたまにつづりと発音が異なる語がある。
その中でもよく出てくるのは、(これ)と(あれ)である。
これらの語については、デーヴィナーガリーとして出す場合は、
いったんye^h→yaha、vo^h→vahaのような変換をしてから処理をすることにしている。
もっともこの二語は、ウルドゥー語では単複同形であり、
ヒンディー語では単数と複数で形が違うというやっかいものである。
これはさすがに、自動処理では手に余る。
ウルドゥー語としてローマ字にしたものをヒンディー語として出す場合は、
ここらへんは手で直すしかあるまい。
- ウルドゥー語への変換
目下のところはローマ字→ウルドゥー語への変換は実現していないが、
がんばればこちらもできそうだ。
以下、見通しを書いておく。
まず、アラビア文字への変換自体はそう難しくない。
ローマ字を機械的にUnicodeに変換していけばいい。
短母音はとりあえず無視する方向でいけばいいだろう。
ローマ字ではアレフとアインの区別がつかないが、
何か適当なローマナイズを考えればいい。
たとえば、aと書けばアレフ、qqaと書けばアインにする、などとして、
ローマ字やヒンディー語で出力する場合はqqを無視、
ウルドゥー語のときにはアインを出す、というふうにすればいいだろう。
問題はこの先。
ヒンディー語やサンスクリットでは、
Unicodeを10進数で&#と;で囲んで、HTMLとして出力して、
それをブラウザに食わせればよかったし、
Wordで処理したい場合はブラウザからコピー&ペーストすればよかった。
しかしウルドゥー語では、これではナスフ体になってしまう。
やはりウルドゥー語ではナスターリーク体にしたいので、
なんとかInpageに食わせたい。
しかしInpageでは、&#〜;囲みのUnicodeファイルを読めないのはもちろんのこと、
ブラウザ経由のコピー&ペーストもダメである。
Impageには、File - Import というメニューがあり、
ここでUnicode Fileをインポートするメニューがある。
ところがここでいうUnicode Fileとは、ホンモノのUnicodeでなければならない。
つまり、&#〜;で囲まれた10進数というのはダメだし、
UTF-8もダメである。
たとえば、ウルドゥーという4文字(アレフ・レー・ダール・ワウ)のコードは、
Unicodeでは(下の「関連サイト」のリンクを参照)、
16進数で0627、0631、062F、0648となる。
今までならこれを
اردوと書けばよかったわけである。
実際に書いてみよう→اردو。
ところがこんどはこれをバイナリーで直接出さねばならないわけである。
それさえ可能ならば問題ない。
ヘンにUTF-8に変換しなければならないというよりはなんぼかラクである。
念のためいうと、コードは下位バイト→上位バイトの順に出す。
だから上記は、27 06 31 06 2F 06 48 06の順に出す。
ローマ字や改行コードなど、7Fまでのコードは、上位に00を出せばいい。
だから改行は 0D 00 0A 00 だし、
数字の1は 31 00、ローマ字のAは41 00である。
- 関連サイト
- Unicode デーヴァナーガリー コード表
- Unicode アラビア文字 コード表
|