Path: maczuka-news!localhost!kaz From: kaz@maczuka.hitachi.ibaraki.jp (Ito Kazumitsu) Newsgroups: fj.sources Subject: Romanized Thai to Thai Converter Date: 10 Mar 1996 07:21:56 GMT Organization: K. & M. Ito, Hitachi, Ibaraki, JAPAN Lines: 386 Message-ID: NNTP-Posting-Host: localhost.maczuka.hitachi.ibaraki.jp 伊藤@日立市です. 以前,ローマ字表記されたタイ語テキストをタイ文字で表示するための PostScript プログラムに変換するプログラムを投稿しましたが,出力 される文字が金釘流で美しくないなどの問題がありました.しかしながら, Mule を使えば簡単にタイ語が表示できることを思うと,前のプログラムを 改良しようという意欲は失せました. そこで,今回投稿するのは,ローマ字表記されたタイ語のテキストを, 本当のタイ語テキストに変換するプログラム rth2th です. 日本ではタイ語の入力の方法を知っている人は少ないでしょうし,大量に タイ語の文章を書く必要のある人以外はタイ語の入力の方法を覚えたい とも思わないでしょうから,ローマ字によるタイ語の入力は便利だろうと 思います.そんなわけで,短いタイ語の文章を書きたい人には,rth2th が 使えるのではないかと思います. 以下,rth2th のパッケージです. # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # README # rth2th # test.sh # thairoma.txt # echo x - README sed 's/^X//' >README << 'END-of-README' X ローマ字表記タイ語テキストをタイ語テキストに変換するプログラム X X 1996.3.10 X 伊藤一光 X Xrth2th はローマ字表記されたタイ語テキストを TIS620 の文字セットを使った Xタイ語テキストに変換するするものです. X Xタイ語の入力をするのに,TIS620 のコードを直接入力するのは面倒ですし, Xそもそも日本ではタイ語のキーボードは,ほとんど見かけません.また, Xタイ語のテキストを書いても,読む側にタイ語を読める環境がなければ X全く読めません. X Xそこで考案したのがローマ字表記によるタイ語テキストです.短い文章を X書くだけの場合には,ローマ字表記でテキストを書けば,rth2th でタイ語 Xテキストに変換できますし,そのテキストを他人に送る場合,相手が Xタイ語の環境を持っていない場合でも判読は可能です. X Xこのパッケージに含まれるソースのいかなる複写,改変,修正も X許諾します.このプログラムについては何の保証もありません. X X利用の前提条件 X X rth2ps は perl 4.0 のスクリプトであり,perl が必要です. X Xパッケージの内容 X X README このファイル X rth2th rth2th プログラム(perl スクリプト) X test.sh rth2th テスト用 shell スクリプト X thairoma.txt rth2th で扱うタイ語のローマ字表記方法の解説 X X使い方 X X rth2ps [file] X X rth2th は file に指定されたファイルからローマ字表記されたタイ語 X テキストを読み込んで 7-bit エンコードされたタイ語テキストを生成し, X それを標準出力に書き出す. X X 出力されるテキストは,Mule で *junet* と呼ぶところの 7-bit encoding X がなされており,タイ語部分の始まりに ESC , T がつけられている. X X file を省略するか,"-" (負号)を指定すると標準入力が使われる. X X以上 END-of-README echo x - rth2th sed 's/^X//' >rth2th << 'END-of-rth2th' X#! /usr/bin/perl X# X# Romanized Thai to TIS 620-2533 Thai converter Ver 0.5, Mar 10, 1996 X# Ito Kazumitsu (kaz@maczuka.hitachi.ibaraki.jp) X# X# rth2ps [file] X X$ThaiESC="\x1b,T"; X$ASCIIESC="\x1b(B"; X X%thai=( X "k", "\x21", X "Kh", "\x22", X "Kh1", "\x23", X "kh", "\x24", X "kh2", "\x25", X "kh1", "\x26", X "ng", "\x27", X "c", "\x28", X "Ch", "\x29", X "ch", "\x2A", X "s", "\x2B", X "ch1", "\x2C", X "j", "\x2D", X "d1", "\x2E", X "t1", "\x2F", X "Th1", "\x30", X "th1", "\x31", X "th2", "\x32", X "n1", "\x33", X "d", "\x34", X "t", "\x35", X "Th", "\x36", X "th", "\x37", X "th2", "\x38", X "n", "\x39", X "b", "\x3A", X "p", "\x3B", X "Ph", "\x3C", X "F", "\x3D", X "ph", "\x3E", X "f", "\x3F", X "ph1", "\x40", X "m", "\x41", X "y", "\x42", X "r", "\x43", X "l", "\x45", X "w", "\x47", X "S1", "\x48", X "S2", "\x49", X "S", "\x4A", X "H", "\x4B", X "l1", "\x4C", X "O", "\x4D", X "h", "\x4E", X "a", "\x51", X ":", "\x50", X "aa", "\x52", X "i", "\x54", X "ii", "\x55", X "U", "\x56", X "Uu", "\x57", X "u", "\x58", X "uu", "\x59", X "e", "\x60", X "&", "\x67", X "E", "\x61", X "o", "\x62", X "am", "\x53", X "ai1", "\x63", X "ai", "\x64", X "`", "\x68", X "^", "\x69", X "'", "\x6A", X "+", "\x6B", X "#0", "\x70", X "#1", "\x71", X "#2", "\x72", X "#3", "\x73", X "#4", "\x74", X "#5", "\x75", X "#6", "\x76", X "#7", "\x77", X "#8", "\x78", X "#9", "\x79", X "rU", "\x44", X "lU", "\x46", X "*", "\x6C", X "x2", "\x66", X "~", "\x4F", X "nl", "$ASCIIESC\n$ThaiESC", X "B", "\x5F", X "Ua", "\x65", X "<", "\x1b0", X ">", "\x1b1", X " ", " ", X "\t", "\t", X); X X$inf=($ARGV[0] ? $ARGV[0] : "-"); X$thai_mode=1; Xopen(inf,$inf) || die "$inf cannot be opened\n"; Xprint $ThaiESC; Xwhile() { X while($_) { X print &get_char; X } X} Xclose(inf); Xexit; X Xsub get_char { X local($return); X if($thai_mode) { X if($_ eq "") { $return=""; } X else { X $return=substr($_,0,1); $_=substr($_,1); X if($return eq "(") { X ($return,$_)=($_=~/([^)\n]+)[)\n](.*)/); X } X if($return eq "ESC") { X $thai_mode=0; X $dlm=substr($_,0,1); $_=substr($_,1); X $return=$ASCIIESC; X } X else { X $return=$thai{$return}; X } X } X } X else { X $return=substr($_,0,1); $_=substr($_,1); X if($return eq $dlm) { X $thai_mode=1; X $return=$ThaiESC; X } X } X $return; X} X END-of-rth2th echo x - test.sh sed 's/^X//' >test.sh << 'END-of-test.sh' X./rth2th - << 'EOF' > test.txt XeOl(ng)c(aa)kr(Th)(ai)FS(aa)yoOm(aa) <(th)(ii)`> XS(Th)(aa)(ng):oOk: E(ng) XOo:ot:(ng)en(ai)p<(th)(ii)`><(ch)`>O(ng)(nl) Xtrwcw o:ot:(ng)(ai)<(kh)`>Oy(ai)(ng)r(Th) X(ai)FOyk (ng)(ai)Oy(aa)k<(kh)(Uu)>nw<(th)(ii)`> Xk(am)(ai)O(aa)(ng)(nl) XHw(ng)EHn(ai1)b(kh)ntrwcw(nl) X(ESC)' X XThe Thai text above is taken from Thai version of X TOTTO-CHAN X The Little Girl at the Window X By Tetsuko Kuroyanagi X (ISBN 974-87251-3-8) X X' Xo (ESC)'kaz@maczuka.hitachi.ibaraki.jp' XEOF END-of-test.sh echo x - thairoma.txt sed 's/^X//' >thairoma.txt << 'END-of-thairoma.txt' X タイ文字のローマ字による表記法 X Xrth2th プログラムで変換可能な,ローマ字によるタイ語表記法を次に示す. X X原則 X(1) 前置きの母音字はタイ語の表記のとおり子音の前に置く. X(2) 後置き,上置き,下置きの母音字と声調符号は子音の後に置く. X(3) 子音とその上下に置かれる母音や符号のまとまりは <> でくくる. X(4) 複数の文字の並びでひとつのタイ文字を表わす場合は X その文字の並びを括弧でくくる. X X子音字 X X番号 表記 コード 表わされるタイ文字 X X 1 k 0xA1 kai (鶏)の k X 2 (Kh) 0xA2 khai (卵)の kh X 2' (Kh1) 0xA3 2 番と似た文字で古い本に現れる kh (KHO KHUAT) X 3 (kh) 0xA4 khwaai (水牛)の kh X 3' (kh2) 0xA5 3 番と似た文字で古い本に現れる kh (KHO KHON) X 4 (kh1) 0xA6 rakhang(鐘)の kh X 5 (ng) 0xA7 nguu (蛇)の ng X 6 c 0xA8 can (旃檀)の c X 7 (Ch) 0xA9 ching (小型シンバル)の ch X 8 (ch) 0xAA chaang (象)の ch X 9 s 0xAB soo (胡弓)の s X10 (ch1) 0xAC chaapanakit (火葬)の ch (CHO CHOE) X11 j 0xAD ying (女)の y X12 (d1) 0xAE diikaa (請願)の d (DO CHADA) X13 (t1) 0xAF 12 番と似た文字の t (TO PATAK) X14 (Th1) 0xB0 thaan (基礎)の th X15 (th1) 0xB1 21 番と似た文字であまり使われない th (THO NANGMONTHO) X16 (th2) 0xB2 thau (老人)の th X17 (n1) 0xB3 neen (少年僧)の n X18 d 0xB4 dek (子ども)の d X19 t 0xB5 tau (亀)の t X20 (Th) 0xB6 thung (袋)の th X21 (th) 0xB7 thahaan (軍人)の th X22 (th2) 0xB8 thong (旗)の th X23 n 0xB9 nuu (ねずみ)の n X24 b 0xBA baimai(木の葉)の b X25 p 0xBB plaa(魚)の p X26 (Ph) 0xBC phung(蜜蜂)の ph X27 F 0xBD faa(蓋)の f X28 (ph) 0xBE phaan (台つきの盛り皿)の ph X29 f 0xBF fan (歯)の f X30 (ph1) 0xC0 phai(危険)の ph (PHO SAMPHAO) X31 m 0xC1 maa (馬)の m X32 y 0xC2 yaa (薬)の y (YO YAK) X33 r 0xC3 rua (舟)の r X34 l 0xC5 ling(猿)の l X35 w 0xC7 wen (めがね)の w X36 (S1) 0xC8 sala(あずまや)の s X37 (S2) 0xC9 praisanii (郵便)の s (SO RUSI) X38 S 0xCA sua (虎)の s X39 H 0xCB hiip(箱)の h X40 (l1) 0xCC culaa (チュラーロンコーン)の l X41 O 0xCD ook (出る)の oo (O ANG) X42 h 0xCE nokhuuk(ふくろう)の h X X母音字 X X番号 表記 コード 表わされるタイ文字 X X 1 a 0xD1 pak (泊まる)の a X 2 : 0xD0 kradaat (紙)の kra の a X 3 (aa) 0xD2 kaa (カラス)の aa X 4 i 0xD4 kin (食べる)の i X 5 (ii) 0xD5 kii (幾つ)の ii X 6 U 0xD6 khrung (半分)の u X 7 (Uu) 0xD7 duum (飲む)の uu X 8 u 0xD8 kung (蝦)の u X 9 (uu) 0xD9 nguu (蛇)の uu X10 e 0xE0 keem (ゲーム)の ee (前置き) X11 & 0xE7 子音の上につけて 10番,12番を短母音にする記号 X12 E 0xE1 kae (年とった)の ae (前置き) X13 o 0xE2 roong (工場,学校などの建物)の oo (前置き) X14 (am) 0xD3 nam (水)の am X15 (ai1) 0xE3 cai (心)の ai (前置き) X16 (ai) 0xE4 kai (鶏)の ai (前置き) X X声調符号 X X番号 表記 コード 表わされるタイ文字 X X1 ` 0xE8 マイ・エーク X2 ^ 0xE9 マイ・トー X3 ' 0xEA マイ・トリー X4 + 0xEB マイ・ヂャタワー X X数字 X X番号 表記 コード 表わされるタイ文字 X X0 (#0) 0xF0 タイ数字の0 X1 (#1) 0xF1 タイ数字の1 X2 (#2) 0xF2 タイ数字の2 X3 (#3) 0xF3 タイ数字の3 X4 (#4) 0xF4 タイ数字の4 X5 (#5) 0xF5 タイ数字の5 X6 (#6) 0xF6 タイ数字の6 X7 (#7) 0xF7 タイ数字の7 X8 (#8) 0xF8 タイ数字の8 X9 (#9) 0xF9 タイ数字の9 X Xその他 X X番号 表記 コード 表わされるタイ文字 X X1 (rU) 0xC4 pharuhat (木曜)の ru X2 (lU) 0xC6 lu X3 * 0xEC 子音字について,その子音が発音されないことを表わす記号 X4 (x2) 0xE6 繰り返しの記号 X5 ~ 0xCF 省略の記号 X6 B 0xDF バーツの通貨記号 X7 (Ua) 0xE5 1番と2番を長音にする記号 X8 (nl) 改行 X9 (ESC) (ESC) の後の1文字を区切り文字として,次に X 区切り文字が現れるまでの間はタイ文字に変換 X しない. X X表記例 X Xk(ng)e(th)(ph)mH(aa)n(kh)r クルンテープマハーナコン X (バンコクの正式名) Xk(ng)e(th)(ph)~ クルンテープ(バンコクの通称) X(ai)pr(S2)<(n1)(ii)> 郵便 XeOe<(ch)i^>t ワイシャツ Xkr:d(aa)(S2) 紙 Xwyeyw 米の粉で作る中国式麺類 XepOen パーセント Xnl:(ESC)'50'B 1個50バーツ END-of-thairoma.txt exit -- ******************************************************************* 日立市在住 伊藤一光 kaz@maczuka.hitachi.ibaraki.jp Ito Kazumitsu Hitachi, Ibaraki, JAPAN