2016年2月20日土曜日

クメール文字URLに潜む3つの罠…見た目と内部表現が一致しないクメールUnicode。カンボジアのイオンモールはドメインを2個取得するべき?

2017年からドメイン名でクメール文字を使用できるよう準備中であることを郵電省が明かし、報じられました:
http://www.phnompenhpost.com/national/next-stop-khmer-script-domain-names



クメール用字系には歴史的にいくつかの符号化集合があります。

  • ABC
  • Limon
  • Unicode


最も歴史が新しいのはUnicodeですが、Unicodeの登場によって他のものはレガシ扱いになっています。
※ただし、古くからコンピュータに親しんでいるカンボジア人のオジサンオバサンは、今でも古い方式で入力している方々がいます。実際、ストローク数はUnicodeよりLimonのほうが圧倒的に少ないのです。

ABCやLimonはそもそも、独自の符号をUnicode上に与えられているわけではなく、ASCII領域のキャラクタにクメール文字フォントをあてているだけという実装でした。
日本語でも、ASCIIのバックスラッシュの位置に勝手に円マークをあててしまったりして、その安易な変更が皆さんにさまざまな苦しみを与えつづけていることはご存知のとおりですが、ABCやLimonはそれをASCII領域全体でやってしまったようなものであります。
PiフォントとかSymbolフォントのグリフがクメール文字になってると思ってもよいでしょう。

よって、URLのクメール文字も、Unicode符号化によって実装されるものと思われます。

Unicodeをクメール文字URLに用いると聞くと、さまざまな疑問がわきおこります。
専門家が協議して仕様決定していくでしょうから、このあたりは当然解消されるとおもいますが、パッと思いつくだけでも以下の3つの罠があると思います。

(1) 「空かずの間」問題:ゼロ幅空白を任意に挿入しても、ゼロ幅なので見た目が変わらない。

クメール用字系では単語の間にスペースが入らず、文字がベッターリと続いていく格好になります。
しかしそれだと、行末に達したとき、組版系はどこで自然改行を入れていいかわからないので、ここでなら自然改行を入れてもいいですよ、と組版系に対してインストラクトするために、単語間にゼロ幅空白を打つことが推奨されています。
これはゼロ幅のグリフですので、打っても見た目はまったく変わりません。
同じ所に何個打っても見た目が変わりませんし、逆に、打つべきでない単語内などに打っても見た目は変わらないことが多いです。
またそもそも、見た目が変わらないので、お行儀の良くない人は、ゼロ幅空白などまったく打たずにベタベタと文を打っていきます。たぶんほとんどの人がそうだろうという気がします。私もそうですしティヒッ。

ゼロ幅空白のあるとなしではもちろん、コンピュータが見た時にUnicode列としては異なるものになるわけです。
たぶん、クメール文字URLの仕様としては、ゼロ幅空白はいくら打たれていても無視をするということになるのでしょう。
2つのURL文字列を付き合わせる際には、双方のURL文字列内からゼロ幅空白をすべて削除したうえで比較した文字列がURL比較基準にてらして一致したならば、等しいとみなす仕様になるんではないでしょうか。
それであれば、この(1)は大きな問題とはならないと思います。

ただその場合、クメール文字URLの比較を行う可能性のあるルーチンを有するすべてのプログラムは、このゼロ幅空白の除去を前処理として有しなければ、実用上、まともにクメール文字URLを扱えないことになるでしょう。
国際的なプログラムをカンボジアへL10Nする際に、そこまでやってくれるかどうかは、ベンダしだいと思われます。

(2) 「イオン」問題:「イオン」には2通りのキャラクタ列がありえる。

カンボジアにはすでにイオンモールが進出しています。
※ただし、いくら「イーオーン」だと口をすっぱくして言っても、クメール文字でイーオーンと書いても、多くの庶民はAEONをエーオーンと呼んでいるようです。

専門的な話になりますが、クメール文字でイーオーンのイー(yで始まるものではなく、声門閉鎖音で始まるほう)を表すには、通常のクメール文字記法からちょっと外れた例外的な書き方をします。
クメール文字が表示できない皆さんのために、クメール文字を使わずにがんばって、かつなるべく手短に説明をします。

クメール語には、同じ子音の音に対して、それぞれ2種類の子音字があります。O子音字というものに母音記号イーがつくと、ちゃんと「イー」と読んでもらえるのですが、A子音字というものに母音記号イーがつくと、それは「エイ」と読まれてしまいます。
ただしたまに、子音字がどっちか片方しかない子音の音があります。
声門閉鎖音(これも子音の一種と考えます)はそのひとつで、A子音字しかありません。
そのまま母音記号イーをこれにつけたら、イオンは「エイオーン」になってしまいます。
しかしちゃんと、A子音字をO子音字に化けさせる記号が用意されています。
その記号(「~~」みたいな波打ったゲジゲジの形)をA子音字の上につけると、そこはO子音字のように読まれます。
ところがここで問題があり、母音記号イーは、子音字の後ではなく、子音字の上にくっつけるルールになっています。
子音字の上の場所の取り合いが生じます。
すなわち、声門閉鎖音で始まる「イー」をクメール文字で表そうとすると、

  • O子音字化記号(ゲジゲジマーク)
  • 母音記号イー

が両方とも、声門閉鎖音をあらわすA子音字の上に陣取ろうとします。
この場合、A子音字の上にまずゲジゲジを描き、さらにその上に母音記号イーを書いてもいいんですが(子音字によっては実際そのように記されます)、そのような3階建て構造は、美しくない、と昔のクメール人は考えたのでしょう。
このような場合には、ゲジゲジマークを子音字の下に書くように、というさらなる例外規則が設けられているのです。
さらに、その場合には、ゲジゲジマークを母音記号ウと同じ形に変えるよう定められています。
この母音記号ウは、つねに、子音字の下に書くことになっています。
結果として、声門閉鎖音で始まる「イー」は、クメール文字では次のような見た目になります:

  • てっぺんに、母音記号イー
  • まんなかに、声門閉鎖音をあらわすA子音字
  • いちばん下に、母音記号ウ
Adobe Illustrator CS3ではフォントによって左の誤ったレンダリングになる。


さてこれをUnicodeで入力する時に、我々はこの見た目どおりに打ってはならないと定められています。
本来の意味どおりに、
声門閉鎖音をあらわすA子音字 + O子音字化記号(ゲジゲジマーク) + 母音記号イー
と入力しなければなりません。
このように入力しても、クメール文字Unicodeのレンダリングに対応している組版系(たとえば最近のバージョンのAdobe IllustratorやInDesign)においては、自動的に見た目が

  • てっぺんに、母音記号イー
  • まんなかに、声門閉鎖音をあらわすA子音字
  • いちばん下に、母音記号ウ

になるよう定められています。
当然問題は、クメールUnicodeのこのような規則が定められた当初、そのような対応組版系は世界じゅうどこにもありませんでした。

  • てっぺんに、母音記号イー
  • まんなかに、声門閉鎖音をあらわすA子音字
  • いちばん下に、母音記号ウ

という印字結果を得たければ、そのように打つしかありませんでした。
現在でも、ちょっと古いバージョンのIllustratorなどでは、そのような対応が求められます。
自然、クメール文字の入力歴が長い人ほど、バッドノウハウとして、今でも、見た目どおりに「イー」を打ってしまうのです。
当然、コンピュータから見たUnicodeキャラクタ列は、異なるものになるでしょう。

そんなわけでAEONをクメール文字で表すと、見た目は同じだけど内部表現(Unicodeキャラクタ列)が2種類ありえることになります。
URLとしたならば、その片方を打ったときにしかイオンモールカンボジアのウェブサイトへ到達できず、もう一方を打ったらノーサッチURLと言われてしまうようでは、印字の見た目はまったく同じですので、非常な混乱と損失を招くことになります。
これも、クメール文字URLの仕様を策定してもらううえで、解決してもらいたい問題です。
でないと、イオンモールは2通りのドメインを取得しないといけなくなるかもしれません。

(3) 「夫」問題:「プデイ」「プドル」「スダム」など脚daは見た目が脚taと同じ形だが、脚daを打たねばならない(たぶん多くの人は脚taと打ってしまう)。

クメール語には二重子音・三重子音が多いのですが、その場合、2個目・3個目の子音は、1個目の子音字の下に書くという規則になっています。
この、下に書く子音字を「脚」(クメール語で「チャーン」)と言います。
脚の子音字は、メインの子音字とは、多くの場合、ちょっと字形が異なっています。
小さく書けるよう、簡略化された字形になっています。
英語の大文字と小文字の関係にちょっと似ています。

ところが、いくつかの子音字は、脚になると、別の子音字の脚とまったく同じ字形になってしまいます。
たとえば、A子音字dの脚は、A子音字tの脚とまったく同じ字形です。
しかしだからといって、読みがtになるわけではありません。
見た目はtですが、読みはあくまでdです。
クメール語学習者は、単語ごとに、この脚tの字形の読みはtなのかそれともdなのか、1個1個暗記することを強いられます。
英語でスペルcheが単語によってケと読まれたりチェと読まれたりするのとちょっと似ています。

たとえばプトルと書いてプドル(与える)と読んだり、スタムと書いてスダム(右)と読んだり、プテイと書いてプデイ(夫)と読んだりします。

※脚じゃないtを書いた時にも、dと読むケースが多々あります。タラーと書いてダラー(星)と読んだり、タラーンと書いてダラーン(表組み)と読んだり、トムライと書いてドムライ(値段)と読んだりします(価格競争はトムライ合戦です)。が、それはここでは関係ないので省きます。

さて、クメールUnicodeにおいて、この脚dは、脚tと異なるコードを割り当てられています。
字形はまったく同じですが、Unicodeの文字コードは別々です。
キーアサインも別々です。
クメールUnicodeのルールとして、この見た目が脚tの脚dは、脚dとして打たねばならないと定められています。
いいかえれば、二重子音の2個目の子音がdと読むならdを打ちなさい、tと読むならtと打ちなさい、ただし印字結果は同じ、ということです。

しかし、多くのクメール人は、おかまいなしに、見た目どおりに、あらゆる場合に、たとえdと読んでようと、脚tを打ってるんじゃないかと思います。
ですので、お行儀よくちゃんとdを打った人と、見た目重視でtを打ってしまった人とでは、見た目はまったく同じクメール文字列が印字されますが、コンピュータから見た内部的には異なるUnicodeキャラクタ列ができてしまうことになります。
おそらく、この違いが吸収されるよう、クメール文字URLの仕様策定の段階で定められるんじゃないかと思いますが、ここはおそらく議論があるところです。
クメールUnicode仕様で両者を区別するとしたことには、ある程度根拠があったと思われるからです。

クメールUnicodeの策定過程には、当時混乱していたカンボジアの国情のせいで、クメール人の意見はほとんど取り入れられていません。
とはいえ、脚tと脚dを別々のコードにしたことについては、一定の意味があると思います。
たとえばクメール語「スダーイ」(もったいない)と、クメール語「スターイ」(スタイル)は、印字上の見た目はまったく同じになってしまいますが、読みも意味もまるで異なります。


こういったケースをせめて内部表現では識別したい、という需要は、たとえば辞書などの分野において、ありえるのだろうとおもいます。
もっとも、これをURLでやってしまうとかなり混乱するでしょうから(見た目が同じなのに違うサイトへ飛ぶことになる)、そこはやはり、両者同じものとして正規化してしまうのがよいのでしょう。

----
パッと思いついただけでこの3つの解決すべき点がクメール文字URLにはあると思います。
ほかにもあるかもしれません。

が、リンク先の記事中でも語られているように、クメール文字URLの導入は、英字を読めない人々のためのインターネットアクセスを容易にする可能性があり、ひいてはデジタルデバイドの解消に多少とも役立つかもしれませんので、こうした問題をサクッとスッキリ解決してもらったうえで、大いに進めてもらったらいいんじゃないかと思っております。



0 件のコメント:

コメントを投稿