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