Most functions rewritten.
[bpt/emacs.git] / lisp / language / tibetan.el
CommitLineData
56c8bc03 1;;; tibetan.el --- Support for Tibetan language -*- coding: iso-2022-7bit; -*-
80d75b56 2
80d75b56 3;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
fa526c4a 4;; Licensed to the Free Software Foundation.
80d75b56
KH
5
6;; Keywords: multilingual, Tibetan
7
8;; This file is part of GNU Emacs.
9
10;; GNU Emacs is free software; you can redistribute it and/or modify
11;; it under the terms of the GNU General Public License as published by
12;; the Free Software Foundation; either version 2, or (at your option)
13;; any later version.
14
15;; GNU Emacs is distributed in the hope that it will be useful,
16;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;; GNU General Public License for more details.
19
20;; You should have received a copy of the GNU General Public License
21;; along with GNU Emacs; see the file COPYING. If not, write to the
22;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23;; Boston, MA 02111-1307, USA.
24
25;; Author: Toru TOMABECHI, <Toru.Tomabechi@orient.unil.ch>
26
27;; Created: Feb. 17. 1997
28
29;; History:
30;; 1997.03.13 Modification for special signs and punctuations.
31
32;;; Code:
33
80d75b56
KH
34;;; Tibetan Character set.
35;;; \x2130 -- \x234a is a subset of Unicode v.2 \x0f00 - \x0fb9
36;;; with a slight modification. And there are some subjoined
37;;; consonants which are not specified in Unicode.
38;;; I hope I can add missing characters later.
39;;;
40;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
41;;;2120 // \e$(7!!\e(B \e$(7!"\e(B \e$(7!#\e(B \e$(7!$\e(B \e$(7!%\e(B \e$(7!&\e(B \e$(7!'\e(B \e$(7!(\e(B \e$(7!)\e(B \e$(7!*\e(B \e$(7!+\e(B \e$(7!,\e(B \e$(7!-\e(B \e$(7!.\e(B \e$(7!/\e(B ;
42;;;2130 \e$(7!0\e(B \e$(7!1\e(B \e$(7!2\e(B \e$(7!3\e(B \e$(7!4\e(B \e$(7!5\e(B \e$(7!6\e(B \e$(7!7\e(B \e$(7!8\e(B \e$(7!9\e(B \e$(7!:\e(B \e$(7!;\e(B \e$(7!<\e(B \e$(7!=\e(B \e$(7!>\e(B \e$(7!?\e(B ; Punctuations,
43;;;2140 \e$(7!@\e(B \e$(7!A\e(B \e$(7!B\e(B \e$(7!C\e(B \e$(7!D\e(B \e$(7!E\e(B \e$(7!F\e(B \e$(7!G\e(B \e$(7!H\e(B \e$(7!I\e(B \e$(7!J\e(B \e$(7!K\e(B \e$(7!L\e(B \e$(7!M\e(B \e$(7!N\e(B \e$(7!O\e(B ; Digits and
44;;;2150 \e$(7!P\e(B \e$(7!Q\e(B \e$(7!R\e(B \e$(7!S\e(B \e$(7!T\e(B \e$(7!U\e(B \e$(7!V\e(B \e$(7!W\e(B \e$(7!X\e(B \e$(7!Y\e(B \e$(7!Z\e(B \e$(7![\e(B \e$(7!\\e(B \e$(7!]\e(B \e$(7!^\e(B \e$(7!_\e(B ; Special signs.
45;;;2160 \e$(7!`\e(B \e$(7!a\e(B \e$(7!b\e(B \e$(7!c\e(B \e$(7!d\e(B \e$(7!e\e(B \e$(7!f\e(B \e$(7!g\e(B \e$(7!h\e(B \e$(7!i\e(B \e$(7!j\e(B \e$(7!k\e(B \e$(7!l\e(B \e$(7!m\e(B \e$(7!n\e(B \e$(7!o\e(B ;
46;;;2170 \e$(7!p\e(B \e$(7!q\e(B \e$(7!r\e(B \e$(7!s\e(B \e$(7!t\e(B \e$(7!u\e(B \e$(7!v\e(B \e$(7!w\e(B \e$(7!x\e(B \e$(7!y\e(B \e$(7!z\e(B \e$(7!{\e(B \e$(7!|\e(B \e$(7!}\e(B \e$(7!~\e(B // ;
47;;;
48;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
49;;;2220 // \e$(7"!\e(B \e$(7""\e(B \e$(7"#\e(B \e$(7"$\e(B \e$(7"%\e(B \e$(7"&\e(B \e$(7"'\e(B \e$(7"(\e(B \e$(7")\e(B \e$(7"*\e(B \e$(7"+\e(B \e$(7",\e(B \e$(7"-\e(B \e$(7".\e(B \e$(7"/\e(B ; Base consonants
50;;;2230 \e$(7"0\e(B \e$(7"1\e(B \e$(7"2\e(B \e$(7"3\e(B \e$(7"4\e(B \e$(7"5\e(B \e$(7"6\e(B \e$(7"7\e(B \e$(7"8\e(B \e$(7"9\e(B \e$(7":\e(B \e$(7";\e(B \e$(7"<\e(B \e$(7"=\e(B \e$(7">\e(B \e$(7"?\e(B ; and
51;;;2240 \e$(7"@\e(B \e$(7"A\e(B \e$(7"B\e(B \e$(7"C\e(B \e$(7"D\e(B \e$(7"E\e(B \e$(7"F\e(B \e$(7"G\e(B \e$(7"H\e(B \e$(7"I\e(B \e$(7"J\e(B \e$(7"K\e(B \e$(7"L\e(B \e$(7"M\e(B \e$(7"N\e(B \e$(7"O\e(B ; Vowel signs.
52;;;2250 \e$(7"P\e(B \e$(7"Q\e(B \e$(7"R\e(B \e$(7"S\e(B \e$(7"T\e(B \e$(7"U\e(B \e$(7"V\e(B \e$(7"W\e(B \e$(7"X\e(B \e$(7"Y\e(B \e$(7"Z\e(B \e$(7"[\e(B \e$(7"\\e(B \e$(7"]\e(B \e$(7"^\e(B \e$(7"_\e(B ; (\x2251 = vowel a)
53;;;2260 \e$(7"`\e(B \e$(7"a\e(B \e$(7"b\e(B \e$(7"c\e(B \e$(7"d\e(B \e$(7"e\e(B \e$(7"f\e(B \e$(7"g\e(B \e$(7"h\e(B \e$(7"i\e(B \e$(7"j\e(B \e$(7"k\e(B \e$(7"l\e(B \e$(7"m\e(B \e$(7"n\e(B \e$(7"o\e(B ; Long vowels and
54;;;2270 \e$(7"p\e(B \e$(7"q\e(B \e$(7"r\e(B \e$(7"s\e(B \e$(7"t\e(B \e$(7"u\e(B \e$(7"v\e(B \e$(7"w\e(B \e$(7"x\e(B \e$(7"y\e(B \e$(7"z\e(B \e$(7"{\e(B \e$(7"|\e(B \e$(7"}\e(B \e$(7"~\e(B // ; vocalic r, l are
55;;; ; not atomically
56;;; ; encoded.
57;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
58;;;2320 // \e$(7#!\e(B \e$(7#"\e(B \e$(7##\e(B \e$(7#$\e(B \e$(7#%\e(B \e$(7#&\e(B \e$(7#'\e(B \e$(7#(\e(B \e$(7#)\e(B \e$(7#*\e(B \e$(7#+\e(B \e$(7#,\e(B \e$(7#-\e(B \e$(7#.\e(B \e$(7#/\e(B ; Subjoined consonants
59;;;2330 \e$(7#0\e(B \e$(7#1\e(B \e$(7#2\e(B \e$(7#3\e(B \e$(7#4\e(B \e$(7#5\e(B \e$(7#6\e(B \e$(7#7\e(B \e$(7#8\e(B \e$(7#9\e(B \e$(7#:\e(B \e$(7#;\e(B \e$(7#<\e(B \e$(7#=\e(B \e$(7#>\e(B \e$(7#?\e(B ;
60;;;2340 \e$(7#@\e(B \e$(7#A\e(B \e$(7#B\e(B \e$(7#C\e(B \e$(7#D\e(B \e$(7#E\e(B \e$(7#F\e(B \e$(7#G\e(B \e$(7#H\e(B \e$(7#I\e(B \e$(7#J\e(B \e$(7#K\e(B \e$(7#L\e(B \e$(7#M\e(B \e$(7#N\e(B \e$(7#O\e(B ; 'a chung (\x2341)is
61;;; ; here,
62;;; ; while in Unicode
63;;; ; it is classified
64;;; ; as a vowel sign
65;;; ; (\x0f71).
66;;;
67;;;2350 \e$(7#P\e(B \e$(7#Q\e(B \e$(7#R\e(B \e$(7#S\e(B \e$(7#T\e(B \e$(7#U\e(B \e$(7#V\e(B \e$(7#W\e(B \e$(7#X\e(B \e$(7#Y\e(B \e$(7#Z\e(B \e$(7#[\e(B \e$(7#\\e(B \e$(7#]\e(B \e$(7#^\e(B \e$(7#_\e(B ; Hereafter, the chars
68;;;2360 \e$(7#`\e(B \e$(7#a\e(B \e$(7#b\e(B \e$(7#c\e(B \e$(7#d\e(B \e$(7#e\e(B \e$(7#f\e(B \e$(7#g\e(B \e$(7#h\e(B \e$(7#i\e(B \e$(7#j\e(B \e$(7#k\e(B \e$(7#l\e(B \e$(7#m\e(B \e$(7#n\e(B \e$(7#o\e(B ; are not specified
69;;;2370 \e$(7#p\e(B \e$(7#q\e(B \e$(7#r\e(B \e$(7#s\e(B \e$(7#t\e(B \e$(7#u\e(B \e$(7#v\e(B \e$(7#w\e(B \e$(7#x\e(B \e$(7#y\e(B \e$(7#z\e(B \e$(7#{\e(B \e$(7#|\e(B \e$(7#}\e(B \e$(7#~\e(B // ; in Unicode.
70;;; ; The character \x2351
71;;; ; is not used in our
72;;; ; implementation.
73;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
74;;;2420 // \e$(7$!\e(B \e$(7$"\e(B \e$(7$#\e(B \e$(7$$\e(B \e$(7$%\e(B \e$(7$&\e(B \e$(7$'\e(B \e$(7$(\e(B \e$(7$)\e(B \e$(7$*\e(B \e$(7$+\e(B \e$(7$,\e(B \e$(7$-\e(B \e$(7$.\e(B \e$(7$/\e(B ; Precomposed
75;;;2430 \e$(7$0\e(B \e$(7$1\e(B \e$(7$2\e(B \e$(7$3\e(B \e$(7$4\e(B \e$(7$5\e(B \e$(7$6\e(B \e$(7$7\e(B \e$(7$8\e(B \e$(7$9\e(B \e$(7$:\e(B \e$(7$;\e(B \e$(7$<\e(B \e$(7$=\e(B \e$(7$>\e(B \e$(7$?\e(B ; consonants for
76;;;2440 \e$(7$@\e(B \e$(7$A\e(B \e$(7$B\e(B \e$(7$C\e(B \e$(7$D\e(B \e$(7$E\e(B \e$(7$F\e(B \e$(7$G\e(B \e$(7$H\e(B \e$(7$I\e(B \e$(7$J\e(B \e$(7$K\e(B \e$(7$L\e(B \e$(7$M\e(B \e$(7$N\e(B \e$(7$O\e(B ; ordinary Tibetan.
77;;;2450 \e$(7$P\e(B \e$(7$Q\e(B \e$(7$R\e(B \e$(7$S\e(B \e$(7$T\e(B \e$(7$U\e(B \e$(7$V\e(B \e$(7$W\e(B \e$(7$X\e(B \e$(7$Y\e(B \e$(7$Z\e(B \e$(7$[\e(B \e$(7$\\e(B \e$(7$]\e(B \e$(7$^\e(B \e$(7$_\e(B ; They are decomposed
78;;;2460 \e$(7$`\e(B \e$(7$a\e(B \e$(7$b\e(B \e$(7$c\e(B \e$(7$d\e(B \e$(7$e\e(B \e$(7$f\e(B \e$(7$g\e(B \e$(7$h\e(B \e$(7$i\e(B \e$(7$j\e(B \e$(7$k\e(B \e$(7$l\e(B \e$(7$m\e(B \e$(7$n\e(B \e$(7$o\e(B ; into base and
79;;;2470 \e$(7$p\e(B \e$(7$q\e(B \e$(7$r\e(B \e$(7$s\e(B \e$(7$t\e(B \e$(7$u\e(B \e$(7$v\e(B \e$(7$w\e(B \e$(7$x\e(B \e$(7$y\e(B \e$(7$z\e(B \e$(7${\e(B \e$(7$|\e(B \e$(7$}\e(B \e$(7$~\e(B // ; subjoined consonants
80;;; ; when written on a
81;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ; file in Tibetan
82;;;2520 // \e$(7%!\e(B \e$(7%"\e(B \e$(7%#\e(B \e$(7%$\e(B \e$(7%%\e(B \e$(7%&\e(B \e$(7%'\e(B \e$(7%(\e(B \e$(7%)\e(B \e$(7%*\e(B \e$(7%+\e(B \e$(7%,\e(B \e$(7%-\e(B \e$(7%.\e(B \e$(7%/\e(B ; coding system.
83;;;2530 \e$(7%0\e(B \e$(7%1\e(B \e$(7%2\e(B \e$(7%3\e(B \e$(7%4\e(B \e$(7%5\e(B \e$(7%6\e(B \e$(7%7\e(B \e$(7%8\e(B \e$(7%9\e(B \e$(7%:\e(B \e$(7%;\e(B \e$(7%<\e(B \e$(7%=\e(B \e$(7%>\e(B \e$(7%?\e(B ;
84;;;2540 \e$(7%@\e(B \e$(7%A\e(B \e$(7%B\e(B \e$(7%C\e(B \e$(7%D\e(B \e$(7%E\e(B \e$(7%F\e(B \e$(7%G\e(B \e$(7%H\e(B \e$(7%I\e(B \e$(7%J\e(B \e$(7%K\e(B \e$(7%L\e(B \e$(7%M\e(B \e$(7%N\e(B \e$(7%O\e(B ;
85;;;2550 \e$(7%P\e(B \e$(7%Q\e(B \e$(7%R\e(B \e$(7%S\e(B \e$(7%T\e(B \e$(7%U\e(B \e$(7%V\e(B \e$(7%W\e(B \e$(7%X\e(B \e$(7%Y\e(B \e$(7%Z\e(B \e$(7%[\e(B \e$(7%\\e(B \e$(7%]\e(B \e$(7%^\e(B \e$(7%_\e(B ;
86;;;2560 \e$(7%`\e(B \e$(7%a\e(B \e$(7%b\e(B \e$(7%c\e(B \e$(7%d\e(B \e$(7%e\e(B \e$(7%f\e(B \e$(7%g\e(B \e$(7%h\e(B \e$(7%i\e(B \e$(7%j\e(B \e$(7%k\e(B \e$(7%l\e(B \e$(7%m\e(B \e$(7%n\e(B \e$(7%o\e(B ;
87;;;2570 \e$(7%p\e(B \e$(7%q\e(B \e$(7%r\e(B \e$(7%s\e(B \e$(7%t\e(B \e$(7%u\e(B \e$(7%v\e(B \e$(7%w\e(B \e$(7%x\e(B \e$(7%y\e(B \e$(7%z\e(B \e$(7%{\e(B \e$(7%|\e(B \e$(7%}\e(B \e$(7%~\e(B // ;
88;;;
89
90
91(make-coding-system
a79a3c79 92 'tibetan-iso-8bit 2 ?Q
4b9121fc 93 "8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)"
a79a3c79
KH
94 '(ascii tibetan nil nil
95 nil nil)
96 '((safe-charsets ascii tibetan)
97 (post-read-conversion . tibetan-post-read-conversion)
98 (pre-write-conversion . tibetan-pre-write-conversion)))
80d75b56 99
a79a3c79 100(define-coding-system-alias 'tibetan 'tibetan-iso-8bit)
80d75b56 101
80d75b56 102(set-language-info-alist
a564ccf9 103 "Tibetan" '((charset tibetan tibetan-1-column)
a79a3c79
KH
104 (coding-system tibetan-iso-8bit)
105 (coding-priority iso-2022-7bit tibetan-iso-8bit)
a564ccf9
KH
106 (input-method . "tibetan-wylie")
107 (features tibet-util)
80d75b56
KH
108 (documentation . t)
109 (sample-text .
a564ccf9 110"Tibetan (\e2\e$(7"70"]\e(B\e1\e$(7"2\e$(8!;\e(B\e2\e$(7%P`"Q\e(B\e1\e$(7"2\e$(8!;\e(B) \e2\e$(7#RP#SP#S\e(B\e1\e$(7!>"7\e(B\e2\e$(7$P`"Q\e(B\e1\e$(8!;\e(B\e2\e$(7"E0"S\e(B\e1\e$(7"G\e$(8!;\e$(7"7\e(B\e2\e$(7"20"[\e(B\e1\e$(8!;\e(B\e2\e$(7"D0"[\e(B\e1\e$(7"#"G!>\e(B\e2\e$(7"I0"]0"_\e(B\e1\e$(8!;\e(B\e2\e$(7"9`"Q\e(B\e1\e$(8!;\e(B\e2\e$(7"/0"S\e(B\e1\e$(8!;\e(B\e2\e$(7"5`"Q\e(B\e1\e2\e$(7#2`#90"[\e(B\e1\e$(8!;\e(B\e2\e$(7"H`#A`"U0"c\e(B\e1\e$(7!>\e(B")))
80d75b56
KH
111
112
113;;;
114;;; Definitions of conversion data.
115;;;
116
117
118;;; alists for tibetan char <-> transcription conversion
119;;; longer transcription should come first
120(defconst tibetan-consonant-transcription-alist
121 '(("tsh" . "\e$(7";\e(B")
122 ("dzh" . "\e$(7"=\e(B")
123 ("kSH" . "\e$(7"J\e(B")
124 ("kh" . "\e$(7""\e(B")
125 ("gh" . "\e$(7"$\e(B")
126 ("ng" . "\e$(7"%\e(B")
127 ("ch" . "\e$(7"'\e(B")
128 ("ny" . "\e$(7"*\e(B")
129 ("TH" . "\e$(7",\e(B")
130 ("DH" . "\e$(7".\e(B")
131 ("th" . "\e$(7"1\e(B")
132 ("dh" . "\e$(7"3\e(B")
133 ("ph" . "\e$(7"6\e(B")
134 ("bh" . "\e$(7"8\e(B")
135 ("ts" . "\e$(7":\e(B")
136 ("dz" . "\e$(7"<\e(B")
137 ("zh" . "\e$(7"?\e(B")
138 ("sh" . "\e$(7"E\e(B")
139 ("SH" . "\e$(7"F\e(B")
140 ("k" . "\e$(7"!\e(B")
141 ("g" . "\e$(7"#\e(B")
142 ("c" . "\e$(7"&\e(B")
143 ("j" . "\e$(7"(\e(B")
144 ("T" . "\e$(7"+\e(B")
145 ("D" . "\e$(7"-\e(B")
146 ("N" . "\e$(7"/\e(B")
147 ("t" . "\e$(7"0\e(B")
148 ("d" . "\e$(7"2\e(B")
149 ("n" . "\e$(7"4\e(B")
150 ("p" . "\e$(7"5\e(B")
151 ("b" . "\e$(7"7\e(B")
152 ("m" . "\e$(7"9\e(B")
153 ("w" . "\e$(7">\e(B")
154 ("z" . "\e$(7"@\e(B")
155 ("'" . "\e$(7"A\e(B")
156 ("y" . "\e$(7"B\e(B")
157 ("r" . "\e$(7"C\e(B")
158 ("l" . "\e$(7"D\e(B")
159 ("s" . "\e$(7"G\e(B")
160 ("h" . "\e$(7"H\e(B")
161 ("H" . "\e$(7"H\e(B")
162 ("A" . "\e$(7"I\e(B")))
163
164
165(defconst tibetan-vowel-transcription-alist
166 '(("ai" . "\e$(7"\\e(B")
167 ("au" . "\e$(7"^\e(B")
168 ("ee" . "\e$(7"\\e(B")
169 ("oo" . "\e$(7"^\e(B")
170 ("a" . "\e$(7"Q\e(B") ; invisible vowel sign (\x2251)
171 ("i" . "\e$(7"S\e(B")
172 ("u" . "\e$(7"U\e(B")
173 ("e" . "\e$(7"[\e(B")
174 ("o" . "\e$(7"]\e(B")
175 ("E" . "\e$(7"\\e(B")
176 ("O" . "\e$(7"^\e(B")
177 ("I" . "\e$(7"a\e(B")
178 ("M" . "\e$(7"_\e(B")
179 ("~" . "\e$(7"c\e(B") ; not specified in Ext.wylie
180 ("`" . "\e$(7"d\e(B") ; idem.
181 ("," . "\e$(7"e\e(B") ; idem.
182 ("v" . "\e$(7"g\e(B") ; idem.
183 ("V" . "\e$(7"h\e(B") ; idem.
184 ("x" . "\e$(7"i\e(B") ; idem.
185 ("X" . "\e$(7"j\e(B") ; idem.
186 ("q" . "\e$(7"k\e(B") ; idem.
187 ("Q" . "\e$(7"l\e(B") ; idem.
188 ("_o" . "\e$(7!g\e(B") ; idem.
189 ("_O" . "\e$(7!e\e(B") ; idem.
190 ("_/" . "\e$(7!I\e(B") ; idem.
191 ))
192
193(defconst tibetan-precomposed-transcription-alist
194 '(("phyw" . "\e$(7$G\e(B")
195 ("tshw" . "\e$(7$)\e(B")
196 ("rtsw" . "\e$(7%.\e(B")
197 ("khw" . "\e$(7$"\e(B")
198 ("nyw" . "\e$(7$%\e(B")
199 ("tsw" . "\e$(7$(\e(B")
200 ("zhw" . "\e$(7$*\e(B")
201 ("shw" . "\e$(7$.\e(B")
202 ("khy" . "\e$(7$A\e(B")
203 ("phy" . "\e$(7$D\e(B")
204 ("khr" . "\e$(7$Q\e(B")
205 ("thr" . "\e$(7$T\e(B")
206 ("phr" . "\e$(7$W\e(B")
207 ("shr" . "\e$(7$Z\e(B")
208 ("dzr" . "\e$(7$^\e(B")
209 ("grw" . "\e$(7$_\e(B")
210 ("rng" . "\e$(7%#\e(B")
211 ("rny" . "\e$(7%%\e(B")
212 ("rts" . "\e$(7%+\e(B")
213 ("rdz" . "\e$(7%,\e(B")
214 ("rgw" . "\e$(7%-\e(B")
215 ("rky" . "\e$(7%0\e(B")
216 ("rgy" . "\e$(7%1\e(B")
217 ("rmy" . "\e$(7%2\e(B")
218 ("lng" . "\e$(7%B\e(B")
219 ("sng" . "\e$(7%R\e(B")
220 ("sny" . "\e$(7%S\e(B")
221 ("sts" . "\e$(7%Z\e(B")
222 ("sky" . "\e$(7%`\e(B")
223 ("sgy" . "\e$(7%a\e(B")
224 ("spy" . "\e$(7%b\e(B")
225 ("sby" . "\e$(7%c\e(B")
226 ("smy" . "\e$(7%d\e(B")
227 ("skr" . "\e$(7%p\e(B")
228 ("sgr" . "\e$(7%q\e(B")
229 ("snr" . "\e$(7%r\e(B")
230 ("spr" . "\e$(7%s\e(B")
231 ("sbr" . "\e$(7%t\e(B")
232 ("smr" . "\e$(7%u\e(B")
233 ("kw" . "\e$(7$!\e(B")
234 ("gw" . "\e$(7$#\e(B")
235 ("cw" . "\e$(7$$\e(B")
236 ("tw" . "\e$(7$&\e(B")
237 ("dw" . "\e$(7$'\e(B")
238 ("zw" . "\e$(7$+\e(B")
239 ("rw" . "\e$(7$,\e(B")
240 ("lw" . "\e$(7$-\e(B")
241 ("sw" . "\e$(7$/\e(B")
242 ("hw" . "\e$(7$0\e(B")
243 ("ky" . "\e$(7$@\e(B")
244 ("gy" . "\e$(7$B\e(B")
245 ("py" . "\e$(7$C\e(B")
246 ("by" . "\e$(7$E\e(B")
247 ("my" . "\e$(7$F\e(B")
248 ("kr" . "\e$(7$P\e(B")
249 ("gr" . "\e$(7$R\e(B")
250 ("tr" . "\e$(7$S\e(B")
251 ("dr" . "\e$(7$U\e(B")
252 ("pr" . "\e$(7$V\e(B")
253 ("brk" . "\e$(7"7%!\e(B")
254 ("brg" . "\e$(7"7%"\e(B")
255 ("brng" . "\e$(7"7%#\e(B")
256 ("brj" . "\e$(7"7%$\e(B")
257 ("brny" . "\e$(7"7%%\e(B")
258 ("brt" . "\e$(7"7%&\e(B")
259 ("brd" . "\e$(7"7%'\e(B")
260 ("brn" . "\e$(7"7%(\e(B")
261 ("brts" . "\e$(7"7%+\e(B")
262 ("brdz" . "\e$(7"7%,\e(B")
263 ("brl" . "\e$(7"7$d\e(B")
264 ("br" . "\e$(7$X\e(B")
265 ("mr" . "\e$(7$Y\e(B")
266 ("sr" . "\e$(7$[\e(B")
267 ("hr" . "\e$(7$\\e(B")
268 ("jr" . "\e$(7$]\e(B")
269 ("kl" . "\e$(7$`\e(B")
270 ("gl" . "\e$(7$a\e(B")
271 ("blt" . "\e$(7"7%E\e(B")
272 ("bld" . "\e$(7"7%F\e(B")
273 ("bl" . "\e$(7$b\e(B")
274 ("zl" . "\e$(7$c\e(B")
275 ("rl" . "\e$(7$d\e(B")
276 ("sl" . "\e$(7$e\e(B")
277 ("rk" . "\e$(7%!\e(B")
278 ("rg" . "\e$(7%"\e(B")
279 ("rj" . "\e$(7%$\e(B")
280 ("rt" . "\e$(7%&\e(B")
281 ("rd" . "\e$(7%'\e(B")
282 ("rn" . "\e$(7%(\e(B")
283 ("rb" . "\e$(7%)\e(B")
284 ("rm" . "\e$(7%*\e(B")
285 ("lk" . "\e$(7%@\e(B")
286 ("lg" . "\e$(7%A\e(B")
287 ("lc" . "\e$(7%C\e(B")
288 ("lj" . "\e$(7%D\e(B")
289 ("lt" . "\e$(7%E\e(B")
290 ("ld" . "\e$(7%F\e(B")
291 ("ln" . "\e$(7!!\e(B") ; dummy \x2121
292 ("lp" . "\e$(7%G\e(B")
293 ("lb" . "\e$(7%H\e(B")
294 ("lh" . "\e$(7%I\e(B")
295 ("sk" . "\e$(7%P\e(B")
296 ("sg" . "\e$(7%Q\e(B")
297 ("st" . "\e$(7%T\e(B")
298 ("sd" . "\e$(7%U\e(B")
299 ("sn" . "\e$(7%V\e(B")
300 ("sp" . "\e$(7%W\e(B")
301 ("sb" . "\e$(7%X\e(B")
302 ("sm" . "\e$(7%Y\e(B")))
303
304(defconst tibetan-subjoined-transcription-alist
305 '(("+k" . "\e$(7#!\e(B")
306 ("+kh" . "\e$(7#"\e(B")
307 ("+g" . "\e$(7##\e(B")
308 ("+gh" . "\e$(7#$\e(B")
309 ("+ng" . "\e$(7#%\e(B")
310 ("+c" . "\e$(7#&\e(B")
311 ("+ch" . "\e$(7#'\e(B")
312 ("+j" . "\e$(7#(\e(B")
313 ("+ny" . "\e$(7#*\e(B")
314 ("+T" . "\e$(7#+\e(B")
315 ("+TH" . "\e$(7#,\e(B")
316 ("+D" . "\e$(7#-\e(B")
317 ("+DH" . "\e$(7#.\e(B")
318 ("+N" . "\e$(7#/\e(B")
319 ("+t" . "\e$(7#0\e(B")
320 ("+th" . "\e$(7#1\e(B")
321 ("+d" . "\e$(7#2\e(B")
322 ("+dh" . "\e$(7#3\e(B")
323 ("+n" . "\e$(7#4\e(B")
324 ("+p" . "\e$(7#5\e(B")
325 ("+ph" . "\e$(7#6\e(B")
326 ("+b" . "\e$(7#7\e(B")
327 ("+bh" . "\e$(7#8\e(B")
328 ("+m" . "\e$(7#9\e(B")
329 ("+ts" . "\e$(7#:\e(B")
330 ("+tsh" . "\e$(7#;\e(B")
331 ("+dz" . "\e$(7#<\e(B")
332 ("+dzh" . "\e$(7#=\e(B")
333 ("+w" . "\e$(7#>\e(B")
334 ("+zh" . "\e$(7#?\e(B")
335 ("+z" . "\e$(7#@\e(B")
336 ("+'" . "\e$(7#A\e(B")
337 ("+y" . "\e$(7#B\e(B")
338 ("+r" . "\e$(7#C\e(B")
339 ("+l" . "\e$(7#D\e(B")
340 ("+sh" . "\e$(7#E\e(B")
341 ("+SH" . "\e$(7#F\e(B")
342 ("+s" . "\e$(7#G\e(B")
343 ("+h" . "\e$(7#H\e(B")
344 ("+A" . "\e$(7#I\e(B")
345 ("+kSH" . "\e$(7#J\e(B")
346 ("R" . "\e$(7#P\e(B")))
347
348;;;
349;;; alist for Tibetan base consonant <-> subjoined consonant conversion.
350;;;
351(defconst tibetan-base-to-subjoined-alist
352 '(("\e$(7"!\e(B" . "\e$(7#!\e(B")
353 ("\e$(7""\e(B" . "\e$(7#"\e(B")
354 ("\e$(7"#\e(B" . "\e$(7##\e(B")
355 ("\e$(7"$\e(B" . "\e$(7#$\e(B")
356 ("\e$(7"%\e(B" . "\e$(7#%\e(B")
357 ("\e$(7"&\e(B" . "\e$(7#&\e(B")
358 ("\e$(7"'\e(B" . "\e$(7#'\e(B")
359 ("\e$(7"(\e(B" . "\e$(7#(\e(B")
360 ("\e$(7"*\e(B" . "\e$(7#*\e(B")
361 ("\e$(7"+\e(B" . "\e$(7#+\e(B")
362 ("\e$(7",\e(B" . "\e$(7#,\e(B")
363 ("\e$(7"-\e(B" . "\e$(7#-\e(B")
364 ("\e$(7".\e(B" . "\e$(7#.\e(B")
365 ("\e$(7"/\e(B" . "\e$(7#/\e(B")
366 ("\e$(7"0\e(B" . "\e$(7#0\e(B")
367 ("\e$(7"1\e(B" . "\e$(7#1\e(B")
368 ("\e$(7"2\e(B" . "\e$(7#2\e(B")
369 ("\e$(7"3\e(B" . "\e$(7#3\e(B")
370 ("\e$(7"4\e(B" . "\e$(7#4\e(B")
371 ("\e$(7"5\e(B" . "\e$(7#5\e(B")
372 ("\e$(7"6\e(B" . "\e$(7#6\e(B")
373 ("\e$(7"7\e(B" . "\e$(7#7\e(B")
374 ("\e$(7"8\e(B" . "\e$(7#8\e(B")
375 ("\e$(7"9\e(B" . "\e$(7#9\e(B")
376 ("\e$(7":\e(B" . "\e$(7#:\e(B")
377 ("\e$(7";\e(B" . "\e$(7#;\e(B")
378 ("\e$(7"<\e(B" . "\e$(7#<\e(B")
379 ("\e$(7"=\e(B" . "\e$(7#=\e(B")
380 ("\e$(7">\e(B" . "\e$(7#>\e(B")
381 ("\e$(7"?\e(B" . "\e$(7#?\e(B")
382 ("\e$(7"@\e(B" . "\e$(7#@\e(B")
383 ("\e$(7"A\e(B" . "\e$(7#A\e(B")
384 ("\e$(7"B\e(B" . "\e$(7#B\e(B")
385 ("\e$(7"C\e(B" . "\e$(7#C\e(B")
386 ("\e$(7"D\e(B" . "\e$(7#D\e(B")
387 ("\e$(7"E\e(B" . "\e$(7#E\e(B")
388 ("\e$(7"F\e(B" . "\e$(7#F\e(B")
389 ("\e$(7"G\e(B" . "\e$(7#G\e(B")
390 ("\e$(7"H\e(B" . "\e$(7#H\e(B")
391 ("\e$(7"I\e(B" . "\e$(7#I\e(B")
392 ("\e$(7"J\e(B" . "\e$(7#J\e(B")))
393
394;;;
395;;; alist for Tibetan consonantic components <-> precomposed glyph conversion.
396;;; (includes some punctuation conversion rules)
397;;;
398(defconst tibetan-precomposition-rule-alist
399 '(("\e$(7"6#B#>\e(B" . "\e$(7$G\e(B")
400 ("\e$(7"##C#>\e(B" . "\e$(7$_\e(B")
401 ("\e$(7";#>\e(B" . "\e$(7$)\e(B")
402 ("\e$(7"C#:#>\e(B" . "\e$(7%.\e(B")
403 ("\e$(7"C###>\e(B" . "\e$(7%-\e(B")
404 ("\e$(7"C#!#B\e(B" . "\e$(7%0\e(B")
405 ("\e$(7"C###B\e(B" . "\e$(7%1\e(B")
406 ("\e$(7"C#9#B\e(B" . "\e$(7%2\e(B")
407 ("\e$(7"G#!#B\e(B" . "\e$(7%`\e(B")
408 ("\e$(7"G###B\e(B" . "\e$(7%a\e(B")
409 ("\e$(7"G#5#B\e(B" . "\e$(7%b\e(B")
410 ("\e$(7"G#7#B\e(B" . "\e$(7%c\e(B")
411 ("\e$(7"G#9#B\e(B" . "\e$(7%d\e(B")
412 ("\e$(7"G#!#C\e(B" . "\e$(7%p\e(B")
413 ("\e$(7"G###C\e(B" . "\e$(7%q\e(B")
414 ("\e$(7"G#4#C\e(B" . "\e$(7%r\e(B")
415 ("\e$(7"G#5#C\e(B" . "\e$(7%s\e(B")
416 ("\e$(7"G#7#C\e(B" . "\e$(7%t\e(B")
417 ("\e$(7"G#9#C\e(B" . "\e$(7%u\e(B")
418 ("\e$(7""#>\e(B" . "\e$(7$"\e(B")
419 ("\e$(7"*#>\e(B" . "\e$(7$%\e(B")
420 ("\e$(7":#>\e(B" . "\e$(7$(\e(B")
421 ("\e$(7"?#>\e(B" . "\e$(7$*\e(B")
422 ("\e$(7"E#>\e(B" . "\e$(7$.\e(B")
423 ("\e$(7""#B\e(B" . "\e$(7$A\e(B")
424 ("\e$(7"6#B\e(B" . "\e$(7$D\e(B")
425 ("\e$(7""#C\e(B" . "\e$(7$Q\e(B")
426 ("\e$(7"1#C\e(B" . "\e$(7$T\e(B")
427 ("\e$(7"6#C\e(B" . "\e$(7$W\e(B")
428 ("\e$(7"E#C\e(B" . "\e$(7$Z\e(B")
429 ("\e$(7"<#C\e(B" . "\e$(7$^\e(B")
430 ("\e$(7"C#%\e(B" . "\e$(7%#\e(B")
431 ("\e$(7"C#*\e(B" . "\e$(7%%\e(B")
432 ("\e$(7"C#:\e(B" . "\e$(7%+\e(B")
433 ("\e$(7"C#<\e(B" . "\e$(7%,\e(B")
434 ("\e$(7"D#%\e(B" . "\e$(7%B\e(B")
435 ("\e$(7"G#%\e(B" . "\e$(7%R\e(B")
436 ("\e$(7"G#*\e(B" . "\e$(7%S\e(B")
437 ("\e$(7"G#:\e(B" . "\e$(7%Z\e(B")
438 ("\e$(7"!#>\e(B" . "\e$(7$!\e(B")
439 ("\e$(7"##>\e(B" . "\e$(7$#\e(B")
440 ("\e$(7"&#>\e(B" . "\e$(7$$\e(B")
441 ("\e$(7"0#>\e(B" . "\e$(7$&\e(B")
442 ("\e$(7"2#>\e(B" . "\e$(7$'\e(B")
443 ("\e$(7"@#>\e(B" . "\e$(7$+\e(B")
444 ("\e$(7"C#>\e(B" . "\e$(7$,\e(B")
445 ("\e$(7"D#>\e(B" . "\e$(7$-\e(B")
446 ("\e$(7"G#>\e(B" . "\e$(7$/\e(B")
447 ("\e$(7"H#>\e(B" . "\e$(7$0\e(B")
448 ("\e$(7"!#B\e(B" . "\e$(7$@\e(B")
449 ("\e$(7"##B\e(B" . "\e$(7$B\e(B")
450 ("\e$(7"5#B\e(B" . "\e$(7$C\e(B")
451 ("\e$(7"7#B\e(B" . "\e$(7$E\e(B")
452 ("\e$(7"9#B\e(B" . "\e$(7$F\e(B")
453 ("\e$(7"!#C\e(B" . "\e$(7$P\e(B")
454 ("\e$(7"##C\e(B" . "\e$(7$R\e(B")
455 ("\e$(7"0#C\e(B" . "\e$(7$S\e(B")
456 ("\e$(7"2#C\e(B" . "\e$(7$U\e(B")
457 ("\e$(7"5#C\e(B" . "\e$(7$V\e(B")
458 ("\e$(7"7#C\e(B" . "\e$(7$X\e(B")
459 ("\e$(7"9#C\e(B" . "\e$(7$Y\e(B")
460 ("\e$(7"G#C\e(B" . "\e$(7$[\e(B")
461 ("\e$(7"H#C\e(B" . "\e$(7$\\e(B")
462 ("\e$(7"(#C\e(B" . "\e$(7$]\e(B")
463 ("\e$(7"!#D\e(B" . "\e$(7$`\e(B")
464 ("\e$(7"##D\e(B" . "\e$(7$a\e(B")
465 ("\e$(7"7#D\e(B" . "\e$(7$b\e(B")
466 ("\e$(7"@#D\e(B" . "\e$(7$c\e(B")
467 ("\e$(7"C#D\e(B" . "\e$(7$d\e(B")
468 ("\e$(7"G#D\e(B" . "\e$(7$e\e(B")
469 ("\e$(7"C#!\e(B" . "\e$(7%!\e(B")
470 ("\e$(7"C##\e(B" . "\e$(7%"\e(B")
471 ("\e$(7"C#(\e(B" . "\e$(7%$\e(B")
472 ("\e$(7"C#0\e(B" . "\e$(7%&\e(B")
473 ("\e$(7"C#2\e(B" . "\e$(7%'\e(B")
474 ("\e$(7"C#4\e(B" . "\e$(7%(\e(B")
475 ("\e$(7"C#7\e(B" . "\e$(7%)\e(B")
476 ("\e$(7"C#9\e(B" . "\e$(7%*\e(B")
477 ("\e$(7"D#!\e(B" . "\e$(7%@\e(B")
478 ("\e$(7"D##\e(B" . "\e$(7%A\e(B")
479 ("\e$(7"D#&\e(B" . "\e$(7%C\e(B")
480 ("\e$(7"D#(\e(B" . "\e$(7%D\e(B")
481 ("\e$(7"D#0\e(B" . "\e$(7%E\e(B")
482 ("\e$(7"D#2\e(B" . "\e$(7%F\e(B")
483 ("\e$(7"D#5\e(B" . "\e$(7%G\e(B")
484 ("\e$(7"D#7\e(B" . "\e$(7%H\e(B")
485 ("\e$(7"D#H\e(B" . "\e$(7%I\e(B")
486 ("\e$(7"G#!\e(B" . "\e$(7%P\e(B")
487 ("\e$(7"G##\e(B" . "\e$(7%Q\e(B")
488 ("\e$(7"G#0\e(B" . "\e$(7%T\e(B")
489 ("\e$(7"G#2\e(B" . "\e$(7%U\e(B")
490 ("\e$(7"G#4\e(B" . "\e$(7%V\e(B")
491 ("\e$(7"G#5\e(B" . "\e$(7%W\e(B")
492 ("\e$(7"G#7\e(B" . "\e$(7%X\e(B")
493 ("\e$(7"G#9\e(B" . "\e$(7%Y\e(B")
494 ("\e$(7!=\e(B" . "\e$(8!=\e(B") ; 2 col <-> 1 col
495 ("\e$(7!?\e(B" . "\e$(8!?\e(B")
496 ("\e$(7!@\e(B" . "\e$(8!@\e(B")
497 ("\e$(7!A\e(B" . "\e$(8!A\e(B")
498 ("\e$(7"`\e(B" . "\e$(8"`\e(B")
499 ("\e$(7!;\e(B" . "\e$(8!;\e(B")
500 ("\e$(7!D\e(B" . "\e$(8!D\e(B")
a564ccf9
KH
501 ("\e$(7!>\e(B \e$(7!>\e(B" . "\e2\e$(7!>P\e(B P\e$(7!>\e(B\e1") ; Yes this is dirty. But ...
502 ("\e$(7!4!5!5\e(B" . "\e2\e$(7#RP#SP#SP#S\e(B\e1")
503 ("\e$(7!4!5\e(B" . "\e2\e$(7#RP#SP#S\e(B\e1")
504 ("\e$(7!6\e(B" . "\e2\e$(7#RP#S_!I\e(B\e1")
505 ("\e$(7!4\e(B" . "\e2\e$(7#RP#S\e(B\e1")))
80d75b56
KH
506
507(defvar tibetan-regexp
508 (let ((l (append tibetan-consonant-transcription-alist
509 tibetan-vowel-transcription-alist
510 tibetan-subjoined-transcription-alist))
511 temp)
512 (setq temp "\\(")
513 (setq temp (concat temp (car (car l))))
514 (setq l (cdr l))
515 (while l
516 (setq temp (concat temp "\\|" (car (car l))))
517 (setq l (cdr l)))
518 (concat temp "\\)$"))
519 "Regexp string to match a romanized Tibetan character component, i.e.,
520base and subjoined consonant, vowel and vowel modifier. The result of matching
521is to be used for indexing alists at conversion from a roman transcription to
522the corresponding Tibetan character.")
523
524(defvar tibetan-precomposed-regexp
525 (let ((l tibetan-precomposed-transcription-alist)
526 temp)
527 (setq temp "^\\(")
528 (setq temp
529 (concat temp (car (car l))))
530 (setq l (cdr l))
531 (while l
532 (setq temp
533 (concat temp "\\|" (car (car l))))
534 (setq l (cdr l)))
535 (concat temp "\\)"))
536 "Regexp string to match a romanized Tibetan complex consonant.
537The result of matching is to be used for indexing alists when the input key
538from an input method is converted to the corresponding precomposed glyph.")
539
540(defvar tibetan-precomposition-rule-regexp
541 (let ((l tibetan-precomposition-rule-alist)
542 temp)
543 (setq temp "\\(")
544 (setq temp (concat temp (car (car l))))
545 (setq l (cdr l))
546 (while l
547 (setq temp (concat temp "\\|" (car (car l))))
548 (setq l (cdr l)))
549 (concat temp "\\)"))
550 "Regexp string to match a sequence of Tibetan consonantic components, i.e.,
551one base consonant and one or more subjoined consonants.
552The result of matching is to be used for indexing alist when the component
553sequence is converted to the corresponding precomposed glyph.
554This also matches some punctuation characters which need conversion.")
555
556(defvar tibetan-decomposed nil)
557(defvar tibetan-decomposed-temp nil)
558
559;;; language/tibetan.el ends here