]> code.delx.au - gnu-emacs/blob - lisp/language/tibetan.el
Merge from emacs--devo--0
[gnu-emacs] / 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, or (at your option)
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
29 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
30 ;; Boston, MA 02110-1301, USA.
31
32 ;; Author: Toru TOMABECHI, <Toru.Tomabechi@orient.unil.ch>
33
34 ;; Created: Feb. 17. 1997
35
36 ;; History:
37 ;; 1997.03.13 Modification for special signs and punctuations.
38
39 ;;; Commentary:
40
41 ;;; Code:
42
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
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)
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
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
65 ;;; ; encoded.
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 ;
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 ;
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.
73 ;;;
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
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
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
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))
98
99 (define-coding-system-alias 'tibetan 'tibetan-iso-8bit)
100
101 (set-language-info-alist
102 "Tibetan" '((charset tibetan tibetan-1-column)
103 (coding-system tibetan-iso-8bit)
104 (coding-priority iso-2022-7bit tibetan-iso-8bit)
105 (input-method . "tibetan-wylie")
106 (features tibet-util)
107 (documentation . t)
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")))
109
110 ;; `\e$(7"A\e(B' is included in the pattern for subjoined consonants because we
111 ;; treat it specially in tibetan-add-components.
112 ;; modified by Tomabechi 1999/12/10
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)
118 (defconst tibetan-composable-pattern
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]*"
120 "Regexp matching a composable sequence of Tibetan characters.")
121
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")
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 ))
175
176
177 (defconst tibetan-vowel-transcription-alist
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")
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")
202 ("," . "\e$(7"e\e(B") ; idem.
203 ))
204
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
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")
284 ("brt" . "\e$(7"7%&\e(B")
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")
328 ("sm" . "\e$(7%Y\e(B"))
329 )
330
331
332 (defconst tibetan-subjoined-transcription-alist
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")
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 )
379 (lambda (x y) (> (length (car x)) (length (car y))))))
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")
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 ))
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
453 ;;;
454 ;;; alist for Tibetan consonantic components <-> precomposed glyph conversion.
455 ;;; (includes some punctuation conversion rules)
456 ;;;
457 (defconst tibetan-precomposition-rule-alist
458 `(("\e$(7"6#B#>\e(B" . "\e$(7$G\e(B")
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")
538 ("\e$(7"D#4\e(B" . "\e$(7!!\e(B") ; dummy 0x2121 added 2000/06/08 for transition l -> lng
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")
553 ("\e$(7"G#9\e(B" . "\e$(7%Y\e(B")))
554
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)
563 (while l
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.
570 The result of matching is to be used for indexing alists at conversion
571 from a roman transcription to the corresponding Tibetan character.")
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.
586 The result of matching is to be used for indexing alists when the input key
587 from 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.,
600 one base consonant and one or more subjoined consonants.
601 The result of matching is to be used for indexing alist when the component
602 sequence is converted to the corresponding precomposed glyph.
603 This also matches some punctuation characters which need conversion.")
604
605 (defvar tibetan-decomposed nil)
606 (defvar tibetan-decomposed-temp nil)
607
608 ;; For automatic composition.
609 (set-char-table-range composition-function-table '(#xF00 . #xFD1)
610 '(("[\xF00-\xFD1]+" . font-shape-text)))
611
612 (provide 'tibetan)
613
614 ;;; arch-tag: 8d37c8d7-f95d-450f-9ec2-819e61fc79a7
615 ;;; tibetan.el ends here