= 多言語入力ブックマークレット ---- == 1.目的 ブラウザ上での使用を目的とした多言語入力をサポートしたIMEを作成することが目的です。 == 2.基礎理論 === a.ブックマークレット ブラウザには現在見ているWebページ内にページ遷移させずにスクリプトを追加する仕組みが存在します。ブックマークレットと呼ばれているこの仕組みを使うことで、ページ内の入力欄の内容やキー入力をフックすることができます。追加したスクリプトにフックしたイベントを処理するような機構を随時加えてやることで複数の言語に対応したIMEを作ることができます。もし、処理の内容が大きすぎて、例えば日本語や中国語の変換など、追加したスクリプトで処理できないようであれば、インターネット上に変換サーバーを立てて、そこへ入力をポストしてやれば解決できます。この仕組みはAjaxと呼ばれています。 === b.文字集合、符号化方式 コンピューター上で文字を扱うにはそれが数値化されなければなりません。どの文字がどの数値に対応しているかを示すのが文字集合です。文字集合をプログラム上に展開することを符号化方式と言います。両者をあわせて文字コードといいます。多言語入力を目標とした時、文字集合はUnicode、符号化方式をUTF-8、UTF-16、UTF-32のどれかにあわせることが必要です。 Unicodeには非常に多くの文字がマップされていますが、対応されていない文字も多くあります。Unicodeにはいくつかのバージョンがあり、どのバージョンでどの言語が対応されたのかをUnicodeConsortiumで見ることができます。 === c.フォント フォントは文字集合で規定されているグリフ(文字外形)とその組版データの集合体です。多言語においてフォントは非常に重要です。Unicodeで対応している言語は多いですが、それに用意されてるフォントの数は平等ではありません。少数民族による言語やインターネットにアクティブなユーザーが少ない言語は標準でインストールされている確立は低いです。どの言語にどのぐらいのフォントが用意されているのかを[http://www.wazu.jp/ Gallery of Unicode Fonts]で見ることができます。 フォントが標準でインストールされていない環境にWebページを見るためだけにブラウザにフォントを提供する仕組みが存在します。WebFontと呼ばれるこの仕組みはCSS3で勧告されています。safari3.1はこれに対応しています。IEシリーズは独自のフォント形式ながら対応しています。過去にはNetScapeがダイナミックフォントと呼ばれる仕組みで対応していました。主要なブラウザの中ではOperaとFireFoxが対応していませんが、どちらも近い将来CSS3に対応することを表明していますからWebFontにも対応する可能性はあります。他にSVG形式のフォントを提供するSVGFontと呼ばれるWebFontの一種があります。これは多くのブラウザで対応されていません。 フォントはグリフのみを含むわけではありません。組版に必要な情報も含んでいます。この点において作成においては文字の知識以外に言語や組版の知識が必要となる場合があります。 フォントの大きな問題の一つは権利関係です。多言語を目的としたオープンでフリーなフォントを作るプロジェクトはいくつかあります。[http://sourceforge.jp/magazine/06/03/03/0329203 フリー・フォント・ライセンスの現状 - SourceForge.JP Magazine]を見てください。 === d.組版と描画 横書き用のフォントをそのまま縦書きに使用することはできません。アラビア文字やインド系文字は文字の並びによって文字が変化する必要があります。これらの操作量情報はフォントの中に含まれています。フォントの中からこれを取り出して実際に組版、描画するのはOSの機能です。WindowsではUniscribe、Mac OS Xでは ATSU、LinuxではPangoを使用しています。 === e.手書き文字入力 === f.変換 == 3.ロードマップ === a.単純な言語 ドイツ語やフランス語などのラテン系文字を使用する言語は概して単純な入力方法で間に合います。文字コード、組版、フォントは標準でコンピューターにインストールされています。 === b.複雑な言語 ==== 1.文字の組成が複雑な言語 インド、アジア系の文字は文字の並びによって複雑な変化や位置を取ります。文字数が少ないものは単純な入力方法で間に合います。文字コードや組版、フォントなどが追いついていないことがあります。 ==== 2.変換を必要とする言語 非常に多くの文字数を持つ言語、日本語や中国語など、は意図した文字を入力するのにキーボードだけでは足りません。必要に応じて適切な変換方法を取る必要があります。