comparison lisp/language/tibetan.el @ 17301:0b94fe381355

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