1 ;;; tibetan.el --- Support for Tibetan language
3 ;; Copyright (C) 1997 Free Software Foundation, Inc.
4 ;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
6 ;; Keywords: multilingual, Tibetan
8 ;; This file is part of GNU Emacs.
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
11 ;; it under the terms of the GNU General Public License as published by
12 ;; the Free Software Foundation; either version 2, or (at your option)
15 ;; GNU Emacs is distributed in the hope that it will be useful,
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;; GNU General Public License for more details.
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;; Boston, MA 02111-1307, USA.
25 ;; Author: Toru TOMABECHI, <Toru.Tomabechi@orient.unil.ch>
27 ;; Created: Feb. 17. 1997
30 ;; 1997.03.13 Modification for special signs and punctuations.
34 ;;; Tibetan Character set.
35 ;;; \x2130 -- \x234a is a subset of Unicode v.2 \x0f00 - \x0fb9
36 ;;; with a slight modification. And there are some subjoined
37 ;;; consonants which are not specified in Unicode.
38 ;;; I hope I can add missing characters later.
40 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
41 ;;;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 ;
42 ;;;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,
43 ;;;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
44 ;;;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.
45 ;;;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 ;
46 ;;;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 // ;
48 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
49 ;;;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
50 ;;;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
51 ;;;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.
52 ;;;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)
53 ;;;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
54 ;;;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
57 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
58 ;;;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
59 ;;;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 ;
60 ;;;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 ; 'a chung (\x2341)is
62 ;;; ; while in Unicode
63 ;;; ; it is classified
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 ;;; ; The character \x2351
71 ;;; ; is not used in our
73 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
74 ;;;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
75 ;;;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
76 ;;;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.
77 ;;;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
78 ;;;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
79 ;;;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
80 ;;; ; when written on a
81 ;;; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ; file in Tibetan
82 ;;;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.
83 ;;;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 ;
84 ;;;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 ;
85 ;;;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 ;
86 ;;;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 ;
87 ;;;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 // ;
93 "8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)"
94 '((ascii t) (tibetan t) nil nil
97 (put 'tibetan 'post-read-conversion 'tibetan-post-read-conversion)
98 (put 'tibetan 'pre-write-conversion 'tibetan-pre-write-conversion)
100 (set-language-info-alist
101 "Tibetan" '((setup-function . setup-tibetan-environment)
102 (charset . (tibetan tibetan-1-column))
103 (coding-system . (tibetan))
106 "Tibetan (
\e2
\e$(7"70"]
\e1"2
\e$(8!;
\e2
\e$(7%P`"Q
\e1"2
\e$(8!;
\e(B)
\e2
\e$(7#RP#SP#S
\e1!>"7
\e2$P`"Q
\e1
\e$(8!;
\e2
\e$(7"E0"S
\e1"G
\e$(8!;
\e$(7"7
\e2"20"[
\e1
\e$(8!;
\e2
\e$(7"D0"[
\e1"#"G!>
\e2"I0"]0"_
\e1
\e$(8!;
\e2
\e$(7"9`"Q
\e1
\e$(8!;
\e2
\e$(7"/0"S
\e1
\e$(8!;
\e2
\e$(7"5`"Q
\e1
\e2#2`#90"[
\e1
\e$(8!;
\e2
\e$(7"H`#A`"U0"c
\e1!>
\e(B")))
110 ;;; Definitions of conversion data.
114 ;;; alists for tibetan char <-> transcription conversion
115 ;;; longer transcription should come first
116 (defconst tibetan-consonant-transcription-alist
117 '(("tsh" . "
\e$(7";
\e(B")
118 ("dzh" . "
\e$(7"=
\e(B")
119 ("kSH" . "
\e$(7"J
\e(B")
120 ("kh" . "
\e$(7""
\e(B")
121 ("gh" . "
\e$(7"$
\e(B")
122 ("ng" . "
\e$(7"%
\e(B")
123 ("ch" . "
\e$(7"'
\e(B")
124 ("ny" . "
\e$(7"*
\e(B")
125 ("TH" . "
\e$(7",
\e(B")
126 ("DH" . "
\e$(7".
\e(B")
127 ("th" . "
\e$(7"1
\e(B")
128 ("dh" . "
\e$(7"3
\e(B")
129 ("ph" . "
\e$(7"6
\e(B")
130 ("bh" . "
\e$(7"8
\e(B")
131 ("ts" . "
\e$(7":
\e(B")
132 ("dz" . "
\e$(7"<
\e(B")
133 ("zh" . "
\e$(7"?
\e(B")
134 ("sh" . "
\e$(7"E
\e(B")
135 ("SH" . "
\e$(7"F
\e(B")
136 ("k" . "
\e$(7"!
\e(B")
137 ("g" . "
\e$(7"#
\e(B")
138 ("c" . "
\e$(7"&
\e(B")
139 ("j" . "
\e$(7"(
\e(B")
140 ("T" . "
\e$(7"+
\e(B")
141 ("D" . "
\e$(7"-
\e(B")
142 ("N" . "
\e$(7"/
\e(B")
143 ("t" . "
\e$(7"0
\e(B")
144 ("d" . "
\e$(7"2
\e(B")
145 ("n" . "
\e$(7"4
\e(B")
146 ("p" . "
\e$(7"5
\e(B")
147 ("b" . "
\e$(7"7
\e(B")
148 ("m" . "
\e$(7"9
\e(B")
149 ("w" . "
\e$(7">
\e(B")
150 ("z" . "
\e$(7"@
\e(B")
151 ("'" . "
\e$(7"A
\e(B")
152 ("y" . "
\e$(7"B
\e(B")
153 ("r" . "
\e$(7"C
\e(B")
154 ("l" . "
\e$(7"D
\e(B")
155 ("s" . "
\e$(7"G
\e(B")
156 ("h" . "
\e$(7"H
\e(B")
157 ("H" . "
\e$(7"H
\e(B")
158 ("A" . "
\e$(7"I
\e(B")))
161 (defconst tibetan-vowel-transcription-alist
162 '(("ai" . "
\e$(7"\
\e(B")
163 ("au" . "
\e$(7"^
\e(B")
164 ("ee" . "
\e$(7"\
\e(B")
165 ("oo" . "
\e$(7"^
\e(B")
166 ("a" . "
\e$(7"Q
\e(B") ; invisible vowel sign (\x2251)
167 ("i" . "
\e$(7"S
\e(B")
168 ("u" . "
\e$(7"U
\e(B")
169 ("e" . "
\e$(7"[
\e(B")
170 ("o" . "
\e$(7"]
\e(B")
171 ("E" . "
\e$(7"\
\e(B")
172 ("O" . "
\e$(7"^
\e(B")
173 ("I" . "
\e$(7"a
\e(B")
174 ("M" . "
\e$(7"_
\e(B")
175 ("~" . "
\e$(7"c
\e(B") ; not specified in Ext.wylie
176 ("`" . "
\e$(7"d
\e(B") ; idem.
177 ("," . "
\e$(7"e
\e(B") ; idem.
178 ("v" . "
\e$(7"g
\e(B") ; idem.
179 ("V" . "
\e$(7"h
\e(B") ; idem.
180 ("x" . "
\e$(7"i
\e(B") ; idem.
181 ("X" . "
\e$(7"j
\e(B") ; idem.
182 ("q" . "
\e$(7"k
\e(B") ; idem.
183 ("Q" . "
\e$(7"l
\e(B") ; idem.
184 ("_o" . "
\e$(7!g
\e(B") ; idem.
185 ("_O" . "
\e$(7!e
\e(B") ; idem.
186 ("_/" . "
\e$(7!I
\e(B") ; idem.
189 (defconst tibetan-precomposed-transcription-alist
190 '(("phyw" . "
\e$(7$G
\e(B")
191 ("tshw" . "
\e$(7$)
\e(B")
192 ("rtsw" . "
\e$(7%.
\e(B")
193 ("khw" . "
\e$(7$"
\e(B")
194 ("nyw" . "
\e$(7$%
\e(B")
195 ("tsw" . "
\e$(7$(
\e(B")
196 ("zhw" . "
\e$(7$*
\e(B")
197 ("shw" . "
\e$(7$.
\e(B")
198 ("khy" . "
\e$(7$A
\e(B")
199 ("phy" . "
\e$(7$D
\e(B")
200 ("khr" . "
\e$(7$Q
\e(B")
201 ("thr" . "
\e$(7$T
\e(B")
202 ("phr" . "
\e$(7$W
\e(B")
203 ("shr" . "
\e$(7$Z
\e(B")
204 ("dzr" . "
\e$(7$^
\e(B")
205 ("grw" . "
\e$(7$_
\e(B")
206 ("rng" . "
\e$(7%#
\e(B")
207 ("rny" . "
\e$(7%%
\e(B")
208 ("rts" . "
\e$(7%+
\e(B")
209 ("rdz" . "
\e$(7%,
\e(B")
210 ("rgw" . "
\e$(7%-
\e(B")
211 ("rky" . "
\e$(7%0
\e(B")
212 ("rgy" . "
\e$(7%1
\e(B")
213 ("rmy" . "
\e$(7%2
\e(B")
214 ("lng" . "
\e$(7%B
\e(B")
215 ("sng" . "
\e$(7%R
\e(B")
216 ("sny" . "
\e$(7%S
\e(B")
217 ("sts" . "
\e$(7%Z
\e(B")
218 ("sky" . "
\e$(7%`
\e(B")
219 ("sgy" . "
\e$(7%a
\e(B")
220 ("spy" . "
\e$(7%b
\e(B")
221 ("sby" . "
\e$(7%c
\e(B")
222 ("smy" . "
\e$(7%d
\e(B")
223 ("skr" . "
\e$(7%p
\e(B")
224 ("sgr" . "
\e$(7%q
\e(B")
225 ("snr" . "
\e$(7%r
\e(B")
226 ("spr" . "
\e$(7%s
\e(B")
227 ("sbr" . "
\e$(7%t
\e(B")
228 ("smr" . "
\e$(7%u
\e(B")
229 ("kw" . "
\e$(7$!
\e(B")
230 ("gw" . "
\e$(7$#
\e(B")
231 ("cw" . "
\e$(7$$
\e(B")
232 ("tw" . "
\e$(7$&
\e(B")
233 ("dw" . "
\e$(7$'
\e(B")
234 ("zw" . "
\e$(7$+
\e(B")
235 ("rw" . "
\e$(7$,
\e(B")
236 ("lw" . "
\e$(7$-
\e(B")
237 ("sw" . "
\e$(7$/
\e(B")
238 ("hw" . "
\e$(7$0
\e(B")
239 ("ky" . "
\e$(7$@
\e(B")
240 ("gy" . "
\e$(7$B
\e(B")
241 ("py" . "
\e$(7$C
\e(B")
242 ("by" . "
\e$(7$E
\e(B")
243 ("my" . "
\e$(7$F
\e(B")
244 ("kr" . "
\e$(7$P
\e(B")
245 ("gr" . "
\e$(7$R
\e(B")
246 ("tr" . "
\e$(7$S
\e(B")
247 ("dr" . "
\e$(7$U
\e(B")
248 ("pr" . "
\e$(7$V
\e(B")
249 ("brk" . "
\e$(7"7%!
\e(B")
250 ("brg" . "
\e$(7"7%"
\e(B")
251 ("brng" . "
\e$(7"7%#
\e(B")
252 ("brj" . "
\e$(7"7%$
\e(B")
253 ("brny" . "
\e$(7"7%%
\e(B")
254 ("brt" . "
\e$(7"7%&
\e(B")
255 ("brd" . "
\e$(7"7%'
\e(B")
256 ("brn" . "
\e$(7"7%(
\e(B")
257 ("brts" . "
\e$(7"7%+
\e(B")
258 ("brdz" . "
\e$(7"7%,
\e(B")
259 ("brl" . "
\e$(7"7$d
\e(B")
260 ("br" . "
\e$(7$X
\e(B")
261 ("mr" . "
\e$(7$Y
\e(B")
262 ("sr" . "
\e$(7$[
\e(B")
263 ("hr" . "
\e$(7$\
\e(B")
264 ("jr" . "
\e$(7$]
\e(B")
265 ("kl" . "
\e$(7$`
\e(B")
266 ("gl" . "
\e$(7$a
\e(B")
267 ("blt" . "
\e$(7"7%E
\e(B")
268 ("bld" . "
\e$(7"7%F
\e(B")
269 ("bl" . "
\e$(7$b
\e(B")
270 ("zl" . "
\e$(7$c
\e(B")
271 ("rl" . "
\e$(7$d
\e(B")
272 ("sl" . "
\e$(7$e
\e(B")
273 ("rk" . "
\e$(7%!
\e(B")
274 ("rg" . "
\e$(7%"
\e(B")
275 ("rj" . "
\e$(7%$
\e(B")
276 ("rt" . "
\e$(7%&
\e(B")
277 ("rd" . "
\e$(7%'
\e(B")
278 ("rn" . "
\e$(7%(
\e(B")
279 ("rb" . "
\e$(7%)
\e(B")
280 ("rm" . "
\e$(7%*
\e(B")
281 ("lk" . "
\e$(7%@
\e(B")
282 ("lg" . "
\e$(7%A
\e(B")
283 ("lc" . "
\e$(7%C
\e(B")
284 ("lj" . "
\e$(7%D
\e(B")
285 ("lt" . "
\e$(7%E
\e(B")
286 ("ld" . "
\e$(7%F
\e(B")
287 ("ln" . "
\e$(7!!
\e(B") ; dummy \x2121
288 ("lp" . "
\e$(7%G
\e(B")
289 ("lb" . "
\e$(7%H
\e(B")
290 ("lh" . "
\e$(7%I
\e(B")
291 ("sk" . "
\e$(7%P
\e(B")
292 ("sg" . "
\e$(7%Q
\e(B")
293 ("st" . "
\e$(7%T
\e(B")
294 ("sd" . "
\e$(7%U
\e(B")
295 ("sn" . "
\e$(7%V
\e(B")
296 ("sp" . "
\e$(7%W
\e(B")
297 ("sb" . "
\e$(7%X
\e(B")
298 ("sm" . "
\e$(7%Y
\e(B")))
300 (defconst tibetan-subjoined-transcription-alist
301 '(("+k" . "
\e$(7#!
\e(B")
302 ("+kh" . "
\e$(7#"
\e(B")
303 ("+g" . "
\e$(7##
\e(B")
304 ("+gh" . "
\e$(7#$
\e(B")
305 ("+ng" . "
\e$(7#%
\e(B")
306 ("+c" . "
\e$(7#&
\e(B")
307 ("+ch" . "
\e$(7#'
\e(B")
308 ("+j" . "
\e$(7#(
\e(B")
309 ("+ny" . "
\e$(7#*
\e(B")
310 ("+T" . "
\e$(7#+
\e(B")
311 ("+TH" . "
\e$(7#,
\e(B")
312 ("+D" . "
\e$(7#-
\e(B")
313 ("+DH" . "
\e$(7#.
\e(B")
314 ("+N" . "
\e$(7#/
\e(B")
315 ("+t" . "
\e$(7#0
\e(B")
316 ("+th" . "
\e$(7#1
\e(B")
317 ("+d" . "
\e$(7#2
\e(B")
318 ("+dh" . "
\e$(7#3
\e(B")
319 ("+n" . "
\e$(7#4
\e(B")
320 ("+p" . "
\e$(7#5
\e(B")
321 ("+ph" . "
\e$(7#6
\e(B")
322 ("+b" . "
\e$(7#7
\e(B")
323 ("+bh" . "
\e$(7#8
\e(B")
324 ("+m" . "
\e$(7#9
\e(B")
325 ("+ts" . "
\e$(7#:
\e(B")
326 ("+tsh" . "
\e$(7#;
\e(B")
327 ("+dz" . "
\e$(7#<
\e(B")
328 ("+dzh" . "
\e$(7#=
\e(B")
329 ("+w" . "
\e$(7#>
\e(B")
330 ("+zh" . "
\e$(7#?
\e(B")
331 ("+z" . "
\e$(7#@
\e(B")
332 ("+'" . "
\e$(7#A
\e(B")
333 ("+y" . "
\e$(7#B
\e(B")
334 ("+r" . "
\e$(7#C
\e(B")
335 ("+l" . "
\e$(7#D
\e(B")
336 ("+sh" . "
\e$(7#E
\e(B")
337 ("+SH" . "
\e$(7#F
\e(B")
338 ("+s" . "
\e$(7#G
\e(B")
339 ("+h" . "
\e$(7#H
\e(B")
340 ("+A" . "
\e$(7#I
\e(B")
341 ("+kSH" . "
\e$(7#J
\e(B")
342 ("R" . "
\e$(7#P
\e(B")))
345 ;;; alist for Tibetan base consonant <-> subjoined consonant conversion.
347 (defconst tibetan-base-to-subjoined-alist
348 '(("
\e$(7"!
\e(B" . "
\e$(7#!
\e(B")
349 ("
\e$(7""
\e(B" . "
\e$(7#"
\e(B")
350 ("
\e$(7"#
\e(B" . "
\e$(7##
\e(B")
351 ("
\e$(7"$
\e(B" . "
\e$(7#$
\e(B")
352 ("
\e$(7"%
\e(B" . "
\e$(7#%
\e(B")
353 ("
\e$(7"&
\e(B" . "
\e$(7#&
\e(B")
354 ("
\e$(7"'
\e(B" . "
\e$(7#'
\e(B")
355 ("
\e$(7"(
\e(B" . "
\e$(7#(
\e(B")
356 ("
\e$(7"*
\e(B" . "
\e$(7#*
\e(B")
357 ("
\e$(7"+
\e(B" . "
\e$(7#+
\e(B")
358 ("
\e$(7",
\e(B" . "
\e$(7#,
\e(B")
359 ("
\e$(7"-
\e(B" . "
\e$(7#-
\e(B")
360 ("
\e$(7".
\e(B" . "
\e$(7#.
\e(B")
361 ("
\e$(7"/
\e(B" . "
\e$(7#/
\e(B")
362 ("
\e$(7"0
\e(B" . "
\e$(7#0
\e(B")
363 ("
\e$(7"1
\e(B" . "
\e$(7#1
\e(B")
364 ("
\e$(7"2
\e(B" . "
\e$(7#2
\e(B")
365 ("
\e$(7"3
\e(B" . "
\e$(7#3
\e(B")
366 ("
\e$(7"4
\e(B" . "
\e$(7#4
\e(B")
367 ("
\e$(7"5
\e(B" . "
\e$(7#5
\e(B")
368 ("
\e$(7"6
\e(B" . "
\e$(7#6
\e(B")
369 ("
\e$(7"7
\e(B" . "
\e$(7#7
\e(B")
370 ("
\e$(7"8
\e(B" . "
\e$(7#8
\e(B")
371 ("
\e$(7"9
\e(B" . "
\e$(7#9
\e(B")
372 ("
\e$(7":
\e(B" . "
\e$(7#:
\e(B")
373 ("
\e$(7";
\e(B" . "
\e$(7#;
\e(B")
374 ("
\e$(7"<
\e(B" . "
\e$(7#<
\e(B")
375 ("
\e$(7"=
\e(B" . "
\e$(7#=
\e(B")
376 ("
\e$(7">
\e(B" . "
\e$(7#>
\e(B")
377 ("
\e$(7"?
\e(B" . "
\e$(7#?
\e(B")
378 ("
\e$(7"@
\e(B" . "
\e$(7#@
\e(B")
379 ("
\e$(7"A
\e(B" . "
\e$(7#A
\e(B")
380 ("
\e$(7"B
\e(B" . "
\e$(7#B
\e(B")
381 ("
\e$(7"C
\e(B" . "
\e$(7#C
\e(B")
382 ("
\e$(7"D
\e(B" . "
\e$(7#D
\e(B")
383 ("
\e$(7"E
\e(B" . "
\e$(7#E
\e(B")
384 ("
\e$(7"F
\e(B" . "
\e$(7#F
\e(B")
385 ("
\e$(7"G
\e(B" . "
\e$(7#G
\e(B")
386 ("
\e$(7"H
\e(B" . "
\e$(7#H
\e(B")
387 ("
\e$(7"I
\e(B" . "
\e$(7#I
\e(B")
388 ("
\e$(7"J
\e(B" . "
\e$(7#J
\e(B")))
391 ;;; alist for Tibetan consonantic components <-> precomposed glyph conversion.
392 ;;; (includes some punctuation conversion rules)
394 (defconst tibetan-precomposition-rule-alist
395 '(("
\e$(7"6#B#>
\e(B" . "
\e$(7$G
\e(B")
396 ("
\e$(7"##C#>
\e(B" . "
\e$(7$_
\e(B")
397 ("
\e$(7";#>
\e(B" . "
\e$(7$)
\e(B")
398 ("
\e$(7"C#:#>
\e(B" . "
\e$(7%.
\e(B")
399 ("
\e$(7"C###>
\e(B" . "
\e$(7%-
\e(B")
400 ("
\e$(7"C#!#B
\e(B" . "
\e$(7%0
\e(B")
401 ("
\e$(7"C###B
\e(B" . "
\e$(7%1
\e(B")
402 ("
\e$(7"C#9#B
\e(B" . "
\e$(7%2
\e(B")
403 ("
\e$(7"G#!#B
\e(B" . "
\e$(7%`
\e(B")
404 ("
\e$(7"G###B
\e(B" . "
\e$(7%a
\e(B")
405 ("
\e$(7"G#5#B
\e(B" . "
\e$(7%b
\e(B")
406 ("
\e$(7"G#7#B
\e(B" . "
\e$(7%c
\e(B")
407 ("
\e$(7"G#9#B
\e(B" . "
\e$(7%d
\e(B")
408 ("
\e$(7"G#!#C
\e(B" . "
\e$(7%p
\e(B")
409 ("
\e$(7"G###C
\e(B" . "
\e$(7%q
\e(B")
410 ("
\e$(7"G#4#C
\e(B" . "
\e$(7%r
\e(B")
411 ("
\e$(7"G#5#C
\e(B" . "
\e$(7%s
\e(B")
412 ("
\e$(7"G#7#C
\e(B" . "
\e$(7%t
\e(B")
413 ("
\e$(7"G#9#C
\e(B" . "
\e$(7%u
\e(B")
414 ("
\e$(7""#>
\e(B" . "
\e$(7$"
\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#>
\e(B" . "
\e$(7$.
\e(B")
419 ("
\e$(7""#B
\e(B" . "
\e$(7$A
\e(B")
420 ("
\e$(7"6#B
\e(B" . "
\e$(7$D
\e(B")
421 ("
\e$(7""#C
\e(B" . "
\e$(7$Q
\e(B")
422 ("
\e$(7"1#C
\e(B" . "
\e$(7$T
\e(B")
423 ("
\e$(7"6#C
\e(B" . "
\e$(7$W
\e(B")
424 ("
\e$(7"E#C
\e(B" . "
\e$(7$Z
\e(B")
425 ("
\e$(7"<#C
\e(B" . "
\e$(7$^
\e(B")
426 ("
\e$(7"C#%
\e(B" . "
\e$(7%#
\e(B")
427 ("
\e$(7"C#*
\e(B" . "
\e$(7%%
\e(B")
428 ("
\e$(7"C#:
\e(B" . "
\e$(7%+
\e(B")
429 ("
\e$(7"C#<
\e(B" . "
\e$(7%,
\e(B")
430 ("
\e$(7"D#%
\e(B" . "
\e$(7%B
\e(B")
431 ("
\e$(7"G#%
\e(B" . "
\e$(7%R
\e(B")
432 ("
\e$(7"G#*
\e(B" . "
\e$(7%S
\e(B")
433 ("
\e$(7"G#:
\e(B" . "
\e$(7%Z
\e(B")
434 ("
\e$(7"!#>
\e(B" . "
\e$(7$!
\e(B")
435 ("
\e$(7"##>
\e(B" . "
\e$(7$#
\e(B")
436 ("
\e$(7"&#>
\e(B" . "
\e$(7$$
\e(B")
437 ("
\e$(7"0#>
\e(B" . "
\e$(7$&
\e(B")
438 ("
\e$(7"2#>
\e(B" . "
\e$(7$'
\e(B")
439 ("
\e$(7"@#>
\e(B" . "
\e$(7$+
\e(B")
440 ("
\e$(7"C#>
\e(B" . "
\e$(7$,
\e(B")
441 ("
\e$(7"D#>
\e(B" . "
\e$(7$-
\e(B")
442 ("
\e$(7"G#>
\e(B" . "
\e$(7$/
\e(B")
443 ("
\e$(7"H#>
\e(B" . "
\e$(7$0
\e(B")
444 ("
\e$(7"!#B
\e(B" . "
\e$(7$@
\e(B")
445 ("
\e$(7"##B
\e(B" . "
\e$(7$B
\e(B")
446 ("
\e$(7"5#B
\e(B" . "
\e$(7$C
\e(B")
447 ("
\e$(7"7#B
\e(B" . "
\e$(7$E
\e(B")
448 ("
\e$(7"9#B
\e(B" . "
\e$(7$F
\e(B")
449 ("
\e$(7"!#C
\e(B" . "
\e$(7$P
\e(B")
450 ("
\e$(7"##C
\e(B" . "
\e$(7$R
\e(B")
451 ("
\e$(7"0#C
\e(B" . "
\e$(7$S
\e(B")
452 ("
\e$(7"2#C
\e(B" . "
\e$(7$U
\e(B")
453 ("
\e$(7"5#C
\e(B" . "
\e$(7$V
\e(B")
454 ("
\e$(7"7#C
\e(B" . "
\e$(7$X
\e(B")
455 ("
\e$(7"9#C
\e(B" . "
\e$(7$Y
\e(B")
456 ("
\e$(7"G#C
\e(B" . "
\e$(7$[
\e(B")
457 ("
\e$(7"H#C
\e(B" . "
\e$(7$\
\e(B")
458 ("
\e$(7"(#C
\e(B" . "
\e$(7$]
\e(B")
459 ("
\e$(7"!#D
\e(B" . "
\e$(7$`
\e(B")
460 ("
\e$(7"##D
\e(B" . "
\e$(7$a
\e(B")
461 ("
\e$(7"7#D
\e(B" . "
\e$(7$b
\e(B")
462 ("
\e$(7"@#D
\e(B" . "
\e$(7$c
\e(B")
463 ("
\e$(7"C#D
\e(B" . "
\e$(7$d
\e(B")
464 ("
\e$(7"G#D
\e(B" . "
\e$(7$e
\e(B")
465 ("
\e$(7"C#!
\e(B" . "
\e$(7%!
\e(B")
466 ("
\e$(7"C##
\e(B" . "
\e$(7%"
\e(B")
467 ("
\e$(7"C#(
\e(B" . "
\e$(7%$
\e(B")
468 ("
\e$(7"C#0
\e(B" . "
\e$(7%&
\e(B")
469 ("
\e$(7"C#2
\e(B" . "
\e$(7%'
\e(B")
470 ("
\e$(7"C#4
\e(B" . "
\e$(7%(
\e(B")
471 ("
\e$(7"C#7
\e(B" . "
\e$(7%)
\e(B")
472 ("
\e$(7"C#9
\e(B" . "
\e$(7%*
\e(B")
473 ("
\e$(7"D#!
\e(B" . "
\e$(7%@
\e(B")
474 ("
\e$(7"D##
\e(B" . "
\e$(7%A
\e(B")
475 ("
\e$(7"D#&
\e(B" . "
\e$(7%C
\e(B")
476 ("
\e$(7"D#(
\e(B" . "
\e$(7%D
\e(B")
477 ("
\e$(7"D#0
\e(B" . "
\e$(7%E
\e(B")
478 ("
\e$(7"D#2
\e(B" . "
\e$(7%F
\e(B")
479 ("
\e$(7"D#5
\e(B" . "
\e$(7%G
\e(B")
480 ("
\e$(7"D#7
\e(B" . "
\e$(7%H
\e(B")
481 ("
\e$(7"D#H
\e(B" . "
\e$(7%I
\e(B")
482 ("
\e$(7"G#!
\e(B" . "
\e$(7%P
\e(B")
483 ("
\e$(7"G##
\e(B" . "
\e$(7%Q
\e(B")
484 ("
\e$(7"G#0
\e(B" . "
\e$(7%T
\e(B")
485 ("
\e$(7"G#2
\e(B" . "
\e$(7%U
\e(B")
486 ("
\e$(7"G#4
\e(B" . "
\e$(7%V
\e(B")
487 ("
\e$(7"G#5
\e(B" . "
\e$(7%W
\e(B")
488 ("
\e$(7"G#7
\e(B" . "
\e$(7%X
\e(B")
489 ("
\e$(7"G#9
\e(B" . "
\e$(7%Y
\e(B")
490 ("
\e$(7!=
\e(B" . "
\e$(8!=
\e(B") ; 2 col <-> 1 col
491 ("
\e$(7!?
\e(B" . "
\e$(8!?
\e(B")
492 ("
\e$(7!@
\e(B" . "
\e$(8!@
\e(B")
493 ("
\e$(7!A
\e(B" . "
\e$(8!A
\e(B")
494 ("
\e$(7"`
\e(B" . "
\e$(8"`
\e(B")
495 ("
\e$(7!;
\e(B" . "
\e$(8!;
\e(B")
496 ("
\e$(7!D
\e(B" . "
\e$(8!D
\e(B")
497 ("
\e$(7!>
\e(B
\e$(7!>
\e(B" . "
\e2
\e$(7!>P
\e(B P
\e$(7!>
\e1
\e(B") ; Yes this is dirty. But ...
498 ("
\e$(7!4!5!5
\e(B" . "
\e2
\e$(7#RP#SP#SP#S
\e1
\e(B")
499 ("
\e$(7!4!5
\e(B" . "
\e2
\e$(7#RP#SP#S
\e1
\e(B")
500 ("
\e$(7!6
\e(B" . "
\e2
\e$(7#RP#S_!I
\e1
\e(B")
501 ("
\e$(7!4
\e(B" . "
\e2
\e$(7#RP#S
\e1
\e(B")))
503 (defvar tibetan-regexp
504 (let ((l (append tibetan-consonant-transcription-alist
505 tibetan-vowel-transcription-alist
506 tibetan-subjoined-transcription-alist))
509 (setq temp (concat temp (car (car l))))
512 (setq temp (concat temp "\\|" (car (car l))))
514 (concat temp "\\)$"))
515 "Regexp string to match a romanized Tibetan character component, i.e.,
516 base and subjoined consonant, vowel and vowel modifier. The result of matching
517 is to be used for indexing alists at conversion from a roman transcription to
518 the corresponding Tibetan character.")
520 (defvar tibetan-precomposed-regexp
521 (let ((l tibetan-precomposed-transcription-alist)
525 (concat temp (car (car l))))
529 (concat temp "\\|" (car (car l))))
532 "Regexp string to match a romanized Tibetan complex consonant.
533 The result of matching is to be used for indexing alists when the input key
534 from an input method is converted to the corresponding precomposed glyph.")
536 (defvar tibetan-precomposition-rule-regexp
537 (let ((l tibetan-precomposition-rule-alist)
540 (setq temp (concat temp (car (car l))))
543 (setq temp (concat temp "\\|" (car (car l))))
546 "Regexp string to match a sequence of Tibetan consonantic components, i.e.,
547 one base consonant and one or more subjoined consonants.
548 The result of matching is to be used for indexing alist when the component
549 sequence is converted to the corresponding precomposed glyph.
550 This also matches some punctuation characters which need conversion.")
552 (defvar tibetan-decomposed nil)
553 (defvar tibetan-decomposed-temp nil)
555 ;;; language/tibetan.el ends here