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