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