Use UTF-8 for most files with non-ASCII characters.
[bpt/emacs.git] / lisp / language / tibetan.el
dissimilarity index 72%
index e80ded9..f852847 100644 (file)
-;;; tibetan.el --- support for Tibetan language -*- coding: iso-2022-7bit; -*-
-
-;; Copyright (C) 1997, 2001-2013 Free Software Foundation, Inc.
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;;   2006, 2007, 2008, 2009, 2010, 2011
-;;   National Institute of Advanced Industrial Science and Technology (AIST)
-;;   Registration Number H14PRO021
-;; Copyright (C) 2003
-;;   National Institute of Advanced Industrial Science and Technology (AIST)
-;;   Registration Number H13PRO009
-
-;; Author: Toru TOMABECHI <Toru.Tomabechi@orient.unil.ch>
-;; Created: Feb. 17. 1997
-;; Keywords: multilingual, Tibetan, i18n
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; History:
-
-;; 1997.03.13 Modification for special signs and punctuation.
-
-;;; Commentary:
-
-;;; Code:
-
-;;; Tibetan Character set.
-;;; \x2130 -- \x234a is a subset of Unicode v.2 \x0f00 - \x0fb9
-;;; with a slight modification. And there are some subjoined
-;;; consonants which are not specified in Unicode.
-;;; I hope I can add missing characters later.
-;;;
-;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-;;;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)
-;;;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 ; Punctuation,
-;;;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
-;;;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.
-;;;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 ;
-;;;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 // ;
-;;;
-;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-;;;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
-;;;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
-;;;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.
-;;;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)
-;;;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
-;;;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
-;;;                                                     ; atomically
-;;;                                                     ; encoded.
-;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-;;;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
-;;;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 ;
-;;;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 ;
-;;;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
-;;;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
-;;;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.
-;;;
-;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-;;;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
-;;;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
-;;;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.
-;;;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
-;;;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
-;;;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
-;;;                                                     ; when written on a
-;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ; file in Tibetan
-;;;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.
-;;;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 ;
-;;;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 ;
-;;;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 ;
-;;;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 ;
-;;;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 // ;
-;;;
-
-
-(define-coding-system 'tibetan-iso-8bit
-  "8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)."
-  :coding-type 'iso-2022
-  :mnemonic ?Q
-  :designation [ascii tibetan nil nil]
-  :charset-list '(ascii tibetan))
-
-(define-coding-system-alias 'tibetan 'tibetan-iso-8bit)
-
-(set-language-info-alist
- "Tibetan" '((charset tibetan tibetan-1-column)
-            (coding-system tibetan-iso-8bit)
-            (coding-priority iso-2022-7bit tibetan-iso-8bit)
-            (input-method . "tibetan-wylie")
-            (features tibet-util)
-            (documentation . t)
-            (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")))
-
-;; `\e$(7"A\e(B' is included in the pattern for subjoined consonants because we
-;; treat it specially in tibetan-add-components.
-;; modified by Tomabechi 1999/12/10
-;; modified by Tomabechi 2000/06/08
-;;          To allow infinite addition of vowels/modifiers
-;;          as specified in Unicode v.3
-;; \e$(7"A\e(B is removed from the class of subjoined. Tomabechi 2000/06/08
-;; (for Unicode support)
-(defconst tibetan-composable-pattern
-  "[\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]*"
-  "Regexp matching a composable sequence of Tibetan characters.")
-
-;;;
-;;; Definitions of conversion data.
-;;;
-
-
-;;; alists for tibetan char <-> transcription conversion
-;;; longer transcription should come first
-(defconst tibetan-consonant-transcription-alist
-  '(("tsh" . "\e$(7";\e(B")
-    ("dzh" . "\e$(7"=\e(B")
-    ("kSH" . "\e$(7"J\e(B")
-    ("kh" . "\e$(7""\e(B")
-    ("gh" . "\e$(7"$\e(B")
-    ("ng" . "\e$(7"%\e(B")
-    ("ch" . "\e$(7"'\e(B")
-    ("ny" . "\e$(7"*\e(B")
-    ("TH" . "\e$(7",\e(B")
-    ("DH" . "\e$(7".\e(B")
-    ("th" . "\e$(7"1\e(B")
-    ("dh" . "\e$(7"3\e(B")
-    ("ph" . "\e$(7"6\e(B")
-    ("bh" . "\e$(7"8\e(B")
-    ("ts" . "\e$(7":\e(B")
-    ("dz" . "\e$(7"<\e(B")
-    ("zh" . "\e$(7"?\e(B")
-    ("sh" . "\e$(7"E\e(B")
-    ("SH" . "\e$(7"F\e(B")
-    ("k" . "\e$(7"!\e(B")
-    ("g" . "\e$(7"#\e(B")
-    ("c" . "\e$(7"&\e(B")
-    ("j" . "\e$(7"(\e(B")
-    ("T" . "\e$(7"+\e(B")
-    ("D" . "\e$(7"-\e(B")
-    ("N" . "\e$(7"/\e(B")
-    ("t" . "\e$(7"0\e(B")
-    ("d" . "\e$(7"2\e(B")
-    ("n" . "\e$(7"4\e(B")
-    ("p" . "\e$(7"5\e(B")
-    ("b" . "\e$(7"7\e(B")
-    ("m" . "\e$(7"9\e(B")
-    ("w" . "\e$(7">\e(B")
-    ("z" . "\e$(7"@\e(B")
-    ("'" . "\e$(7"A\e(B")
-    ("y" . "\e$(7"B\e(B")
-    ("r" . "\e$(7"C\e(B")
-    ("l" . "\e$(7"D\e(B")
-    ("s" . "\e$(7"G\e(B")
-    ("h" . "\e$(7"H\e(B")
-    ("H" . "\e$(7"H\e(B")
-    ("A" . "\e$(7"I\e(B")
-    ;; Added by Tomabechi 1999/12/10
-    ("R" . "\e$(7"K\e(B") ;; fixed form RA
-    ))
-
-
-(defconst tibetan-vowel-transcription-alist
-  '(
-    ;; Composite Vowels
-    ;; Added by Tomabechi 2000/06/08
-    ("frr" . "\e$(7"X\e(B")
-    ("fll" . "\e$(7"Z\e(B")
-    ("fa" . "\e$(7"R\e(B")
-    ("fi" . "\e$(7"T\e(B")
-    ("fu" . "\e$(7"V\e(B")
-    ("fr" . "\e$(7"W\e(B")
-    ("fl" . "\e$(7"Y\e(B")
-    ("fI" . "\e$(7"b\e(B")
-    ;; Normal Vowels
-    ("ai" . "\e$(7"\\e(B")
-    ("au" . "\e$(7"^\e(B")
-    ("ee" . "\e$(7"\\e(B")
-    ("oo" . "\e$(7"^\e(B")
-    ("a" . "\e$(7"Q\e(B")                        ; invisible vowel sign (\x2251)
-    ("i" . "\e$(7"S\e(B")
-    ("u" . "\e$(7"U\e(B")
-    ("e" . "\e$(7"[\e(B")
-    ("o" . "\e$(7"]\e(B")
-    ("E" . "\e$(7"\\e(B")
-    ("O" . "\e$(7"^\e(B")
-    ("I" . "\e$(7"a\e(B")
-    ("," . "\e$(7"e\e(B")                        ; idem.
-    ))
-
-(defconst tibetan-modifier-transcription-alist
-  '(("M" . "\e$(7"_\e(B")
-    ("~" . "\e$(7"c\e(B")
-    ("`" . "\e$(7"d\e(B")
-    ("x" . "\e$(7"i\e(B")
-    ("X" . "\e$(7"j\e(B")
-    ("v" . "\e$(7"g\e(B")
-    ("V" . "\e$(7"h\e(B")
-    ("q" . "\e$(7"k\e(B")
-    ("Q" . "\e$(7"l\e(B")
-    ("_/" . "\e$(7!I\e(B")
-    ("_o" . "\e$(7!g\e(B")
-    ("_O" . "\e$(7!e\e(B")))
-
-(defconst tibetan-precomposed-transcription-alist
-  '(("phyw" . "\e$(7$G\e(B")
-    ("tshw" . "\e$(7$)\e(B")
-    ("rtsw" . "\e$(7%.\e(B")
-    ("khw" . "\e$(7$"\e(B")
-    ("nyw" . "\e$(7$%\e(B")
-    ("tsw" . "\e$(7$(\e(B")
-    ("zhw" . "\e$(7$*\e(B")
-    ("shw" . "\e$(7$.\e(B")
-    ("khy" . "\e$(7$A\e(B")
-    ("phy" . "\e$(7$D\e(B")
-    ("khr" . "\e$(7$Q\e(B")
-    ("thr" . "\e$(7$T\e(B")
-    ("phr" . "\e$(7$W\e(B")
-    ("shr" . "\e$(7$Z\e(B")
-    ("dzr" . "\e$(7$^\e(B")
-    ("grw" . "\e$(7$_\e(B")
-    ("rng" . "\e$(7%#\e(B")
-    ("rny" . "\e$(7%%\e(B")
-    ("rts" . "\e$(7%+\e(B")
-    ("rdz" . "\e$(7%,\e(B")
-    ("rgw" . "\e$(7%-\e(B")
-    ("rky" . "\e$(7%0\e(B")
-    ("rgy" . "\e$(7%1\e(B")
-    ("rmy" . "\e$(7%2\e(B")
-    ("lng" . "\e$(7%B\e(B")
-    ("sng" . "\e$(7%R\e(B")
-    ("sny" . "\e$(7%S\e(B")
-    ("sts" . "\e$(7%Z\e(B")
-    ("sky" . "\e$(7%`\e(B")
-    ("sgy" . "\e$(7%a\e(B")
-    ("spy" . "\e$(7%b\e(B")
-    ("sby" . "\e$(7%c\e(B")
-    ("smy" . "\e$(7%d\e(B")
-    ("skr" . "\e$(7%p\e(B")
-    ("sgr" . "\e$(7%q\e(B")
-    ("snr" . "\e$(7%r\e(B")
-    ("spr" . "\e$(7%s\e(B")
-    ("sbr" . "\e$(7%t\e(B")
-    ("smr" . "\e$(7%u\e(B")
-    ("kw" . "\e$(7$!\e(B")
-    ("gw" . "\e$(7$#\e(B")
-    ("cw" . "\e$(7$$\e(B")
-    ("tw" . "\e$(7$&\e(B")
-    ("dw" . "\e$(7$'\e(B")
-    ("zw" . "\e$(7$+\e(B")
-    ("rw" . "\e$(7$,\e(B")
-    ("lw" . "\e$(7$-\e(B")
-    ("sw" . "\e$(7$/\e(B")
-    ("hw" . "\e$(7$0\e(B")
-    ("ky" . "\e$(7$@\e(B")
-    ("gy" . "\e$(7$B\e(B")
-    ("py" . "\e$(7$C\e(B")
-    ("by" . "\e$(7$E\e(B")
-    ("my" . "\e$(7$F\e(B")
-    ("kr" . "\e$(7$P\e(B")
-    ("gr" . "\e$(7$R\e(B")
-    ("tr" . "\e$(7$S\e(B")
-    ("dr" . "\e$(7$U\e(B")
-    ("pr" . "\e$(7$V\e(B")
-    ("brk" . "\e$(7"7%!\e(B")
-    ("brg" . "\e$(7"7%"\e(B")
-    ("brng" . "\e$(7"7%#\e(B")
-    ("brj" . "\e$(7"7%$\e(B")
-    ("brny" . "\e$(7"7%%\e(B")
-    ("brt" .  "\e$(7"7%&\e(B")
-    ("brd" . "\e$(7"7%'\e(B")
-    ("brn" . "\e$(7"7%(\e(B")
-    ("brts" . "\e$(7"7%+\e(B")
-    ("brdz" . "\e$(7"7%,\e(B")
-    ("brl" . "\e$(7"7$d\e(B")
-    ("br" . "\e$(7$X\e(B")
-    ("mr" . "\e$(7$Y\e(B")
-    ("sr" . "\e$(7$[\e(B")
-    ("hr" . "\e$(7$\\e(B")
-    ("jr" . "\e$(7$]\e(B")
-    ("kl" . "\e$(7$`\e(B")
-    ("gl" . "\e$(7$a\e(B")
-    ("blt" . "\e$(7"7%E\e(B")
-    ("bld" . "\e$(7"7%F\e(B")
-    ("bl" . "\e$(7$b\e(B")
-    ("zl" . "\e$(7$c\e(B")
-    ("rl" . "\e$(7$d\e(B")
-    ("sl" . "\e$(7$e\e(B")
-    ("rk" . "\e$(7%!\e(B")
-    ("rg" . "\e$(7%"\e(B")
-    ("rj" . "\e$(7%$\e(B")
-    ("rt" . "\e$(7%&\e(B")
-    ("rd" . "\e$(7%'\e(B")
-    ("rn" . "\e$(7%(\e(B")
-    ("rb" . "\e$(7%)\e(B")
-    ("rm" . "\e$(7%*\e(B")
-    ("lk" . "\e$(7%@\e(B")
-    ("lg" . "\e$(7%A\e(B")
-    ("lc" . "\e$(7%C\e(B")
-    ("lj" . "\e$(7%D\e(B")
-    ("lt" . "\e$(7%E\e(B")
-    ("ld" . "\e$(7%F\e(B")
-    ("ln" . "\e$(7!!\e(B")                       ; dummy \x2121
-    ("lp" . "\e$(7%G\e(B")
-    ("lb" . "\e$(7%H\e(B")
-    ("lh" . "\e$(7%I\e(B")
-    ("sk" . "\e$(7%P\e(B")
-    ("sg" . "\e$(7%Q\e(B")
-    ("st" . "\e$(7%T\e(B")
-    ("sd" . "\e$(7%U\e(B")
-    ("sn" . "\e$(7%V\e(B")
-    ("sp" . "\e$(7%W\e(B")
-    ("sb" . "\e$(7%X\e(B")
-    ("sm" . "\e$(7%Y\e(B"))
-  )
-
-
-(defconst tibetan-subjoined-transcription-alist
-  (sort '(("+k"  . "\e$(7#!\e(B")
-         ("+kh" . "\e$(7#"\e(B")
-         ("+g"  . "\e$(7##\e(B")
-         ("+gh" . "\e$(7#$\e(B")
-         ("+ng" . "\e$(7#%\e(B")
-         ("+c"  . "\e$(7#&\e(B")
-         ("+ch" . "\e$(7#'\e(B")
-         ("+j"  . "\e$(7#(\e(B")
-         ("+ny"  . "\e$(7#*\e(B")
-         ("+T"  . "\e$(7#+\e(B")
-         ("+TH" . "\e$(7#,\e(B")
-         ("+D"  . "\e$(7#-\e(B")
-         ("+DH" . "\e$(7#.\e(B")
-         ("+N"  . "\e$(7#/\e(B")
-         ("+t"  . "\e$(7#0\e(B")
-         ("+th" . "\e$(7#1\e(B")
-         ("+d"  . "\e$(7#2\e(B")
-         ("+dh" . "\e$(7#3\e(B")
-         ("+n"  . "\e$(7#4\e(B")
-         ("+p"  . "\e$(7#5\e(B")
-         ("+ph" . "\e$(7#6\e(B")
-         ("+b"  . "\e$(7#7\e(B")
-         ("+bh" . "\e$(7#8\e(B")
-         ("+m"  . "\e$(7#9\e(B")
-         ("+ts" . "\e$(7#:\e(B")
-         ("+tsh" . "\e$(7#;\e(B")
-         ("+dz" . "\e$(7#<\e(B")
-         ("+dzh" . "\e$(7#=\e(B")
-         ("+w"  . "\e$(7#>\e(B")
-         ("+zh" . "\e$(7#?\e(B")
-         ("+z"  . "\e$(7#@\e(B")
-         ("+'"  . "\e$(7#A\e(B")
-         ("+y"  . "\e$(7#B\e(B")
-         ("+r"  . "\e$(7#C\e(B")
-         ("+l"  . "\e$(7#D\e(B")
-         ("+sh" . "\e$(7#E\e(B")
-         ("+SH" . "\e$(7#F\e(B")
-         ("+s"  . "\e$(7#G\e(B")
-         ("+h"  . "\e$(7#H\e(B")
-         ("+A"  . "\e$(7#I\e(B")
-         ("+kSH" . "\e$(7#J\e(B")
-         ;; Added by Tomabechi 1999/12/10
-         ("+W" . "\e$(7#K\e(B") ;; fixed form subscribed WA
-         ("+Y" . "\e$(7#L\e(B") ;; fixed form subscribed YA
-         ("+R" . "\e$(7#M\e(B") ;; fixed form subscribed RA
-         )
-       (lambda (x y) (> (length (car x)) (length (car y))))))
-
-;;;
-;;; alist for Tibetan base consonant <-> subjoined consonant conversion.
-;;;
-(defconst tibetan-base-to-subjoined-alist
-  '(("\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" . "\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"0\e(B" . "\e$(7#0\e(B")
-    ("\e$(7"1\e(B" . "\e$(7#1\e(B")
-    ("\e$(7"2\e(B" . "\e$(7#2\e(B")
-    ("\e$(7"3\e(B" . "\e$(7#3\e(B")
-    ("\e$(7"4\e(B" . "\e$(7#4\e(B")
-    ("\e$(7"5\e(B" . "\e$(7#5\e(B")
-    ("\e$(7"6\e(B" . "\e$(7#6\e(B")
-    ("\e$(7"7\e(B" . "\e$(7#7\e(B")
-    ("\e$(7"8\e(B" . "\e$(7#8\e(B")
-    ("\e$(7"9\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")
-    ("\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"A\e(B" . "\e$(7#A\e(B")
-    ("\e$(7"B\e(B" . "\e$(7#B\e(B")
-    ("\e$(7"C\e(B" . "\e$(7#C\e(B")
-    ("\e$(7"D\e(B" . "\e$(7#D\e(B")
-    ("\e$(7"E\e(B" . "\e$(7#E\e(B")
-    ("\e$(7"F\e(B" . "\e$(7#F\e(B")
-    ("\e$(7"G\e(B" . "\e$(7#G\e(B")
-    ("\e$(7"H\e(B" . "\e$(7#H\e(B")
-    ("\e$(7"I\e(B" . "\e$(7#I\e(B")
-    ("\e$(7"J\e(B" . "\e$(7#J\e(B")
-    ;; Added by Tomabechi 1999/12/10
-    ("\e$(7"K\e(B" . "\e$(7#M\e(B") ;; Fixed form RA (224B->234D)
-    ))
-
-;;; alist for Tibetan composite vowels (long i, vocalic r, etc.)
-;;; New variable. created by Tomabechi 2000/06/08
-(defconst tibetan-composite-vowel-alist
-  '(;; LONG A
-    ;; ("\e$(7"R\e(B" . ((bc . tc) ?\e$(7"R\e(B))
-    ;; LONG I
-    ("\e$(7"T\e(B" . (?\e$(7"R\e(B (tc . bc) ?\e$(7"S\e(B))
-    ;; LONG U
-    ("\e$(7"V\e(B" . (?\e$(7"R\e(B (bc . tc) ?\e$(7"U\e(B))
-    ;; VOCALIC R
-    ("\e$(7"W\e(B" . (?\e$(7#C\e(B (tc . bc) ?\e$(7"a\e(B))
-    ;; LONG VOCALIC R
-    ("\e$(7"X\e(B" . (?\e$(7#C\e(B (bc . tc) ?\e$(7"R\e(B (tc . bc) ?\e$(7"a\e(B))
-    ;; VOCALIC L
-    ("\e$(7"Y\e(B" . (?\e$(7#D\e(B (tc . bc) ?\e$(7"a\e(B))
-    ;;\e$(7!;\e(BLONG VOCALIC L
-    ("\e$(7"Z\e(B" . (?\e$(7#D\e(B (bc . tc) ?\e$(7"R\e(B (tc . bc) ?\e$(7"a\e(B))
-    ;; LONG REVERSE I
-    ("\e$(7"b\e(B" . (?\e$(7"R\e(B (tc . bc) ?\e$(7"a\e(B))
-    ))
-
-
-
-;;;
-;;; alist for Tibetan consonantic components <-> precomposed glyph conversion.
-;;; (includes some punctuation conversion rules)
-;;;
-(defconst tibetan-precomposition-rule-alist
-  `(("\e$(7"6#B#>\e(B" . "\e$(7$G\e(B")
-    ("\e$(7"##C#>\e(B" . "\e$(7$_\e(B")
-    ("\e$(7";#>\e(B" . "\e$(7$)\e(B")
-    ("\e$(7"C#:#>\e(B" . "\e$(7%.\e(B")
-    ("\e$(7"C###>\e(B" . "\e$(7%-\e(B")
-    ("\e$(7"C#!#B\e(B" . "\e$(7%0\e(B")
-    ("\e$(7"C###B\e(B" . "\e$(7%1\e(B")
-    ("\e$(7"C#9#B\e(B" . "\e$(7%2\e(B")
-    ("\e$(7"G#!#B\e(B" . "\e$(7%`\e(B")
-    ("\e$(7"G###B\e(B" . "\e$(7%a\e(B")
-    ("\e$(7"G#5#B\e(B" . "\e$(7%b\e(B")
-    ("\e$(7"G#7#B\e(B" . "\e$(7%c\e(B")
-    ("\e$(7"G#9#B\e(B" . "\e$(7%d\e(B")
-    ("\e$(7"G#!#C\e(B" . "\e$(7%p\e(B")
-    ("\e$(7"G###C\e(B" . "\e$(7%q\e(B")
-    ("\e$(7"G#4#C\e(B" . "\e$(7%r\e(B")
-    ("\e$(7"G#5#C\e(B" . "\e$(7%s\e(B")
-    ("\e$(7"G#7#C\e(B" . "\e$(7%t\e(B")
-    ("\e$(7"G#9#C\e(B" . "\e$(7%u\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#>\e(B" . "\e$(7$.\e(B")
-    ("\e$(7""#B\e(B" . "\e$(7$A\e(B")
-    ("\e$(7"6#B\e(B" . "\e$(7$D\e(B")
-    ("\e$(7""#C\e(B" . "\e$(7$Q\e(B")
-    ("\e$(7"1#C\e(B" . "\e$(7$T\e(B")
-    ("\e$(7"6#C\e(B" . "\e$(7$W\e(B")
-    ("\e$(7"E#C\e(B" . "\e$(7$Z\e(B")
-    ("\e$(7"<#C\e(B" . "\e$(7$^\e(B")
-    ("\e$(7"C#%\e(B" . "\e$(7%#\e(B")
-    ("\e$(7"C#*\e(B" . "\e$(7%%\e(B")
-    ("\e$(7"C#:\e(B" . "\e$(7%+\e(B")
-    ("\e$(7"C#<\e(B" . "\e$(7%,\e(B")
-    ("\e$(7"D#%\e(B" . "\e$(7%B\e(B")
-    ("\e$(7"G#%\e(B" . "\e$(7%R\e(B")
-    ("\e$(7"G#*\e(B" . "\e$(7%S\e(B")
-    ("\e$(7"G#:\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" . "\e$(7$$\e(B")
-    ("\e$(7"0#>\e(B" . "\e$(7$&\e(B")
-    ("\e$(7"2#>\e(B" . "\e$(7$'\e(B")
-    ("\e$(7"@#>\e(B" . "\e$(7$+\e(B")
-    ("\e$(7"C#>\e(B" . "\e$(7$,\e(B")
-    ("\e$(7"D#>\e(B" . "\e$(7$-\e(B")
-    ("\e$(7"G#>\e(B" . "\e$(7$/\e(B")
-    ("\e$(7"H#>\e(B" . "\e$(7$0\e(B")
-    ("\e$(7"!#B\e(B" . "\e$(7$@\e(B")
-    ("\e$(7"##B\e(B" . "\e$(7$B\e(B")
-    ("\e$(7"5#B\e(B" . "\e$(7$C\e(B")
-    ("\e$(7"7#B\e(B" . "\e$(7$E\e(B")
-    ("\e$(7"9#B\e(B" . "\e$(7$F\e(B")
-    ("\e$(7"!#C\e(B" . "\e$(7$P\e(B")
-    ("\e$(7"##C\e(B" . "\e$(7$R\e(B")
-    ("\e$(7"0#C\e(B" . "\e$(7$S\e(B")
-    ("\e$(7"2#C\e(B" . "\e$(7$U\e(B")
-    ("\e$(7"5#C\e(B" . "\e$(7$V\e(B")
-    ("\e$(7"7#C\e(B" . "\e$(7$X\e(B")
-    ("\e$(7"9#C\e(B" . "\e$(7$Y\e(B")
-    ("\e$(7"G#C\e(B" . "\e$(7$[\e(B")
-    ("\e$(7"H#C\e(B" . "\e$(7$\\e(B")
-    ("\e$(7"(#C\e(B" . "\e$(7$]\e(B")
-    ("\e$(7"!#D\e(B" . "\e$(7$`\e(B")
-    ("\e$(7"##D\e(B" . "\e$(7$a\e(B")
-    ("\e$(7"7#D\e(B" . "\e$(7$b\e(B")
-    ("\e$(7"@#D\e(B" . "\e$(7$c\e(B")
-    ("\e$(7"C#D\e(B" . "\e$(7$d\e(B")
-    ("\e$(7"G#D\e(B" . "\e$(7$e\e(B")
-    ("\e$(7"C#!\e(B" . "\e$(7%!\e(B")
-    ("\e$(7"C##\e(B" . "\e$(7%"\e(B")
-    ("\e$(7"C#(\e(B" . "\e$(7%$\e(B")
-    ("\e$(7"C#0\e(B" . "\e$(7%&\e(B")
-    ("\e$(7"C#2\e(B" . "\e$(7%'\e(B")
-    ("\e$(7"C#4\e(B" . "\e$(7%(\e(B")
-    ("\e$(7"C#7\e(B" . "\e$(7%)\e(B")
-    ("\e$(7"C#9\e(B" . "\e$(7%*\e(B")
-    ("\e$(7"D#!\e(B" . "\e$(7%@\e(B")
-    ("\e$(7"D##\e(B" . "\e$(7%A\e(B")
-    ("\e$(7"D#4\e(B" . "\e$(7!!\e(B") ; dummy 0x2121 added 2000/06/08 for transition l -> lng
-    ("\e$(7"D#&\e(B" . "\e$(7%C\e(B")
-    ("\e$(7"D#(\e(B" . "\e$(7%D\e(B")
-    ("\e$(7"D#0\e(B" . "\e$(7%E\e(B")
-    ("\e$(7"D#2\e(B" . "\e$(7%F\e(B")
-    ("\e$(7"D#5\e(B" . "\e$(7%G\e(B")
-    ("\e$(7"D#7\e(B" . "\e$(7%H\e(B")
-    ("\e$(7"D#H\e(B" . "\e$(7%I\e(B")
-    ("\e$(7"G#!\e(B" . "\e$(7%P\e(B")
-    ("\e$(7"G##\e(B" . "\e$(7%Q\e(B")
-    ("\e$(7"G#0\e(B" . "\e$(7%T\e(B")
-    ("\e$(7"G#2\e(B" . "\e$(7%U\e(B")
-    ("\e$(7"G#4\e(B" . "\e$(7%V\e(B")
-    ("\e$(7"G#5\e(B" . "\e$(7%W\e(B")
-    ("\e$(7"G#7\e(B" . "\e$(7%X\e(B")
-    ("\e$(7"G#9\e(B" . "\e$(7%Y\e(B")))
-
-(defconst tibetan-regexp
-  (let ((l (list tibetan-precomposed-transcription-alist
-                tibetan-consonant-transcription-alist
-                tibetan-vowel-transcription-alist
-                tibetan-modifier-transcription-alist
-                tibetan-subjoined-transcription-alist))
-       (separator "\\|")
-       tail pattern)
-    (while l
-      (setq tail (car l) l (cdr l))
-      (while tail
-       (setq pattern (cons separator (cons (car (car tail)) pattern))
-             tail (cdr tail))))
-    (apply 'concat (nreverse (cdr pattern))))
-  "Regexp matching a Tibetan transcription of a composable Tibetan sequence.
-The result of matching is to be used for indexing alists at conversion
-from a roman transcription to the corresponding Tibetan character.")
-
-(defvar tibetan-precomposed-regexp
-  (purecopy
-  (let ((l tibetan-precomposed-transcription-alist)
-       temp)
-    (setq temp "^\\(")
-    (setq temp
-         (concat temp (car (car l))))
-    (setq l (cdr l))
-    (while l
-      (setq temp
-           (concat temp "\\|" (car (car l))))
-      (setq l (cdr l)))
-    (concat temp "\\)")))
-  "Regexp string to match a romanized Tibetan complex consonant.
-The result of matching is to be used for indexing alists when the input key
-from an input method is converted to the corresponding precomposed glyph.")
-
-(defvar tibetan-precomposition-rule-regexp
-  (purecopy
-  (let ((l tibetan-precomposition-rule-alist)
-       temp)
-    (setq temp "\\(")
-    (setq temp (concat temp (car (car l))))
-    (setq l (cdr l))
-    (while l
-      (setq temp (concat temp "\\|" (car (car l))))
-      (setq l (cdr l)))
-    (concat temp "\\)")))
-  "Regexp string to match a sequence of Tibetan consonantic components, i.e.,
-one base consonant and one or more subjoined consonants.
-The result of matching is to be used for indexing alist when the component
-sequence is converted to the corresponding precomposed glyph.
-This also matches some punctuation characters which need conversion.")
-
-(defvar tibetan-decomposed nil)
-(defvar tibetan-decomposed-temp nil)
-
-;; For automatic composition.
-(set-char-table-range
- composition-function-table '(#xF00 . #xFD1)
- (list (vector tibetan-composable-pattern 0 'font-shape-gstring)))
-
-(provide 'tibetan)
-
-;;; tibetan.el ends here
+;;; tibetan.el --- support for Tibetan language -*- coding: utf-8-emacs; -*-
+
+;; Copyright (C) 1997, 2001-2013 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+;;   2006, 2007, 2008, 2009, 2010, 2011
+;;   National Institute of Advanced Industrial Science and Technology (AIST)
+;;   Registration Number H14PRO021
+;; Copyright (C) 2003
+;;   National Institute of Advanced Industrial Science and Technology (AIST)
+;;   Registration Number H13PRO009
+
+;; Author: Toru TOMABECHI <Toru.Tomabechi@orient.unil.ch>
+;; Created: Feb. 17. 1997
+;; Keywords: multilingual, Tibetan, i18n
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; History:
+
+;; 1997.03.13 Modification for special signs and punctuation.
+
+;;; Commentary:
+
+;;; Code:
+
+;;; Tibetan Character set.
+;;; \x2130 -- \x234a is a subset of Unicode v.2 \x0f00 - \x0fb9
+;;; with a slight modification. And there are some subjoined
+;;; consonants which are not specified in Unicode.
+;;; I hope I can add missing characters later.
+;;;
+;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
+;;;2120 //                ; obsolete glyphs (2123-5)
+;;;2130 ༀ ༁ ༂ ༃ ༄ ༅ ༆ ༇ ༈ ༉ ༊ ་ ༌ ། ༎ ༏ ; Punctuation,
+;;;2140 ༐ ༑ ༒ ༓ ༔ ༕ ༖ ༗ ༘ ༙ ༚ ༛ ༜ ༝ ༞ ༟ ; Digits and
+;;;2150 ༠ ༡ ༢ ༣ ༤ ༥ ༦ ༧ ༨ ༩ ༪ ༫ ༬ ༭ ༮ ༯ ; Special signs.
+;;;2160 ༰ ༱ ༲ ༳ ༴ ༵ ༶ ༷ ༸ ༹ ༺ ༻ ༼ ༽ ༾ ༿ ;
+;;;2170                // ;
+;;;
+;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
+;;;2220 // ཀ ཁ ག གྷ ང ཅ ཆ ཇ  ཉ ཊ ཋ ཌ ཌྷ ཎ ; Base consonants
+;;;2230 ཏ ཐ ད དྷ ན པ ཕ བ བྷ མ ཙ ཚ ཛ ཛྷ ཝ ཞ ; and
+;;;2240 ཟ འ ཡ ར ལ ཤ ཥ ས ཧ ཨ ཀྵ ཪ     ; Vowel signs.
+;;;2250   ཱ ི ཱི ུ ཱུ ྲྀ ཷ ླྀ ཹ ེ ཻ ོ ཽ ཾ ; (\x2251 = vowel a)
+;;;2260 ཿ ྀ ཱྀ ྂ ྃ ྄ ྅ ྆ ྇ ྈ ྉ ྊ ྋ    ; Long vowels and
+;;;2270                // ; vocalic r, l ARE
+;;;                                                     ; atomically
+;;;                                                     ; encoded.
+;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
+;;;2320 // ྐ ྑ ྒ ྒྷ ྔ ྕ ྖ ྗ  ྙ ྚ ྛ ྜ ྜྷ ྞ ; Subjoined consonants
+;;;2330 ྟ ྠ ྡ ྡྷ ྣ ྤ ྥ ྦ ྦྷ ྨ ྩ ྪ ྫ ྫྷ ྭ ྮ ;
+;;;2340 ྯ ྰ ྱ ྲ ླ ྴ ྵ ྶ ྷ ྸ ྐྵ ྺ ྻ ྼ  ྾ ;
+;;;2350 ྿ ࿀ ࿁ ࿂ ࿃ ࿄ ࿅ ࿆ ࿇ ࿈ ࿉ ࿊ ࿋ ࿌   ; Hereafter, the chars
+;;;2360 ࿏                ; are not specified
+;;;2370                // ; in Unicode.
+;;;
+;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
+;;;2420 //                ; Precomposed
+;;;2430                 ; consonants for
+;;;2440                 ; ordinary Tibetan.
+;;;2450                 ; They are decomposed
+;;;2460                 ; into base and
+;;;2470                // ; subjoined consonants
+;;;                                                     ; when written on a
+;;;     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ; file in Tibetan
+;;;2520 //                ; coding system.
+;;;2530                 ;
+;;;2540                 ;
+;;;2550                 ;
+;;;2560                 ;
+;;;2570                // ;
+;;;
+
+
+(define-coding-system 'tibetan-iso-8bit
+  "8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)."
+  :coding-type 'iso-2022
+  :mnemonic ?Q
+  :designation [ascii tibetan nil nil]
+  :charset-list '(ascii tibetan))
+
+(define-coding-system-alias 'tibetan 'tibetan-iso-8bit)
+
+(set-language-info-alist
+ "Tibetan" '((charset tibetan tibetan-1-column)
+            (coding-system tibetan-iso-8bit)
+            (coding-priority iso-2022-7bit tibetan-iso-8bit)
+            (input-method . "tibetan-wylie")
+            (features tibet-util)
+            (documentation . t)
+            (sample-text . "Tibetan (བོད་སྐད་) ༄༅༅༎བཀྲ་ཤིས་བདེ་ལེགས༎ཨོཾ་མ་ཎི་པདྨེ་ཧའུྂ༎")))
+
+;; `' is included in the pattern for subjoined consonants because we
+;; treat it specially in tibetan-add-components.
+;; modified by Tomabechi 1999/12/10
+;; modified by Tomabechi 2000/06/08
+;;          To allow infinite addition of vowels/modifiers
+;;          as specified in Unicode v.3
+;;  is removed from the class of subjoined. Tomabechi 2000/06/08
+;; (for Unicode support)
+(defconst tibetan-composable-pattern
+  "[ཀ-ཀྵཪ][ྐ-ྐྵྺྻྼ]*[཰ཱི-྄ཱཽྀྀ]*[ཾྂྃ྆-ྋ༙༵༷]*"
+  "Regexp matching a composable sequence of Tibetan characters.")
+
+;;;
+;;; Definitions of conversion data.
+;;;
+
+
+;;; alists for tibetan char <-> transcription conversion
+;;; longer transcription should come first
+(defconst tibetan-consonant-transcription-alist
+  '(("tsh" . "")
+    ("dzh" . "")
+    ("kSH" . "")
+    ("kh" . "")
+    ("gh" . "")
+    ("ng" . "")
+    ("ch" . "")
+    ("ny" . "")
+    ("TH" . "")
+    ("DH" . "")
+    ("th" . "")
+    ("dh" . "")
+    ("ph" . "")
+    ("bh" . "")
+    ("ts" . "")
+    ("dz" . "")
+    ("zh" . "")
+    ("sh" . "")
+    ("SH" . "")
+    ("k" . "")
+    ("g" . "")
+    ("c" . "")
+    ("j" . "")
+    ("T" . "")
+    ("D" . "")
+    ("N" . "")
+    ("t" . "")
+    ("d" . "")
+    ("n" . "")
+    ("p" . "")
+    ("b" . "")
+    ("m" . "")
+    ("w" . "")
+    ("z" . "")
+    ("'" . "")
+    ("y" . "")
+    ("r" . "")
+    ("l" . "")
+    ("s" . "")
+    ("h" . "")
+    ("H" . "")
+    ("A" . "")
+    ;; Added by Tomabechi 1999/12/10
+    ("R" . "") ;; fixed form RA
+    ))
+
+
+(defconst tibetan-vowel-transcription-alist
+  '(
+    ;; Composite Vowels
+    ;; Added by Tomabechi 2000/06/08
+    ("frr" . "")
+    ("fll" . "")
+    ("fa" . "")
+    ("fi" . "")
+    ("fu" . "")
+    ("fr" . "")
+    ("fl" . "")
+    ("fI" . "")
+    ;; Normal Vowels
+    ("ai" . "")
+    ("au" . "")
+    ("ee" . "")
+    ("oo" . "")
+    ("a" . "")                     ; invisible vowel sign (\x2251)
+    ("i" . "")
+    ("u" . "")
+    ("e" . "")
+    ("o" . "")
+    ("E" . "")
+    ("O" . "")
+    ("I" . "")
+    ("," . "྄")                      ; idem.
+    ))
+
+(defconst tibetan-modifier-transcription-alist
+  '(("M" . "")
+    ("~" . "")
+    ("`" . "")
+    ("x" . "")
+    ("X" . "")
+    ("v" . "")
+    ("V" . "")
+    ("q" . "")
+    ("Q" . "")
+    ("_/" . "")
+    ("_o" . "")
+    ("_O" . "")))
+
+(defconst tibetan-precomposed-transcription-alist
+  '(("phyw" . "")
+    ("tshw" . "")
+    ("rtsw" . "")
+    ("khw" . "")
+    ("nyw" . "")
+    ("tsw" . "")
+    ("zhw" . "")
+    ("shw" . "")
+    ("khy" . "")
+    ("phy" . "")
+    ("khr" . "")
+    ("thr" . "")
+    ("phr" . "")
+    ("shr" . "")
+    ("dzr" . "")
+    ("grw" . "")
+    ("rng" . "")
+    ("rny" . "")
+    ("rts" . "")
+    ("rdz" . "")
+    ("rgw" . "")
+    ("rky" . "")
+    ("rgy" . "")
+    ("rmy" . "")
+    ("lng" . "")
+    ("sng" . "")
+    ("sny" . "")
+    ("sts" . "")
+    ("sky" . "")
+    ("sgy" . "")
+    ("spy" . "")
+    ("sby" . "")
+    ("smy" . "")
+    ("skr" . "")
+    ("sgr" . "")
+    ("snr" . "")
+    ("spr" . "")
+    ("sbr" . "")
+    ("smr" . "")
+    ("kw" . "")
+    ("gw" . "")
+    ("cw" . "")
+    ("tw" . "")
+    ("dw" . "")
+    ("zw" . "")
+    ("rw" . "")
+    ("lw" . "")
+    ("sw" . "")
+    ("hw" . "")
+    ("ky" . "")
+    ("gy" . "")
+    ("py" . "")
+    ("by" . "")
+    ("my" . "")
+    ("kr" . "")
+    ("gr" . "")
+    ("tr" . "")
+    ("dr" . "")
+    ("pr" . "")
+    ("brk" . "")
+    ("brg" . "")
+    ("brng" . "")
+    ("brj" . "")
+    ("brny" . "")
+    ("brt" .  "")
+    ("brd" . "")
+    ("brn" . "")
+    ("brts" . "")
+    ("brdz" . "")
+    ("brl" . "")
+    ("br" . "")
+    ("mr" . "")
+    ("sr" . "")
+    ("hr" . "")
+    ("jr" . "")
+    ("kl" . "")
+    ("gl" . "")
+    ("blt" . "")
+    ("bld" . "")
+    ("bl" . "")
+    ("zl" . "")
+    ("rl" . "")
+    ("sl" . "")
+    ("rk" . "")
+    ("rg" . "")
+    ("rj" . "")
+    ("rt" . "")
+    ("rd" . "")
+    ("rn" . "")
+    ("rb" . "")
+    ("rm" . "")
+    ("lk" . "")
+    ("lg" . "")
+    ("lc" . "")
+    ("lj" . "")
+    ("lt" . "")
+    ("ld" . "")
+    ("ln" . "")                    ; dummy \x2121
+    ("lp" . "")
+    ("lb" . "")
+    ("lh" . "")
+    ("sk" . "")
+    ("sg" . "")
+    ("st" . "")
+    ("sd" . "")
+    ("sn" . "")
+    ("sp" . "")
+    ("sb" . "")
+    ("sm" . ""))
+  )
+
+
+(defconst tibetan-subjoined-transcription-alist
+  (sort '(("+k"  . "")
+         ("+kh" . "")
+         ("+g"  . "")
+         ("+gh" . "")
+         ("+ng" . "")
+         ("+c"  . "")
+         ("+ch" . "")
+         ("+j"  . "")
+         ("+ny"  . "")
+         ("+T"  . "")
+         ("+TH" . "")
+         ("+D"  . "")
+         ("+DH" . "")
+         ("+N"  . "")
+         ("+t"  . "")
+         ("+th" . "")
+         ("+d"  . "")
+         ("+dh" . "")
+         ("+n"  . "")
+         ("+p"  . "")
+         ("+ph" . "")
+         ("+b"  . "")
+         ("+bh" . "")
+         ("+m"  . "")
+         ("+ts" . "")
+         ("+tsh" . "")
+         ("+dz" . "")
+         ("+dzh" . "")
+         ("+w"  . "")
+         ("+zh" . "")
+         ("+z"  . "")
+         ("+'"  . "")
+         ("+y"  . "")
+         ("+r"  . "")
+         ("+l"  . "")
+         ("+sh" . "")
+         ("+SH" . "")
+         ("+s"  . "")
+         ("+h"  . "")
+         ("+A"  . "")
+         ("+kSH" . "")
+         ;; Added by Tomabechi 1999/12/10
+         ("+W" . "") ;; fixed form subscribed WA
+         ("+Y" . "") ;; fixed form subscribed YA
+         ("+R" . "") ;; fixed form subscribed RA
+         )
+       (lambda (x y) (> (length (car x)) (length (car y))))))
+
+;;;
+;;; alist for Tibetan base consonant <-> subjoined consonant conversion.
+;;;
+(defconst tibetan-base-to-subjoined-alist
+  '(("ཀ" . "ྐ")
+    ("ཁ" . "ྑ")
+    ("ག" . "ྒ")
+    ("གྷ" . "ྒྷ")
+    ("ང" . "ྔ")
+    ("ཅ" . "ྕ")
+    ("ཆ" . "ྖ")
+    ("ཇ" . "ྗ")
+    ("ཉ" . "ྙ")
+    ("ཊ" . "ྚ")
+    ("ཋ" . "ྛ")
+    ("ཌ" . "ྜ")
+    ("ཌྷ" . "ྜྷ")
+    ("ཎ" . "ྞ")
+    ("ཏ" . "ྟ")
+    ("ཐ" . "ྠ")
+    ("ད" . "ྡ")
+    ("དྷ" . "ྡྷ")
+    ("ན" . "ྣ")
+    ("པ" . "ྤ")
+    ("ཕ" . "ྥ")
+    ("བ" . "ྦ")
+    ("བྷ" . "ྦྷ")
+    ("མ" . "ྨ")
+    ("ཙ" . "ྩ")
+    ("ཚ" . "ྪ")
+    ("ཛ" . "ྫ")
+    ("ཛྷ" . "ྫྷ")
+    ("ཝ" . "ྭ")
+    ("ཞ" . "ྮ")
+    ("ཟ" . "ྯ")
+    ("འ" . "ྰ")
+    ("ཡ" . "ྱ")
+    ("ར" . "ྲ")
+    ("ལ" . "ླ")
+    ("ཤ" . "ྴ")
+    ("ཥ" . "ྵ")
+    ("ས" . "ྶ")
+    ("ཧ" . "ྷ")
+    ("ཨ" . "ྸ")
+    ("ཀྵ" . "ྐྵ")
+    ;; Added by Tomabechi 1999/12/10
+    ("ཪ" . "ྼ") ;; Fixed form RA (224B->234D)
+    ))
+
+;;; alist for Tibetan composite vowels (long i, vocalic r, etc.)
+;;; New variable. created by Tomabechi 2000/06/08
+(defconst tibetan-composite-vowel-alist
+  '(;; LONG A
+    ;; ("ཱ" . ((bc . tc) ?ཱ))
+    ;; LONG I
+    ("ཱི" . (?ཱ (tc . bc) ?ི))
+    ;; LONG U
+    ("ཱུ" . (?ཱ (bc . tc) ?ུ))
+    ;; VOCALIC R
+    ("ྲྀ" . (?ྲ (tc . bc) ?ྀ))
+    ;; LONG VOCALIC R
+    ("ཷ" . (?ྲ (bc . tc) ?ཱ (tc . bc) ?ྀ))
+    ;; VOCALIC L
+    ("ླྀ" . (?ླ (tc . bc) ?ྀ))
+    ;;LONG VOCALIC L
+    ("ཹ" . (?ླ (bc . tc) ?ཱ (tc . bc) ?ྀ))
+    ;; LONG REVERSE I
+    ("ཱྀ" . (?ཱ (tc . bc) ?ྀ))
+    ))
+
+
+
+;;;
+;;; alist for Tibetan consonantic components <-> precomposed glyph conversion.
+;;; (includes some punctuation conversion rules)
+;;;
+(defconst tibetan-precomposition-rule-alist
+  `(("ཕྱྭ" . "")
+    ("གྲྭ" . "")
+    ("ཚྭ" . "")
+    ("རྩྭ" . "")
+    ("རྒྭ" . "")
+    ("རྐྱ" . "")
+    ("རྒྱ" . "")
+    ("རྨྱ" . "")
+    ("སྐྱ" . "")
+    ("སྒྱ" . "")
+    ("སྤྱ" . "")
+    ("སྦྱ" . "")
+    ("སྨྱ" . "")
+    ("སྐྲ" . "")
+    ("སྒྲ" . "")
+    ("སྣྲ" . "")
+    ("སྤྲ" . "")
+    ("སྦྲ" . "")
+    ("སྨྲ" . "")
+    ("ཁྭ" . "")
+    ("ཉྭ" . "")
+    ("ཙྭ" . "")
+    ("ཞྭ" . "")
+    ("ཤྭ" . "")
+    ("ཁྱ" . "")
+    ("ཕྱ" . "")
+    ("ཁྲ" . "")
+    ("ཐྲ" . "")
+    ("ཕྲ" . "")
+    ("ཤྲ" . "")
+    ("ཛྲ" . "")
+    ("རྔ" . "")
+    ("རྙ" . "")
+    ("རྩ" . "")
+    ("རྫ" . "")
+    ("ལྔ" . "")
+    ("སྔ" . "")
+    ("སྙ" . "")
+    ("སྩ" . "")
+    ("ཀྭ" . "")
+    ("གྭ" . "")
+    ("ཅྭ" . "")
+    ("ཏྭ" . "")
+    ("དྭ" . "")
+    ("ཟྭ" . "")
+    ("རྭ" . "")
+    ("ལྭ" . "")
+    ("སྭ" . "")
+    ("ཧྭ" . "")
+    ("ཀྱ" . "")
+    ("གྱ" . "")
+    ("པྱ" . "")
+    ("བྱ" . "")
+    ("མྱ" . "")
+    ("ཀྲ" . "")
+    ("གྲ" . "")
+    ("ཏྲ" . "")
+    ("དྲ" . "")
+    ("པྲ" . "")
+    ("བྲ" . "")
+    ("མྲ" . "")
+    ("སྲ" . "")
+    ("ཧྲ" . "")
+    ("ཇྲ" . "")
+    ("ཀླ" . "")
+    ("གླ" . "")
+    ("བླ" . "")
+    ("ཟླ" . "")
+    ("རླ" . "")
+    ("སླ" . "")
+    ("རྐ" . "")
+    ("རྒ" . "")
+    ("རྗ" . "")
+    ("རྟ" . "")
+    ("རྡ" . "")
+    ("རྣ" . "")
+    ("རྦ" . "")
+    ("རྨ" . "")
+    ("ལྐ" . "")
+    ("ལྒ" . "")
+    ("ལྣ" . "") ; dummy 0x2121 added 2000/06/08 for transition l -> lng
+    ("ལྕ" . "")
+    ("ལྗ" . "")
+    ("ལྟ" . "")
+    ("ལྡ" . "")
+    ("ལྤ" . "")
+    ("ལྦ" . "")
+    ("ལྷ" . "")
+    ("སྐ" . "")
+    ("སྒ" . "")
+    ("སྟ" . "")
+    ("སྡ" . "")
+    ("སྣ" . "")
+    ("སྤ" . "")
+    ("སྦ" . "")
+    ("སྨ" . "")))
+
+(defconst tibetan-regexp
+  (let ((l (list tibetan-precomposed-transcription-alist
+                tibetan-consonant-transcription-alist
+                tibetan-vowel-transcription-alist
+                tibetan-modifier-transcription-alist
+                tibetan-subjoined-transcription-alist))
+       (separator "\\|")
+       tail pattern)
+    (while l
+      (setq tail (car l) l (cdr l))
+      (while tail
+       (setq pattern (cons separator (cons (car (car tail)) pattern))
+             tail (cdr tail))))
+    (apply 'concat (nreverse (cdr pattern))))
+  "Regexp matching a Tibetan transcription of a composable Tibetan sequence.
+The result of matching is to be used for indexing alists at conversion
+from a roman transcription to the corresponding Tibetan character.")
+
+(defvar tibetan-precomposed-regexp
+  (purecopy
+  (let ((l tibetan-precomposed-transcription-alist)
+       temp)
+    (setq temp "^\\(")
+    (setq temp
+         (concat temp (car (car l))))
+    (setq l (cdr l))
+    (while l
+      (setq temp
+           (concat temp "\\|" (car (car l))))
+      (setq l (cdr l)))
+    (concat temp "\\)")))
+  "Regexp string to match a romanized Tibetan complex consonant.
+The result of matching is to be used for indexing alists when the input key
+from an input method is converted to the corresponding precomposed glyph.")
+
+(defvar tibetan-precomposition-rule-regexp
+  (purecopy
+  (let ((l tibetan-precomposition-rule-alist)
+       temp)
+    (setq temp "\\(")
+    (setq temp (concat temp (car (car l))))
+    (setq l (cdr l))
+    (while l
+      (setq temp (concat temp "\\|" (car (car l))))
+      (setq l (cdr l)))
+    (concat temp "\\)")))
+  "Regexp string to match a sequence of Tibetan consonantic components, i.e.,
+one base consonant and one or more subjoined consonants.
+The result of matching is to be used for indexing alist when the component
+sequence is converted to the corresponding precomposed glyph.
+This also matches some punctuation characters which need conversion.")
+
+(defvar tibetan-decomposed nil)
+(defvar tibetan-decomposed-temp nil)
+
+;; For automatic composition.
+(set-char-table-range
+ composition-function-table '(#xF00 . #xFD1)
+ (list (vector tibetan-composable-pattern 0 'font-shape-gstring)))
+
+(provide 'tibetan)
+
+;;; tibetan.el ends here