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