(find-composition): Mention about the automatic
[bpt/emacs.git] / lisp / language / tibetan.el
CommitLineData
e8af40ee 1;;; tibetan.el --- support for Tibetan language -*- coding: iso-2022-7bit; -*-
80d75b56 2
38141d20 3;; Copyright (C) 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
d4877ac1 4;; Free Software Foundation, Inc.
38141d20
GM
5;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
6;; 2006, 2007, 2008
eaa61218
KH
7;; National Institute of Advanced Industrial Science and Technology (AIST)
8;; Registration Number H14PRO021
8f924df7
KH
9;; Copyright (C) 2003
10;; National Institute of Advanced Industrial Science and Technology (AIST)
11;; Registration Number H13PRO009
80d75b56 12
8f924df7 13;; Keywords: multilingual, Tibetan, i18n
80d75b56
KH
14
15;; This file is part of GNU Emacs.
16
4936186e 17;; GNU Emacs is free software: you can redistribute it and/or modify
80d75b56 18;; it under the terms of the GNU General Public License as published by
4936186e
GM
19;; the Free Software Foundation, either version 3 of the License, or
20;; (at your option) any later version.
80d75b56
KH
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
4936186e 28;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
80d75b56
KH
29
30;; Author: Toru TOMABECHI, <Toru.Tomabechi@orient.unil.ch>
31
32;; Created: Feb. 17. 1997
33
34;; History:
a1506d29 35;; 1997.03.13 Modification for special signs and punctuations.
80d75b56 36
e8af40ee
PJ
37;;; Commentary:
38
80d75b56
KH
39;;; Code:
40
80d75b56
KH
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
ab3f4890 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)
80d75b56
KH
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
ab3f4890
KH
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
a1506d29 63;;; ; encoded.
80d75b56
KH
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 ;
ab3f4890 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 ;
80d75b56
KH
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.
ab3f4890 71;;;
80d75b56
KH
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
a1506d29 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
80d75b56
KH
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
e1915ab3
KH
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))
80d75b56 96
a79a3c79 97(define-coding-system-alias 'tibetan 'tibetan-iso-8bit)
80d75b56 98
80d75b56 99(set-language-info-alist
a564ccf9 100 "Tibetan" '((charset tibetan tibetan-1-column)
a79a3c79
KH
101 (coding-system tibetan-iso-8bit)
102 (coding-priority iso-2022-7bit tibetan-iso-8bit)
a564ccf9
KH
103 (input-method . "tibetan-wylie")
104 (features tibet-util)
80d75b56 105 (documentation . t)
8f924df7 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")))
80d75b56 107
d169c89e
KH
108;; `\e$(7"A\e(B' is included in the pattern for subjoined consonants because we
109;; treat it specially in tibetan-add-components.
ab3f4890 110;; modified by Tomabechi 1999/12/10
3e799ba1
KH
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)
d169c89e 116(defconst tibetan-composable-pattern
8f924df7 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]*"
d169c89e
KH
118 "Regexp matching a composable sequence of Tibetan characters.")
119
80d75b56
KH
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")
ab3f4890
KH
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 ))
80d75b56
KH
173
174
175(defconst tibetan-vowel-transcription-alist
3e799ba1
KH
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")
80d75b56
KH
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")
80d75b56 200 ("," . "\e$(7"e\e(B") ; idem.
80d75b56
KH
201 ))
202
d169c89e
KH
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
80d75b56
KH
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")
ab3f4890 282 ("brt" . "\e$(7"7%&\e(B")
80d75b56
KH
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")
ab3f4890
KH
326 ("sm" . "\e$(7%Y\e(B"))
327 )
328
80d75b56
KH
329
330(defconst tibetan-subjoined-transcription-alist
d169c89e
KH
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")
ab3f4890
KH
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 )
d169c89e 377 (lambda (x y) (> (length (car x)) (length (car y))))))
80d75b56
KH
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")
ab3f4890
KH
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 ))
3e799ba1
KH
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
80d75b56
KH
451;;;
452;;; alist for Tibetan consonantic components <-> precomposed glyph conversion.
453;;; (includes some punctuation conversion rules)
454;;;
455(defconst tibetan-precomposition-rule-alist
d169c89e 456 `(("\e$(7"6#B#>\e(B" . "\e$(7$G\e(B")
80d75b56
KH
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")
3e799ba1 536 ("\e$(7"D#4\e(B" . "\e$(7!!\e(B") ; dummy 0x2121 added 2000/06/08 for transition l -> lng
80d75b56
KH
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")
d169c89e
KH
551 ("\e$(7"G#9\e(B" . "\e$(7%Y\e(B")))
552
d169c89e
KH
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)
80d75b56 561 (while l
d169c89e
KH
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.
568The result of matching is to be used for indexing alists at conversion
569from a roman transcription to the corresponding Tibetan character.")
80d75b56
KH
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.
584The result of matching is to be used for indexing alists when the input key
585from 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.,
598one base consonant and one or more subjoined consonants.
599The result of matching is to be used for indexing alist when the component
600sequence is converted to the corresponding precomposed glyph.
601This also matches some punctuation characters which need conversion.")
602
603(defvar tibetan-decomposed nil)
604(defvar tibetan-decomposed-temp nil)
605
69d21b0c 606;; For automatic composition.
16a4c7e9 607(set-char-table-range composition-function-table '(#xF00 . #xFD1)
9192d3ed 608 '(("[\xF00-\xFD1]+" . tibetan-composition-function)))
69d21b0c 609
41da80b1
DL
610(provide 'tibetan)
611
cbee283d 612;; arch-tag: 8d37c8d7-f95d-450f-9ec2-819e61fc79a7
e8af40ee 613;;; tibetan.el ends here