Call define-coding-system instead of make-coding-system. All CCL program deleted.
[bpt/emacs.git] / lisp / language / tibetan.el
1 ;;; tibetan.el --- support for Tibetan language -*- coding: iso-2022-7bit; -*-
2
3 ;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
4 ;; Licensed to the Free Software Foundation.
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 ;;; Commentary:
33
34 ;;; Code:
35
36 ;;; Tibetan Character set.
37 ;;; \x2130 -- \x234a is a subset of Unicode v.2 \x0f00 - \x0fb9
38 ;;; with a slight modification. And there are some subjoined
39 ;;; consonants which are not specified in Unicode.
40 ;;; I hope I can add missing characters later.
41 ;;;
42 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
43 ;;;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 ; obsolete glyphs (2123-5)
44 ;;;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,
45 ;;;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
46 ;;;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.
47 ;;;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 ;
48 ;;;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 // ;
49 ;;;
50 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
51 ;;;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
52 ;;;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
53 ;;;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.
54 ;;;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)
55 ;;;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
56 ;;;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
57 ;;; ; atomically
58 ;;; ; encoded.
59 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
60 ;;;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
61 ;;;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 ;
62 ;;;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 ;
63 ;;;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
64 ;;;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
65 ;;;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.
66 ;;;
67 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
68 ;;;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
69 ;;;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
70 ;;;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.
71 ;;;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
72 ;;;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
73 ;;;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
74 ;;; ; when written on a
75 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ; file in Tibetan
76 ;;;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.
77 ;;;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 ;
78 ;;;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 ;
79 ;;;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 ;
80 ;;;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 ;
81 ;;;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 // ;
82 ;;;
83
84
85 (define-coding-system 'tibetan-iso-8bit
86 "8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)."
87 :coding-type 'iso-2022
88 :mnemonic ?Q
89 :designation [ascii tibetan nil nil]
90 :charset-list '(ascii tibetan))
91
92 (define-coding-system-alias 'tibetan 'tibetan-iso-8bit)
93
94 (set-language-info-alist
95 "Tibetan" '((charset tibetan tibetan-1-column)
96 (coding-system tibetan-iso-8bit)
97 (coding-priority iso-2022-7bit tibetan-iso-8bit)
98 (input-method . "tibetan-wylie")
99 (features tibet-util)
100 (documentation . t)
101 (sample-text
102 . (tibetan-compose-string
103 (copy-sequence
104 "Tibetan (\e4\e$(7"7r'"]\e0"7"]\e1\e4"2\e0"2\e1!;\e4%P\e0"G#!"Q\e1\e4"2\e0"2\e1!;\e(B) \e$(7!4!5!5!>\e4"7\e0"7\e1\e4$P\e0"!#C"Q\e1!;\e4"Er'"S\e0"E"S\e1\e4"G\e0"G\e1!;\e4"7\e0"7\e1\e4"2r'"[\e0"2"[\e1!;\e4"Dr'"[\e0"D"[\e1\e4"#\e0"#\e1\e4"G\e0"G\e1!>\e4"Ir'"]r'"_\e0"I"]"_\e1!;\e4"9\e0"9"Q\e1!;\e4"/r'"S\e0"/"S\e1!;\e4"5\e0"5"Q\e1\e4#2x!#9r'"[\e0"2#9"[\e1!;\e4"Hx!"Rx!"Ur'"c\e0"H"A"U"c\e1!>\e(B")))))
105
106
107 ;; `\e$(7"A\e(B' is included in the pattern for subjoined consonants because we
108 ;; treat it specially in tibetan-add-components.
109 ;; modified by Tomabechi 1999/12/10
110 ;; modified by Tomabechi 2000/06/08
111 ;; To allow infinite addition of vowels/modifiers
112 ;; as specified in Unicode v.3
113 ;; \e$(7"A\e(B is removed from the class of subjoined. Tomabechi 2000/06/08
114 ;; (for Unicode support)
115 (defconst tibetan-composable-pattern
116 "[\e$(7"!\e(B-\e$(7"J"K\e(B][\e$(7#!\e(B-\e$(7#J#K#L#M\e(B]*[\e$(7"Q"R"S\e(B-\e$(7"^"a"b"e\e(B]*[\e$(7"_"c"d"g\e(B-\e$(7"l!I!e!g\e(B]*"
117 "Regexp matching a composable sequence of Tibetan characters.")
118
119 ;; Register a function to compose Tibetan characters.
120 (set-char-table-range composition-function-table
121 (cons (decode-char 'tibetan #x2121)
122 (decode-char 'tibetan #x7E7E))
123 (list (cons tibetan-composable-pattern
124 'tibetan-composition-function)))
125
126 ;;;
127 ;;; Definitions of conversion data.
128 ;;;
129
130
131 ;;; alists for tibetan char <-> transcription conversion
132 ;;; longer transcription should come first
133 (defconst tibetan-consonant-transcription-alist
134 '(("tsh" . "\e$(7";\e(B")
135 ("dzh" . "\e$(7"=\e(B")
136 ("kSH" . "\e$(7"J\e(B")
137 ("kh" . "\e$(7""\e(B")
138 ("gh" . "\e$(7"$\e(B")
139 ("ng" . "\e$(7"%\e(B")
140 ("ch" . "\e$(7"'\e(B")
141 ("ny" . "\e$(7"*\e(B")
142 ("TH" . "\e$(7",\e(B")
143 ("DH" . "\e$(7".\e(B")
144 ("th" . "\e$(7"1\e(B")
145 ("dh" . "\e$(7"3\e(B")
146 ("ph" . "\e$(7"6\e(B")
147 ("bh" . "\e$(7"8\e(B")
148 ("ts" . "\e$(7":\e(B")
149 ("dz" . "\e$(7"<\e(B")
150 ("zh" . "\e$(7"?\e(B")
151 ("sh" . "\e$(7"E\e(B")
152 ("SH" . "\e$(7"F\e(B")
153 ("k" . "\e$(7"!\e(B")
154 ("g" . "\e$(7"#\e(B")
155 ("c" . "\e$(7"&\e(B")
156 ("j" . "\e$(7"(\e(B")
157 ("T" . "\e$(7"+\e(B")
158 ("D" . "\e$(7"-\e(B")
159 ("N" . "\e$(7"/\e(B")
160 ("t" . "\e$(7"0\e(B")
161 ("d" . "\e$(7"2\e(B")
162 ("n" . "\e$(7"4\e(B")
163 ("p" . "\e$(7"5\e(B")
164 ("b" . "\e$(7"7\e(B")
165 ("m" . "\e$(7"9\e(B")
166 ("w" . "\e$(7">\e(B")
167 ("z" . "\e$(7"@\e(B")
168 ("'" . "\e$(7"A\e(B")
169 ("y" . "\e$(7"B\e(B")
170 ("r" . "\e$(7"C\e(B")
171 ("l" . "\e$(7"D\e(B")
172 ("s" . "\e$(7"G\e(B")
173 ("h" . "\e$(7"H\e(B")
174 ("H" . "\e$(7"H\e(B")
175 ("A" . "\e$(7"I\e(B")
176 ;; Added by Tomabechi 1999/12/10
177 ("R" . "\e$(7"K\e(B") ;; fixed form RA
178 ))
179
180
181 (defconst tibetan-vowel-transcription-alist
182 '(
183 ;; Composite Vowels
184 ;; Added by Tomabechi 2000/06/08
185 ("frr" . "\e$(7"X\e(B")
186 ("fll" . "\e$(7"Z\e(B")
187 ("fa" . "\e$(7"R\e(B")
188 ("fi" . "\e$(7"T\e(B")
189 ("fu" . "\e$(7"V\e(B")
190 ("fr" . "\e$(7"W\e(B")
191 ("fl" . "\e$(7"Y\e(B")
192 ("fI" . "\e$(7"b\e(B")
193 ;; Normal Vowels
194 ("ai" . "\e$(7"\\e(B")
195 ("au" . "\e$(7"^\e(B")
196 ("ee" . "\e$(7"\\e(B")
197 ("oo" . "\e$(7"^\e(B")
198 ("a" . "\e$(7"Q\e(B") ; invisible vowel sign (\x2251)
199 ("i" . "\e$(7"S\e(B")
200 ("u" . "\e$(7"U\e(B")
201 ("e" . "\e$(7"[\e(B")
202 ("o" . "\e$(7"]\e(B")
203 ("E" . "\e$(7"\\e(B")
204 ("O" . "\e$(7"^\e(B")
205 ("I" . "\e$(7"a\e(B")
206 ("," . "\e$(7"e\e(B") ; idem.
207 ))
208
209 (defconst tibetan-modifier-transcription-alist
210 '(("M" . "\e$(7"_\e(B")
211 ("~" . "\e$(7"c\e(B")
212 ("`" . "\e$(7"d\e(B")
213 ("x" . "\e$(7"i\e(B")
214 ("X" . "\e$(7"j\e(B")
215 ("v" . "\e$(7"g\e(B")
216 ("V" . "\e$(7"h\e(B")
217 ("q" . "\e$(7"k\e(B")
218 ("Q" . "\e$(7"l\e(B")
219 ("_/" . "\e$(7!I\e(B")
220 ("_o" . "\e$(7!g\e(B")
221 ("_O" . "\e$(7!e\e(B")))
222
223 (defconst tibetan-precomposed-transcription-alist
224 '(("phyw" . "\e$(7$G\e(B")
225 ("tshw" . "\e$(7$)\e(B")
226 ("rtsw" . "\e$(7%.\e(B")
227 ("khw" . "\e$(7$"\e(B")
228 ("nyw" . "\e$(7$%\e(B")
229 ("tsw" . "\e$(7$(\e(B")
230 ("zhw" . "\e$(7$*\e(B")
231 ("shw" . "\e$(7$.\e(B")
232 ("khy" . "\e$(7$A\e(B")
233 ("phy" . "\e$(7$D\e(B")
234 ("khr" . "\e$(7$Q\e(B")
235 ("thr" . "\e$(7$T\e(B")
236 ("phr" . "\e$(7$W\e(B")
237 ("shr" . "\e$(7$Z\e(B")
238 ("dzr" . "\e$(7$^\e(B")
239 ("grw" . "\e$(7$_\e(B")
240 ("rng" . "\e$(7%#\e(B")
241 ("rny" . "\e$(7%%\e(B")
242 ("rts" . "\e$(7%+\e(B")
243 ("rdz" . "\e$(7%,\e(B")
244 ("rgw" . "\e$(7%-\e(B")
245 ("rky" . "\e$(7%0\e(B")
246 ("rgy" . "\e$(7%1\e(B")
247 ("rmy" . "\e$(7%2\e(B")
248 ("lng" . "\e$(7%B\e(B")
249 ("sng" . "\e$(7%R\e(B")
250 ("sny" . "\e$(7%S\e(B")
251 ("sts" . "\e$(7%Z\e(B")
252 ("sky" . "\e$(7%`\e(B")
253 ("sgy" . "\e$(7%a\e(B")
254 ("spy" . "\e$(7%b\e(B")
255 ("sby" . "\e$(7%c\e(B")
256 ("smy" . "\e$(7%d\e(B")
257 ("skr" . "\e$(7%p\e(B")
258 ("sgr" . "\e$(7%q\e(B")
259 ("snr" . "\e$(7%r\e(B")
260 ("spr" . "\e$(7%s\e(B")
261 ("sbr" . "\e$(7%t\e(B")
262 ("smr" . "\e$(7%u\e(B")
263 ("kw" . "\e$(7$!\e(B")
264 ("gw" . "\e$(7$#\e(B")
265 ("cw" . "\e$(7$$\e(B")
266 ("tw" . "\e$(7$&\e(B")
267 ("dw" . "\e$(7$'\e(B")
268 ("zw" . "\e$(7$+\e(B")
269 ("rw" . "\e$(7$,\e(B")
270 ("lw" . "\e$(7$-\e(B")
271 ("sw" . "\e$(7$/\e(B")
272 ("hw" . "\e$(7$0\e(B")
273 ("ky" . "\e$(7$@\e(B")
274 ("gy" . "\e$(7$B\e(B")
275 ("py" . "\e$(7$C\e(B")
276 ("by" . "\e$(7$E\e(B")
277 ("my" . "\e$(7$F\e(B")
278 ("kr" . "\e$(7$P\e(B")
279 ("gr" . "\e$(7$R\e(B")
280 ("tr" . "\e$(7$S\e(B")
281 ("dr" . "\e$(7$U\e(B")
282 ("pr" . "\e$(7$V\e(B")
283 ("brk" . "\e$(7"7%!\e(B")
284 ("brg" . "\e$(7"7%"\e(B")
285 ("brng" . "\e$(7"7%#\e(B")
286 ("brj" . "\e$(7"7%$\e(B")
287 ("brny" . "\e$(7"7%%\e(B")
288 ("brt" . "\e$(7"7%&\e(B")
289 ("brd" . "\e$(7"7%'\e(B")
290 ("brn" . "\e$(7"7%(\e(B")
291 ("brts" . "\e$(7"7%+\e(B")
292 ("brdz" . "\e$(7"7%,\e(B")
293 ("brl" . "\e$(7"7$d\e(B")
294 ("br" . "\e$(7$X\e(B")
295 ("mr" . "\e$(7$Y\e(B")
296 ("sr" . "\e$(7$[\e(B")
297 ("hr" . "\e$(7$\\e(B")
298 ("jr" . "\e$(7$]\e(B")
299 ("kl" . "\e$(7$`\e(B")
300 ("gl" . "\e$(7$a\e(B")
301 ("blt" . "\e$(7"7%E\e(B")
302 ("bld" . "\e$(7"7%F\e(B")
303 ("bl" . "\e$(7$b\e(B")
304 ("zl" . "\e$(7$c\e(B")
305 ("rl" . "\e$(7$d\e(B")
306 ("sl" . "\e$(7$e\e(B")
307 ("rk" . "\e$(7%!\e(B")
308 ("rg" . "\e$(7%"\e(B")
309 ("rj" . "\e$(7%$\e(B")
310 ("rt" . "\e$(7%&\e(B")
311 ("rd" . "\e$(7%'\e(B")
312 ("rn" . "\e$(7%(\e(B")
313 ("rb" . "\e$(7%)\e(B")
314 ("rm" . "\e$(7%*\e(B")
315 ("lk" . "\e$(7%@\e(B")
316 ("lg" . "\e$(7%A\e(B")
317 ("lc" . "\e$(7%C\e(B")
318 ("lj" . "\e$(7%D\e(B")
319 ("lt" . "\e$(7%E\e(B")
320 ("ld" . "\e$(7%F\e(B")
321 ("ln" . "\e$(7!!\e(B") ; dummy \x2121
322 ("lp" . "\e$(7%G\e(B")
323 ("lb" . "\e$(7%H\e(B")
324 ("lh" . "\e$(7%I\e(B")
325 ("sk" . "\e$(7%P\e(B")
326 ("sg" . "\e$(7%Q\e(B")
327 ("st" . "\e$(7%T\e(B")
328 ("sd" . "\e$(7%U\e(B")
329 ("sn" . "\e$(7%V\e(B")
330 ("sp" . "\e$(7%W\e(B")
331 ("sb" . "\e$(7%X\e(B")
332 ("sm" . "\e$(7%Y\e(B"))
333 )
334
335
336 (defconst tibetan-subjoined-transcription-alist
337 (sort '(("+k" . "\e$(7#!\e(B")
338 ("+kh" . "\e$(7#"\e(B")
339 ("+g" . "\e$(7##\e(B")
340 ("+gh" . "\e$(7#$\e(B")
341 ("+ng" . "\e$(7#%\e(B")
342 ("+c" . "\e$(7#&\e(B")
343 ("+ch" . "\e$(7#'\e(B")
344 ("+j" . "\e$(7#(\e(B")
345 ("+ny" . "\e$(7#*\e(B")
346 ("+T" . "\e$(7#+\e(B")
347 ("+TH" . "\e$(7#,\e(B")
348 ("+D" . "\e$(7#-\e(B")
349 ("+DH" . "\e$(7#.\e(B")
350 ("+N" . "\e$(7#/\e(B")
351 ("+t" . "\e$(7#0\e(B")
352 ("+th" . "\e$(7#1\e(B")
353 ("+d" . "\e$(7#2\e(B")
354 ("+dh" . "\e$(7#3\e(B")
355 ("+n" . "\e$(7#4\e(B")
356 ("+p" . "\e$(7#5\e(B")
357 ("+ph" . "\e$(7#6\e(B")
358 ("+b" . "\e$(7#7\e(B")
359 ("+bh" . "\e$(7#8\e(B")
360 ("+m" . "\e$(7#9\e(B")
361 ("+ts" . "\e$(7#:\e(B")
362 ("+tsh" . "\e$(7#;\e(B")
363 ("+dz" . "\e$(7#<\e(B")
364 ("+dzh" . "\e$(7#=\e(B")
365 ("+w" . "\e$(7#>\e(B")
366 ("+zh" . "\e$(7#?\e(B")
367 ("+z" . "\e$(7#@\e(B")
368 ("+'" . "\e$(7#A\e(B")
369 ("+y" . "\e$(7#B\e(B")
370 ("+r" . "\e$(7#C\e(B")
371 ("+l" . "\e$(7#D\e(B")
372 ("+sh" . "\e$(7#E\e(B")
373 ("+SH" . "\e$(7#F\e(B")
374 ("+s" . "\e$(7#G\e(B")
375 ("+h" . "\e$(7#H\e(B")
376 ("+A" . "\e$(7#I\e(B")
377 ("+kSH" . "\e$(7#J\e(B")
378 ;; Added by Tomabechi 1999/12/10
379 ("+W" . "\e$(7#K\e(B") ;; fixed form subscribed WA
380 ("+Y" . "\e$(7#L\e(B") ;; fixed form subscribed YA
381 ("+R" . "\e$(7#M\e(B") ;; fixed form subscribed RA
382 )
383 (lambda (x y) (> (length (car x)) (length (car y))))))
384
385 ;;;
386 ;;; alist for Tibetan base consonant <-> subjoined consonant conversion.
387 ;;;
388 (defconst tibetan-base-to-subjoined-alist
389 '(("\e$(7"!\e(B" . "\e$(7#!\e(B")
390 ("\e$(7""\e(B" . "\e$(7#"\e(B")
391 ("\e$(7"#\e(B" . "\e$(7##\e(B")
392 ("\e$(7"$\e(B" . "\e$(7#$\e(B")
393 ("\e$(7"%\e(B" . "\e$(7#%\e(B")
394 ("\e$(7"&\e(B" . "\e$(7#&\e(B")
395 ("\e$(7"'\e(B" . "\e$(7#'\e(B")
396 ("\e$(7"(\e(B" . "\e$(7#(\e(B")
397 ("\e$(7"*\e(B" . "\e$(7#*\e(B")
398 ("\e$(7"+\e(B" . "\e$(7#+\e(B")
399 ("\e$(7",\e(B" . "\e$(7#,\e(B")
400 ("\e$(7"-\e(B" . "\e$(7#-\e(B")
401 ("\e$(7".\e(B" . "\e$(7#.\e(B")
402 ("\e$(7"/\e(B" . "\e$(7#/\e(B")
403 ("\e$(7"0\e(B" . "\e$(7#0\e(B")
404 ("\e$(7"1\e(B" . "\e$(7#1\e(B")
405 ("\e$(7"2\e(B" . "\e$(7#2\e(B")
406 ("\e$(7"3\e(B" . "\e$(7#3\e(B")
407 ("\e$(7"4\e(B" . "\e$(7#4\e(B")
408 ("\e$(7"5\e(B" . "\e$(7#5\e(B")
409 ("\e$(7"6\e(B" . "\e$(7#6\e(B")
410 ("\e$(7"7\e(B" . "\e$(7#7\e(B")
411 ("\e$(7"8\e(B" . "\e$(7#8\e(B")
412 ("\e$(7"9\e(B" . "\e$(7#9\e(B")
413 ("\e$(7":\e(B" . "\e$(7#:\e(B")
414 ("\e$(7";\e(B" . "\e$(7#;\e(B")
415 ("\e$(7"<\e(B" . "\e$(7#<\e(B")
416 ("\e$(7"=\e(B" . "\e$(7#=\e(B")
417 ("\e$(7">\e(B" . "\e$(7#>\e(B")
418 ("\e$(7"?\e(B" . "\e$(7#?\e(B")
419 ("\e$(7"@\e(B" . "\e$(7#@\e(B")
420 ("\e$(7"A\e(B" . "\e$(7#A\e(B")
421 ("\e$(7"B\e(B" . "\e$(7#B\e(B")
422 ("\e$(7"C\e(B" . "\e$(7#C\e(B")
423 ("\e$(7"D\e(B" . "\e$(7#D\e(B")
424 ("\e$(7"E\e(B" . "\e$(7#E\e(B")
425 ("\e$(7"F\e(B" . "\e$(7#F\e(B")
426 ("\e$(7"G\e(B" . "\e$(7#G\e(B")
427 ("\e$(7"H\e(B" . "\e$(7#H\e(B")
428 ("\e$(7"I\e(B" . "\e$(7#I\e(B")
429 ("\e$(7"J\e(B" . "\e$(7#J\e(B")
430 ;; Added by Tomabechi 1999/12/10
431 ("\e$(7"K\e(B" . "\e$(7#M\e(B") ;; Fixed form RA (224B->234D)
432 ))
433
434 ;;; alist for Tibetan composite vowels (long i, vocalic r, etc.)
435 ;;; New varialble. created by Tomabechi 2000/06/08
436 (defconst tibetan-composite-vowel-alist
437 '(;; LONG A
438 ;; ("\e$(7"R\e(B" . ((bc . tc) ?\e$(7"R\e(B))
439 ;; LONG I
440 ("\e$(7"T\e(B" . (?\e$(7"R\e(B (tc . bc) ?\e$(7"S\e(B))
441 ;; LONG U
442 ("\e$(7"V\e(B" . (?\e$(7"R\e(B (bc . tc) ?\e$(7"U\e(B))
443 ;; VOCALIC R
444 ("\e$(7"W\e(B" . (?\e$(7#C\e(B (tc . bc) ?\e$(7"a\e(B))
445 ;; LONG VOCALIC R
446 ("\e$(7"X\e(B" . (?\e$(7#C\e(B (bc . tc) ?\e$(7"R\e(B (tc . bc) ?\e$(7"a\e(B))
447 ;; VOCALIC L
448 ("\e$(7"Y\e(B" . (?\e$(7#D\e(B (tc . bc) ?\e$(7"a\e(B))
449 ;;\e$(7!;\e(BLONG VOCALIC L
450 ("\e$(7"Z\e(B" . (?\e$(7#D\e(B (bc . tc) ?\e$(7"R\e(B (tc . bc) ?\e$(7"a\e(B))
451 ;; LONG REVERSE I
452 ("\e$(7"b\e(B" . (?\e$(7"R\e(B (tc . bc) ?\e$(7"a\e(B))
453 ))
454
455
456
457 ;;;
458 ;;; alist for Tibetan consonantic components <-> precomposed glyph conversion.
459 ;;; (includes some punctuation conversion rules)
460 ;;;
461 (defconst tibetan-precomposition-rule-alist
462 `(("\e$(7"6#B#>\e(B" . "\e$(7$G\e(B")
463 ("\e$(7"##C#>\e(B" . "\e$(7$_\e(B")
464 ("\e$(7";#>\e(B" . "\e$(7$)\e(B")
465 ("\e$(7"C#:#>\e(B" . "\e$(7%.\e(B")
466 ("\e$(7"C###>\e(B" . "\e$(7%-\e(B")
467 ("\e$(7"C#!#B\e(B" . "\e$(7%0\e(B")
468 ("\e$(7"C###B\e(B" . "\e$(7%1\e(B")
469 ("\e$(7"C#9#B\e(B" . "\e$(7%2\e(B")
470 ("\e$(7"G#!#B\e(B" . "\e$(7%`\e(B")
471 ("\e$(7"G###B\e(B" . "\e$(7%a\e(B")
472 ("\e$(7"G#5#B\e(B" . "\e$(7%b\e(B")
473 ("\e$(7"G#7#B\e(B" . "\e$(7%c\e(B")
474 ("\e$(7"G#9#B\e(B" . "\e$(7%d\e(B")
475 ("\e$(7"G#!#C\e(B" . "\e$(7%p\e(B")
476 ("\e$(7"G###C\e(B" . "\e$(7%q\e(B")
477 ("\e$(7"G#4#C\e(B" . "\e$(7%r\e(B")
478 ("\e$(7"G#5#C\e(B" . "\e$(7%s\e(B")
479 ("\e$(7"G#7#C\e(B" . "\e$(7%t\e(B")
480 ("\e$(7"G#9#C\e(B" . "\e$(7%u\e(B")
481 ("\e$(7""#>\e(B" . "\e$(7$"\e(B")
482 ("\e$(7"*#>\e(B" . "\e$(7$%\e(B")
483 ("\e$(7":#>\e(B" . "\e$(7$(\e(B")
484 ("\e$(7"?#>\e(B" . "\e$(7$*\e(B")
485 ("\e$(7"E#>\e(B" . "\e$(7$.\e(B")
486 ("\e$(7""#B\e(B" . "\e$(7$A\e(B")
487 ("\e$(7"6#B\e(B" . "\e$(7$D\e(B")
488 ("\e$(7""#C\e(B" . "\e$(7$Q\e(B")
489 ("\e$(7"1#C\e(B" . "\e$(7$T\e(B")
490 ("\e$(7"6#C\e(B" . "\e$(7$W\e(B")
491 ("\e$(7"E#C\e(B" . "\e$(7$Z\e(B")
492 ("\e$(7"<#C\e(B" . "\e$(7$^\e(B")
493 ("\e$(7"C#%\e(B" . "\e$(7%#\e(B")
494 ("\e$(7"C#*\e(B" . "\e$(7%%\e(B")
495 ("\e$(7"C#:\e(B" . "\e$(7%+\e(B")
496 ("\e$(7"C#<\e(B" . "\e$(7%,\e(B")
497 ("\e$(7"D#%\e(B" . "\e$(7%B\e(B")
498 ("\e$(7"G#%\e(B" . "\e$(7%R\e(B")
499 ("\e$(7"G#*\e(B" . "\e$(7%S\e(B")
500 ("\e$(7"G#:\e(B" . "\e$(7%Z\e(B")
501 ("\e$(7"!#>\e(B" . "\e$(7$!\e(B")
502 ("\e$(7"##>\e(B" . "\e$(7$#\e(B")
503 ("\e$(7"&#>\e(B" . "\e$(7$$\e(B")
504 ("\e$(7"0#>\e(B" . "\e$(7$&\e(B")
505 ("\e$(7"2#>\e(B" . "\e$(7$'\e(B")
506 ("\e$(7"@#>\e(B" . "\e$(7$+\e(B")
507 ("\e$(7"C#>\e(B" . "\e$(7$,\e(B")
508 ("\e$(7"D#>\e(B" . "\e$(7$-\e(B")
509 ("\e$(7"G#>\e(B" . "\e$(7$/\e(B")
510 ("\e$(7"H#>\e(B" . "\e$(7$0\e(B")
511 ("\e$(7"!#B\e(B" . "\e$(7$@\e(B")
512 ("\e$(7"##B\e(B" . "\e$(7$B\e(B")
513 ("\e$(7"5#B\e(B" . "\e$(7$C\e(B")
514 ("\e$(7"7#B\e(B" . "\e$(7$E\e(B")
515 ("\e$(7"9#B\e(B" . "\e$(7$F\e(B")
516 ("\e$(7"!#C\e(B" . "\e$(7$P\e(B")
517 ("\e$(7"##C\e(B" . "\e$(7$R\e(B")
518 ("\e$(7"0#C\e(B" . "\e$(7$S\e(B")
519 ("\e$(7"2#C\e(B" . "\e$(7$U\e(B")
520 ("\e$(7"5#C\e(B" . "\e$(7$V\e(B")
521 ("\e$(7"7#C\e(B" . "\e$(7$X\e(B")
522 ("\e$(7"9#C\e(B" . "\e$(7$Y\e(B")
523 ("\e$(7"G#C\e(B" . "\e$(7$[\e(B")
524 ("\e$(7"H#C\e(B" . "\e$(7$\\e(B")
525 ("\e$(7"(#C\e(B" . "\e$(7$]\e(B")
526 ("\e$(7"!#D\e(B" . "\e$(7$`\e(B")
527 ("\e$(7"##D\e(B" . "\e$(7$a\e(B")
528 ("\e$(7"7#D\e(B" . "\e$(7$b\e(B")
529 ("\e$(7"@#D\e(B" . "\e$(7$c\e(B")
530 ("\e$(7"C#D\e(B" . "\e$(7$d\e(B")
531 ("\e$(7"G#D\e(B" . "\e$(7$e\e(B")
532 ("\e$(7"C#!\e(B" . "\e$(7%!\e(B")
533 ("\e$(7"C##\e(B" . "\e$(7%"\e(B")
534 ("\e$(7"C#(\e(B" . "\e$(7%$\e(B")
535 ("\e$(7"C#0\e(B" . "\e$(7%&\e(B")
536 ("\e$(7"C#2\e(B" . "\e$(7%'\e(B")
537 ("\e$(7"C#4\e(B" . "\e$(7%(\e(B")
538 ("\e$(7"C#7\e(B" . "\e$(7%)\e(B")
539 ("\e$(7"C#9\e(B" . "\e$(7%*\e(B")
540 ("\e$(7"D#!\e(B" . "\e$(7%@\e(B")
541 ("\e$(7"D##\e(B" . "\e$(7%A\e(B")
542 ("\e$(7"D#4\e(B" . "\e$(7!!\e(B") ; dummy 0x2121 added 2000/06/08 for transition l -> lng
543 ("\e$(7"D#&\e(B" . "\e$(7%C\e(B")
544 ("\e$(7"D#(\e(B" . "\e$(7%D\e(B")
545 ("\e$(7"D#0\e(B" . "\e$(7%E\e(B")
546 ("\e$(7"D#2\e(B" . "\e$(7%F\e(B")
547 ("\e$(7"D#5\e(B" . "\e$(7%G\e(B")
548 ("\e$(7"D#7\e(B" . "\e$(7%H\e(B")
549 ("\e$(7"D#H\e(B" . "\e$(7%I\e(B")
550 ("\e$(7"G#!\e(B" . "\e$(7%P\e(B")
551 ("\e$(7"G##\e(B" . "\e$(7%Q\e(B")
552 ("\e$(7"G#0\e(B" . "\e$(7%T\e(B")
553 ("\e$(7"G#2\e(B" . "\e$(7%U\e(B")
554 ("\e$(7"G#4\e(B" . "\e$(7%V\e(B")
555 ("\e$(7"G#5\e(B" . "\e$(7%W\e(B")
556 ("\e$(7"G#7\e(B" . "\e$(7%X\e(B")
557 ("\e$(7"G#9\e(B" . "\e$(7%Y\e(B")))
558
559 (defconst tibetan-obsolete-glyphs
560 `(("\e$(7!=\e(B" . "\e$(8!=\e(B") ; 2 col <-> 1 col
561 ("\e$(7!?\e(B" . "\e$(8!?\e(B")
562 ("\e$(7!@\e(B" . "\e$(8!@\e(B")
563 ("\e$(7!A\e(B" . "\e$(8!A\e(B")
564 ("\e$(7"`\e(B" . "\e$(8"`\e(B")
565 ("\e$(7!;\e(B" . "\e$(8!;\e(B")
566 ("\e$(7!D\e(B" . "\e$(8!D\e(B")
567 ;; Yes these are dirty. But ...
568 ("\e$(7!>\e(B \e$(7!>\e(B" . ,(compose-string "\e$(7!>\e(B \e$(7!>\e(B" 0 3 [?\e$(7!>\e(B (Br . Bl) ? (Br . Bl) ?\e$(7!>\e(B]))
569 ("\e$(7!4!5!5\e(B" . ,(compose-string
570 "\e$(7#R#S#S#S\e(B" 0 4
571 [?\e$(7#R\e(B (Br . Bl) ?\e$(7#S\e(B (Br . Bl) ?\e$(7#S\e(B (Br . Bl) ?\e$(7#S\e(B]))
572 ("\e$(7!4!5\e(B" . ,(compose-string "\e$(7#R#S#S\e(B" 0 3 [?\e$(7#R\e(B (Br . Bl) ?\e$(7#S\e(B (Br . Bl) ?\e$(7#S\e(B]))
573 ("\e$(7!6\e(B" . ,(compose-string "\e$(7#R#S!I\e(B" 0 3 [?\e$(7#R\e(B (Br . Bl) ?\e$(7#S\e(B (br . tr) ?\e$(7!I\e(B]))
574 ("\e$(7!4\e(B" . ,(compose-string "\e$(7#R#S\e(B" 0 2 [?\e$(7#R\e(B (Br . Bl) ?\e$(7#S\e(B]))))
575
576 (defconst tibetan-regexp
577 (let ((l (list tibetan-precomposed-transcription-alist
578 tibetan-consonant-transcription-alist
579 tibetan-vowel-transcription-alist
580 tibetan-modifier-transcription-alist
581 tibetan-subjoined-transcription-alist))
582 (separator "\\|")
583 tail pattern)
584 (while l
585 (setq tail (car l) l (cdr l))
586 (while tail
587 (setq pattern (cons separator (cons (car (car tail)) pattern))
588 tail (cdr tail))))
589 (apply 'concat (nreverse (cdr pattern))))
590 "Regexp matching a Tibetan transcription of a composable Tibetan sequence.
591 The result of matching is to be used for indexing alists at conversion
592 from a roman transcription to the corresponding Tibetan character.")
593
594 (defvar tibetan-precomposed-regexp
595 (let ((l tibetan-precomposed-transcription-alist)
596 temp)
597 (setq temp "^\\(")
598 (setq temp
599 (concat temp (car (car l))))
600 (setq l (cdr l))
601 (while l
602 (setq temp
603 (concat temp "\\|" (car (car l))))
604 (setq l (cdr l)))
605 (concat temp "\\)"))
606 "Regexp string to match a romanized Tibetan complex consonant.
607 The result of matching is to be used for indexing alists when the input key
608 from an input method is converted to the corresponding precomposed glyph.")
609
610 (defvar tibetan-precomposition-rule-regexp
611 (let ((l tibetan-precomposition-rule-alist)
612 temp)
613 (setq temp "\\(")
614 (setq temp (concat temp (car (car l))))
615 (setq l (cdr l))
616 (while l
617 (setq temp (concat temp "\\|" (car (car l))))
618 (setq l (cdr l)))
619 (concat temp "\\)"))
620 "Regexp string to match a sequence of Tibetan consonantic components, i.e.,
621 one base consonant and one or more subjoined consonants.
622 The result of matching is to be used for indexing alist when the component
623 sequence is converted to the corresponding precomposed glyph.
624 This also matches some punctuation characters which need conversion.")
625
626 (defvar tibetan-decomposed nil)
627 (defvar tibetan-decomposed-temp nil)
628
629 (provide 'tibetan)
630
631 ;;; tibetan.el ends here