ベンガル語の結合文字

複雑なベンガル文字
世界には多くの文字がある。日頃よく目にするものの多くはアルファベットで、それ以外の文字もあるが、なかなか触れる機会が無い。最近、ベンガル文字を読めるようになろうと勉強しているのだが、文字の形の判別が難しい。中でも厄介なのが結合文字である。 アルファベットと対応させると、sはসで、tはটと書くのだが、これを結合させたস্টという文字がある。これにさらにrを表すরをつけるとস্ট্রとなる。さらに母音のoをつけるとস্ট্রোてな感じになる。別の例としては、mのমとyのযとaをくっつけると、ম্যাとなる。 ただでさえ子音が30個以上もあって多いのに、結合文字を合わせると、一体いくつになるのだろう。この結合文字を文字コードとしてどう表現するのかというと、結合させることを表すコードを間にはさむと良いようだ。詳しくは、このページのソースを見れば分かるでしょう。結合文字に関する情報があまり手に入らなかったので、とりあえずコンピュータで表示してみて、どんな形になるかを調べて学習した。しかし、rが結合するとなぜ毛みたいになるのだろう。 外国の文字を勉強していると、日本語のひらがなやカタカナは、外国人にとっては、学習するのが難しいだろうなと思ってしまう。母音と子音に分かれているわけではないので、ひらがなだけでも約50ぐらいは覚えないといけないことになる。

2009/2/8追記 結合を表す文字は、子音のみを表す文字でもあるようだ。試しに、二つの子音を並べたときにどうなるかを表にしてみた。私の環境だと、結合文字はdisplayには表示されるけど、印刷すると子音を表す印が加わるだけで、結合文字としては表示されなかった。

ক্ক ক্খ ক্গ ক্ঘ ক্ঙ ক্চ ক্ছ ক্জ ক্ঝ ক্ঞ ক্ট ক্ঠ ক্ড ক্ঢ ক্ণ ক্ত ক্থ ক্দ ক্ধ ক্ন ক্প ক্ফ ক্ব ক্ভ ক্ম ক্য ক্র ক্ল ক্শ ক্ষ ক্স ক্হ
খ্ক খ্খ খ্গ খ্ঘ খ্ঙ খ্চ খ্ছ খ্জ খ্ঝ খ্ঞ খ্ট খ্ঠ খ্ড খ্ঢ খ্ণ খ্ত খ্থ খ্দ খ্ধ খ্ন খ্প খ্ফ খ্ব খ্ভ খ্ম খ্য খ্র খ্ল খ্শ খ্ষ খ্স খ্হ
গ্ক গ্খ গ্গ গ্ঘ গ্ঙ গ্চ গ্ছ গ্জ গ্ঝ গ্ঞ গ্ট গ্ঠ গ্ড গ্ঢ গ্ণ গ্ত গ্থ গ্দ গ্ধ গ্ন গ্প গ্ফ গ্ব গ্ভ গ্ম গ্য গ্র গ্ল গ্শ গ্ষ গ্স গ্হ
ঘ্ক ঘ্খ ঘ্গ ঘ্ঘ ঘ্ঙ ঘ্চ ঘ্ছ ঘ্জ ঘ্ঝ ঘ্ঞ ঘ্ট ঘ্ঠ ঘ্ড ঘ্ঢ ঘ্ণ ঘ্ত ঘ্থ ঘ্দ ঘ্ধ ঘ্ন ঘ্প ঘ্ফ ঘ্ব ঘ্ভ ঘ্ম ঘ্য ঘ্র ঘ্ল ঘ্শ ঘ্ষ ঘ্স ঘ্হ
ঙ্ক ঙ্খ ঙ্গ ঙ্ঘ ঙ্ঙ ঙ্চ ঙ্ছ ঙ্জ ঙ্ঝ ঙ্ঞ ঙ্ট ঙ্ঠ ঙ্ড ঙ্ঢ ঙ্ণ ঙ্ত ঙ্থ ঙ্দ ঙ্ধ ঙ্ন ঙ্প ঙ্ফ ঙ্ব ঙ্ভ ঙ্ম ঙ্য ঙ্র ঙ্ল ঙ্শ ঙ্ষ ঙ্স ঙ্হ
চ্ক চ্খ চ্গ চ্ঘ চ্ঙ চ্চ চ্ছ চ্জ চ্ঝ চ্ঞ চ্ট চ্ঠ চ্ড চ্ঢ চ্ণ চ্ত চ্থ চ্দ চ্ধ চ্ন চ্প চ্ফ চ্ব চ্ভ চ্ম চ্য চ্র চ্ল চ্শ চ্ষ চ্স চ্হ
ছ্ক ছ্খ ছ্গ ছ্ঘ ছ্ঙ ছ্চ ছ্ছ ছ্জ ছ্ঝ ছ্ঞ ছ্ট ছ্ঠ ছ্ড ছ্ঢ ছ্ণ ছ্ত ছ্থ ছ্দ ছ্ধ ছ্ন ছ্প ছ্ফ ছ্ব ছ্ভ ছ্ম ছ্য ছ্র ছ্ল ছ্শ ছ্ষ ছ্স ছ্হ
জ্ক জ্খ জ্গ জ্ঘ জ্ঙ জ্চ জ্ছ জ্জ জ্ঝ জ্ঞ জ্ট জ্ঠ জ্ড জ্ঢ জ্ণ জ্ত জ্থ জ্দ জ্ধ জ্ন জ্প জ্ফ জ্ব জ্ভ জ্ম জ্য জ্র জ্ল জ্শ জ্ষ জ্স জ্হ
ঝ্ক ঝ্খ ঝ্গ ঝ্ঘ ঝ্ঙ ঝ্চ ঝ্ছ ঝ্জ ঝ্ঝ ঝ্ঞ ঝ্ট ঝ্ঠ ঝ্ড ঝ্ঢ ঝ্ণ ঝ্ত ঝ্থ ঝ্দ ঝ্ধ ঝ্ন ঝ্প ঝ্ফ ঝ্ব ঝ্ভ ঝ্ম ঝ্য ঝ্র ঝ্ল ঝ্শ ঝ্ষ ঝ্স ঝ্হ
ঞ্ক ঞ্খ ঞ্গ ঞ্ঘ ঞ্ঙ ঞ্চ ঞ্ছ ঞ্জ ঞ্ঝ ঞ্ঞ ঞ্ট ঞ্ঠ ঞ্ড ঞ্ঢ ঞ্ণ ঞ্ত ঞ্থ ঞ্দ ঞ্ধ ঞ্ন ঞ্প ঞ্ফ ঞ্ব ঞ্ভ ঞ্ম ঞ্য ঞ্র ঞ্ল ঞ্শ ঞ্ষ ঞ্স ঞ্হ
ট্ক ট্খ ট্গ ট্ঘ ট্ঙ ট্চ ট্ছ ট্জ ট্ঝ ট্ঞ ট্ট ট্ঠ ট্ড ট্ঢ ট্ণ ট্ত ট্থ ট্দ ট্ধ ট্ন ট্প ট্ফ ট্ব ট্ভ ট্ম ট্য ট্র ট্ল ট্শ ট্ষ ট্স ট্হ
ঠ্ক ঠ্খ ঠ্গ ঠ্ঘ ঠ্ঙ ঠ্চ ঠ্ছ ঠ্জ ঠ্ঝ ঠ্ঞ ঠ্ট ঠ্ঠ ঠ্ড ঠ্ঢ ঠ্ণ ঠ্ত ঠ্থ ঠ্দ ঠ্ধ ঠ্ন ঠ্প ঠ্ফ ঠ্ব ঠ্ভ ঠ্ম ঠ্য ঠ্র ঠ্ল ঠ্শ ঠ্ষ ঠ্স ঠ্হ
ড্ক ড্খ ড্গ ড্ঘ ড্ঙ ড্চ ড্ছ ড্জ ড্ঝ ড্ঞ ড্ট ড্ঠ ড্ড ড্ঢ ড্ণ ড্ত ড্থ ড্দ ড্ধ ড্ন ড্প ড্ফ ড্ব ড্ভ ড্ম ড্য ড্র ড্ল ড্শ ড্ষ ড্স ড্হ
ঢ্ক ঢ্খ ঢ্গ ঢ্ঘ ঢ্ঙ ঢ্চ ঢ্ছ ঢ্জ ঢ্ঝ ঢ্ঞ ঢ্ট ঢ্ঠ ঢ্ড ঢ্ঢ ঢ্ণ ঢ্ত ঢ্থ ঢ্দ ঢ্ধ ঢ্ন ঢ্প ঢ্ফ ঢ্ব ঢ্ভ ঢ্ম ঢ্য ঢ্র ঢ্ল ঢ্শ ঢ্ষ ঢ্স ঢ্হ
ণ্ক ণ্খ ণ্গ ণ্ঘ ণ্ঙ ণ্চ ণ্ছ ণ্জ ণ্ঝ ণ্ঞ ণ্ট ণ্ঠ ণ্ড ণ্ঢ ণ্ণ ণ্ত ণ্থ ণ্দ ণ্ধ ণ্ন ণ্প ণ্ফ ণ্ব ণ্ভ ণ্ম ণ্য ণ্র ণ্ল ণ্শ ণ্ষ ণ্স ণ্হ
ত্ক ত্খ ত্গ ত্ঘ ত্ঙ ত্চ ত্ছ ত্জ ত্ঝ ত্ঞ ত্ট ত্ঠ ত্ড ত্ঢ ত্ণ ত্ত ত্থ ত্দ ত্ধ ত্ন ত্প ত্ফ ত্ব ত্ভ ত্ম ত্য ত্র ত্ল ত্শ ত্ষ ত্স ত্হ
থ্ক থ্খ থ্গ থ্ঘ থ্ঙ থ্চ থ্ছ থ্জ থ্ঝ থ্ঞ থ্ট থ্ঠ থ্ড থ্ঢ থ্ণ থ্ত থ্থ থ্দ থ্ধ থ্ন থ্প থ্ফ থ্ব থ্ভ থ্ম থ্য থ্র থ্ল থ্শ থ্ষ থ্স থ্হ
দ্ক দ্খ দ্গ দ্ঘ দ্ঙ দ্চ দ্ছ দ্জ দ্ঝ দ্ঞ দ্ট দ্ঠ দ্ড দ্ঢ দ্ণ দ্ত দ্থ দ্দ দ্ধ দ্ন দ্প দ্ফ দ্ব দ্ভ দ্ম দ্য দ্র দ্ল দ্শ দ্ষ দ্স দ্হ
ধ্ক ধ্খ ধ্গ ধ্ঘ ধ্ঙ ধ্চ ধ্ছ ধ্জ ধ্ঝ ধ্ঞ ধ্ট ধ্ঠ ধ্ড ধ্ঢ ধ্ণ ধ্ত ধ্থ ধ্দ ধ্ধ ধ্ন ধ্প ধ্ফ ধ্ব ধ্ভ ধ্ম ধ্য ধ্র ধ্ল ধ্শ ধ্ষ ধ্স ধ্হ
ন্ক ন্খ ন্গ ন্ঘ ন্ঙ ন্চ ন্ছ ন্জ ন্ঝ ন্ঞ ন্ট ন্ঠ ন্ড ন্ঢ ন্ণ ন্ত ন্থ ন্দ ন্ধ ন্ন ন্প ন্ফ ন্ব ন্ভ ন্ম ন্য ন্র ন্ল ন্শ ন্ষ ন্স ন্হ
প্ক প্খ প্গ প্ঘ প্ঙ প্চ প্ছ প্জ প্ঝ প্ঞ প্ট প্ঠ প্ড প্ঢ প্ণ প্ত প্থ প্দ প্ধ প্ন প্প প্ফ প্ব প্ভ প্ম প্য প্র প্ল প্শ প্ষ প্স প্হ
ফ্ক ফ্খ ফ্গ ফ্ঘ ফ্ঙ ফ্চ ফ্ছ ফ্জ ফ্ঝ ফ্ঞ ফ্ট ফ্ঠ ফ্ড ফ্ঢ ফ্ণ ফ্ত ফ্থ ফ্দ ফ্ধ ফ্ন ফ্প ফ্ফ ফ্ব ফ্ভ ফ্ম ফ্য ফ্র ফ্ল ফ্শ ফ্ষ ফ্স ফ্হ
ব্ক ব্খ ব্গ ব্ঘ ব্ঙ ব্চ ব্ছ ব্জ ব্ঝ ব্ঞ ব্ট ব্ঠ ব্ড ব্ঢ ব্ণ ব্ত ব্থ ব্দ ব্ধ ব্ন ব্প ব্ফ ব্ব ব্ভ ব্ম ব্য ব্র ব্ল ব্শ ব্ষ ব্স ব্হ
ভ্ক ভ্খ ভ্গ ভ্ঘ ভ্ঙ ভ্চ ভ্ছ ভ্জ ভ্ঝ ভ্ঞ ভ্ট ভ্ঠ ভ্ড ভ্ঢ ভ্ণ ভ্ত ভ্থ ভ্দ ভ্ধ ভ্ন ভ্প ভ্ফ ভ্ব ভ্ভ ভ্ম ভ্য ভ্র ভ্ল ভ্শ ভ্ষ ভ্স ভ্হ
ম্ক ম্খ ম্গ ম্ঘ ম্ঙ ম্চ ম্ছ ম্জ ম্ঝ ম্ঞ ম্ট ম্ঠ ম্ড ম্ঢ ম্ণ ম্ত ম্থ ম্দ ম্ধ ম্ন ম্প ম্ফ ম্ব ম্ভ ম্ম ম্য ম্র ম্ল ম্শ ম্ষ ম্স ম্হ
য্ক য্খ য্গ য্ঘ য্ঙ য্চ য্ছ য্জ য্ঝ য্ঞ য্ট য্ঠ য্ড য্ঢ য্ণ য্ত য্থ য্দ য্ধ য্ন য্প য্ফ য্ব য্ভ য্ম য্য য্র য্ল য্শ য্ষ য্স য্হ
র্ক র্খ র্গ র্ঘ র্ঙ র্চ র্ছ র্জ র্ঝ র্ঞ র্ট র্ঠ র্ড র্ঢ র্ণ র্ত র্থ র্দ র্ধ র্ন র্প র্ফ র্ব র্ভ র্ম র্য র্র র্ল র্শ র্ষ র্স র্হ
ল্ক ল্খ ল্গ ল্ঘ ল্ঙ ল্চ ল্ছ ল্জ ল্ঝ ল্ঞ ল্ট ল্ঠ ল্ড ল্ঢ ল্ণ ল্ত ল্থ ল্দ ল্ধ ল্ন ল্প ল্ফ ল্ব ল্ভ ল্ম ল্য ল্র ল্ল ল্শ ল্ষ ল্স ল্হ
শ্ক শ্খ শ্গ শ্ঘ শ্ঙ শ্চ শ্ছ শ্জ শ্ঝ শ্ঞ শ্ট শ্ঠ শ্ড শ্ঢ শ্ণ শ্ত শ্থ শ্দ শ্ধ শ্ন শ্প শ্ফ শ্ব শ্ভ শ্ম শ্য শ্র শ্ল শ্শ শ্ষ শ্স শ্হ
ষ্ক ষ্খ ষ্গ ষ্ঘ ষ্ঙ ষ্চ ষ্ছ ষ্জ ষ্ঝ ষ্ঞ ষ্ট ষ্ঠ ষ্ড ষ্ঢ ষ্ণ ষ্ত ষ্থ ষ্দ ষ্ধ ষ্ন ষ্প ষ্ফ ষ্ব ষ্ভ ষ্ম ষ্য ষ্র ষ্ল ষ্শ ষ্ষ ষ্স ষ্হ
স্ক স্খ স্গ স্ঘ স্ঙ স্চ স্ছ স্জ স্ঝ স্ঞ স্ট স্ঠ স্ড স্ঢ স্ণ স্ত স্থ স্দ স্ধ স্ন স্প স্ফ স্ব স্ভ স্ম স্য স্র স্ল স্শ স্ষ স্স স্হ
হ্ক হ্খ হ্গ হ্ঘ হ্ঙ হ্চ হ্ছ হ্জ হ্ঝ হ্ঞ হ্ট হ্ঠ হ্ড হ্ঢ হ্ণ হ্ত হ্থ হ্দ হ্ধ হ্ন হ্প হ্ফ হ্ব হ্ভ হ্ম হ্য হ্র হ্ল হ্শ হ্ষ হ্স হ্হ

2009/3/29追記 OSを入れ替えたら、結合文字が表示されなくなってしまった。まあ、フォントの問題なのだろうが。

Read more...

utf-8でdiary

部分的なUTF-8
tDiaryはEUC-JPの指定があるようだ。UTF-8の文字を埋め込むにはどうしたら良いのだろうと思っていたが、何も指定しないで書いてみたら、表示されている。自動でUTF-8の部分を判定してくれているようだ。ちなみに、ベンガル文字はহাইড্রোজেনてな感じ。この単語の意味は水素です。

Read more...

utf-8とhtml

utf-8の番号
htmlで多国語を扱うときには、utf-8が便利である。しかし、utf-8の文字を入力するのはそれほど簡単ではない。バイナリをいじったりする必要もある。htmlでは、অなどという書き方をすることができ、これだと普通のエディタで編集できるので、扱いやすい。このバイナリと番号の対応が分からなかったのだが、

man utf-8

としたら、変換の仕方が説明してあった。原理が分かったので、変換スクリプトをrubyで書こうと思ったら、

p "\xe0\xa6\xbe".unpack("U*")

で変換できてしまった。簡単に書けてうれしいような、アルゴリズムを考える必要が無くなって悲しいような。この数字に&#につければ、バイナリの代わりに文字を表すことができる。これで、ベンガル語のhtmlを楽に書けるようになった。

Read more...

ベンガル語のフォント

ベンガル語とlinux
ベンガル語を勉強する必要がでてきたので、とりあえずフォントをインストールした。

aptitude install ttf-indic-fonts

あとはXを再起動しないといけないらしい。ctrl+alt+backspaceで再起動するが、他のプログラムも止まるので、仕事が終わってからにしよう。

Read more...

lennyのGPIB

lennyにGPIBをいれてみた
lennyのリリースがもうそろそろということで、lennyをインストールした。Xを入れるつもりはなかったので、標準システムしか入れなかったので、特にetchとの違いは感じなかった。etchではなぜかgpibのパッケージが無かったが、lennyは今のところgpibに対応してみるようなので、GPIBもインストールしてみた。

aptitude install gpib-modules-source
module-assistant auto-install gpib
aptitude install libgpib0-dev

としたら、すべてのパッケージがそろった。あとは、/etc/gpib.confでnameを適宜変更して、/etc/groupでユーザーのグループを設定する。今回のボードでは

name="ni_pci_accel"

とした。gpib-rubyのインストールはetchとかとほとんど同じだった。 設定をいろいろといじっていたら、起動したときにうまく組み込まれなかったり、gpib_configが実行されなかったりしたが、結局ボードの設定のみをいじれば良いらしい。 以前に比べると、インストールのときに打つコマンドが非常に少なくなったように感じる。gpib-modules-sourceをいれたらkernelのソースも自動的に入ったし、modprobeの設定も自動にされるようだ。しかし、くせをつかむまでにはやはり多少苦労した。

Read more...

telnetのインストール

telnetとssh
最近はsshのみでtelnetはほとんど使わないのだが、windowsとlinuxからなる外につながっていないネットワークで使用しようと思って、linuxにtelnetをインストールした。windowsではsshも使えないので、cygwinを入れるのも面倒だし、telnetでいこうということになったのだ。 sshはコマンドラインで一発でインストールできるのだが、telnetは意外に面倒だった。まずは、aptでtelnetdを入れて、/etc/inetd.confに

telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd

という行を追加する。さらに/etc/hosts.allowのホストですべてを許可するように、

ALL: ALL

とする。そして、inetdを再起動するために、

/etc/init.d/openbsd-inetd restart

とする。ついでにftpdもインストールしたが、こちらは特に設定する必要はなかった。 windowsがsshに対応していれば、こんなこともしなくても良いのだが。少しは他のOSとの共存を考えてほしいものである。

Read more...

localhost

127.0.0.1 or 127.0.1.1
socketのプログラムを書いていて、サーバーが動いているマシンと同じマシンからのアクセスなのか、異なるマシンからのアクセスなのかを判断しようとして、少し迷った。サーバー側でクライアントの情報を見ると、自分のマシンが127.0.1.1になっている。localhostは127.0.0.1なのに変だなと思って調べると、/etc/hostsには’localhost’だと127.0.0.1で、ホスト名だと127.0.1.1となるらしい。とりあえず、127.0.1.1の時は、同じマシンからのアクセスだということにした。

Read more...

StringIO

CGIのformのデータ
CGIをrubyを使って書くことがあるが、formのデータを取り込むときには、

data=cgi.params["data"].collect{|l| l.read}

というようにしている。しかし、一度readしてしまうと、もう読めなくなってしまう。これをなんとかしたかったのだが、これまでどうしたら良いかが分からなかった。調べてみたら、上のlのclassはStringIOというもので、文字列なんだけどIOとして扱えるものらしい。読み込んだデータをもとに、もう一度StringIOを作ってやれば良いのだろうということで、

cgi.params["data"]=data.collect{|l| StringIO.new(l)}

としてみたら、うまく行った。読み込むたびにこれをやるのも面倒だが。もっと良い方法があるのかも知れないが、これで動いているからまあ良いかな。

Read more...

window manager

いくつかのwindow managerを試してみた。
現在、icewmを使っているが、調べてみると、このところあまり開発は盛んではないようだ。個人的には、軽いし最低限の機能はあるので、不満は無いのだが、開発が止まってしまうと徐々に廃れていく。 fluxboxをインストールして、試してみた。icewmのメニューのsystemのwindow managerのところには無かったので、.xsessionを書き換えて起動したが、後でみたら、プログラムの下のウィンドウマネージャにはあった。少し使った感じでは、まあまあ良い感じだが、メニューの一部が文字化けしていた。tabとslitが特徴らしいが、なぜか動かなかったので、icewmと比べて特に惹かれる点はあまり無いように感じた。 折角なので、Xfce4も使ってみた。こちらは統合環境の割には、起動が速くて関心した。あまりうるさい感じはしないし。キーボードショートカットの設定も比較的簡単なようだし。icewmの次の候補にしておこう。

Read more...

Debian

lennyのreleaseも間近か
久しぶりにDebianのサイトを覗いてみたら、次期メジャーリリースが近付いているようだ。リリースに関与するバグの数が100ぐらいになっている。過去の例を見ると、あと二ヶ月ほどでリーリスされる可能性が高い。 思い返してみると、メインマシンのOSをWindowsからLinux替えたのが約三年半前で、Sargeがリリースした後だった。それから二年ほどたってEtchに代えて、次はLennyか。 そういえば、研究室にはまだSargeのマシンがあるので、そろそろ入れ替えないといけないかな。EtchはなぜかGPIBがパッケージの形ではサポートされていないようだったので、なんとなくそのままにしてある。Lennyではパッケージが提供されるかな。Etchには、SSLの重大なバグがあったし。 まあ、新しいOSにしてもほとんど自分流のカスタマイズをしてしまうので、ほとんど変わらないのだけども、リリースが待ち遠しいな。そろそろGNOMEとかKDEとかにも慣れないといけないのかな。

Read more...