(make-coding-system
'tibetan-iso-8bit 2 ?Q
"8-bit encoding for ASCII (MSB=0) and TIBETAN (MSB=1)"
'(ascii tibetan nil nil
nil nil)
'((safe-charsets ascii tibetan)
(post-read-conversion . tibetan-post-read-conversion)
(pre-write-conversion . tibetan-pre-write-conversion)))
(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-compose-string
(copy-sequence
"Tibetan (4$(7"7r'"]0"7"]14"20"21!;4%P0"G#!"Q14"20"21!;(B) $(7!4!5!5!>4"70"714$P0"!#C"Q1!;4"Er'"S0"E"S14"G0"G1!;4"70"714"2r'"[0"2"[1!;4"Dr'"[0"D"[14"#0"#14"G0"G1!>4"Ir'"]r'"_0"I"]"_1!;4"90"9"Q1!
(defconst tibetan-composable-pattern
"[$(7"!(B-$(7"J"K(B][$(7#!(B-$(7#J#K#L#M(B]*[$(7"Q"R"S(B-$(7"^"a"b"e(B]*[$(7"_"c"d"g(B-$(7"l!I!e!g(B]*"
"Regexp matching a composable sequence of Tibetan characters.")
;; Register a function to compose Tibetan characters.
(aset composition-function-table (make-char 'tibetan)
(list (cons tibetan-composable-pattern 'tibetan-composition-function)))
;;;
;;; Definitions of conversion data.
;;;
;;; alists for tibetan char <-> transcription conversion
;;; longer transcription should come first
(defconst tibetan-consonant-transcription-alist
'(("tsh" . "$(7";(B")
("dzh" . "$(7"=(B")
("kSH" . "$(7"J(B")
("kh" . "$(7""(B")
("gh" . "$(7"$(B")
("ng" . "$(7"%(B")
("ch" . "$(7"'(B")
("ny" . "$(7"*(B")
("TH" . "$(7",(B")
("DH" . "$(7".(B")
("th" . "$(7"1(B")
("dh" . "$(7"3(B")
("ph" . "$(7"6(B")
("bh" . "$(7"8(B")
("ts" . "$(7":(B")
("dz" . "$(7"<(B")
("zh" . "$(7"?(B")
("sh" . "$(7"E(B")
("SH" . "$(7"F(B")
("k" . "$(7"!(B")
("g" . "$(7"#(B")
("c" . "$(7"&(B")
("j" . "$(7"((B")
("T" . "$(7"+(B")
("D" . "$(7"-(B")
("N" . "$(7"/(B")
("t" . "$(7"0(B")
("d" . "$(7"2(B")
("n" . "$(7"4(B")
("p" . "$(7"5(B")
("b" . "$(7"7(B")
("m" . "$(7"9(B")
("w" . "$(7">(B")
("z" . "$(7"@(B")
("'" . "$(7"A(B")
("y" . "$(7"B(B")
("r" . "$(7"C(B")
("l" . "$(7"D(B")
("s" . "$(7"G(B")
("h" . "$(7"H(B")
("H" . "$(7"H(B")
("A" . "$(7"I(B")
("R" . "$(7"K(B") ;; fixed form RA
))
(defconst tibetan-vowel-transcription-alist
'(
;; Composite Vowels
;; Added by Tomabechi 2000/06/08
("frr" . "$(7"X(B")
("fll" . "$(7"Z(B")
("fa" . "$(7"R(B")
("fi" . "$(7"T(B")
("fu" . "$(7"V(B")
("fr" . "$(7"W(B")
("fl" . "$(7"Y(B")
("fI" . "$(7"b(B")
;; Normal Vowels
("ai" . "$(7"\(B")
("au" . "$(7"^(B")
("ee" . "$(7"\(B")
("oo" . "$(7"^(B")
("a" . "$(7"Q(B") ("i" . "$(7"S(B")
("u" . "$(7"U(B")
("e" . "$(7"[(B")
("o" . "$(7"](B")
("E" . "$(7"\(B")
("O" . "$(7"^(B")
("I" . "$(7"a(B")
("," . "$(7"e(B") ))
(defconst tibetan-modifier-transcription-alist
'(("M" . "$(7"_(B")
("~" . "$(7"c(B")
("`" . "$(7"d(B")
("x" . "$(7"i(B")
("X" . "$(7"j(B")
("v" . "$(7"g(B")
("V" . "$(7"h(B")
("q" . "$(7"k(B")
("Q" . "$(7"l(B")
("_/" . "$(7!I(B")
("_o" . "$(7!g(B")
("_O" . "$(7!e(B")))
(defconst tibetan-precomposed-transcription-alist
'(("phyw" . "$(7$G(B")
("tshw" . "$(7$)(B")
("rtsw" . "$(7%.(B")
("khw" . "$(7$"(B")
("nyw" . "$(7$%(B")
("tsw" . "$(7$((B")
("zhw" . "$(7$*(B")
("shw" . "$(7$.(B")
("khy" . "$(7$A(B")
("phy" . "$(7$D(B")
("khr" . "$(7$Q(B")
("thr" . "$(7$T(B")
("phr" . "$(7$W(B")
("shr" . "$(7$Z(B")
("dzr" . "$(7$^(B")
("grw" . "$(7$_(B")
("rng" . "$(7%#(B")
("rny" . "$(7%%(B")
("rts" . "$(7%+(B")
("rdz" . "$(7%,(B")
("rgw" . "$(7%-(B")
("rky" . "$(7%0(B")
("rgy" . "$(7%1(B")
("rmy" . "$(7%2(B")
("lng" . "$(7%B(B")
("sng" . "$(7%R(B")
("sny" . "$(7%S(B")
("sts" . "$(7%Z(B")
("sky" . "$(7%`(B")
("sgy" . "$(7%a(B")
("spy" . "$(7%b(B")
("sby" . "$(7%c(B")
("smy" . "$(7%d(B")
("skr" . "$(7%p(B")
("sgr" . "$(7%q(B")
("snr" . "$(7%r(B")
("spr" . "$(7%s(B")
("sbr" . "$(7%t(B")
("smr" . "$(7%u(B")
("kw" . "$(7$!(B")
("gw" . "$(7$#(B")
("cw" . "$(7$$(B")
("tw" . "$(7$&(B")
("dw" . "$(7$'(B")
("zw" . "$(7$+(B")
("rw" . "$(7$,(B")
("lw" . "$(7$-(B")
("sw" . "$(7$/(B")
("hw" . "$(7$0(B")
("ky" . "$(7$@(B")
("gy" . "$(7$B(B")
("py" . "$(7$C(B")
("by" . "$(7$E(B")
("my" . "$(7$F(B")
("kr" . "$(7$P(B")
("gr" . "$(7$R(B")
("tr" . "$(7$S(B")
("dr" . "$(7$U(B")
("pr" . "$(7$V(B")
("brk" . "$(7"7%!(B")
("brg" . "$(7"7%"(B")
("brng" . "$(7"7%#(B")
("brj" . "$(7"7%$(B")
("brny" . "$(7"7%%(B")
("brt" . "$(7"7%&(B")
("brd" . "$(7"7%'(B")
("brn" . "$(7"7%((B")
("brts" . "$(7"7%+(B")
("brdz" . "$(7"7%,(B")
("brl" . "$(7"7$d(B")
("br" . "$(7$X(B")
("mr" . "$(7$Y(B")
("sr" . "$(7$[(B")
("hr" . "$(7$\(B")
("jr" . "$(7$](B")
("kl" . "$(7$`(B")
("gl" . "$(7$a(B")
("blt" . "$(7"7%E(B")
("bld" . "$(7"7%F(B")
("bl" . "$(7$b(B")
("zl" . "$(7$c(B")
("rl" . "$(7$d(B")
("sl" . "$(7$e(B")
("rk" . "$(7%!(B")
("rg" . "$(7%"(B")
("rj" . "$(7%$(B")
("rt" . "$(7%&(B")
("rd" . "$(7%'(B")
("rn" . "$(7%((B")
("rb" . "$(7%)(B")
("rm" . "$(7%*(B")
("lk" . "$(7%@(B")
("lg" . "$(7%A(B")
("lc" . "$(7%C(B")
("lj" . "$(7%D(B")
("lt" . "$(7%E(B")
("ld" . "$(7%F(B")
("ln" . "$(7!!(B") ; dummy \x2121
("lp" . "$(7%G(B")
("lb" . "$(7%H(B")
("lh" . "$(7%I(B")
("sk" . "$(7%P(B")
("sg" . "$(7%Q(B")
("st" . "$(7%T(B")
("sd" . "$(7%U(B")
("sn" . "$(7%V(B")
("sp" . "$(7%W(B")
("sb" . "$(7%X(B")
("sm" . "$(7%Y(B"))
)
(defconst tibetan-subjoined-transcription-alist
(sort '(("+k" . "$(7#!(B")
("+kh" . "$(7#"(B")
("+g" . "$(7##(B")
("+gh" . "$(7#$(B")
("+ng" . "$(7#%(B")
("+c" . "$(7#&(B")
("+ch" . "$(7#'(B")
("+j" . "$(7#((B")
("+ny" . "$(7#*(B")
("+T" . "$(7#+(B")
("+TH" . "$(7#,(B")
("+D" . "$(7#-(B")
("+DH" . "$(7#.(B")
("+N" . "$(7#/(B")
("+t" . "$(7#0(B")
("+th" . "$(7#1(B")
("+d" . "$(7#2(B")
("+dh" . "$(7#3(B")
("+n" . "$(7#4(B")
("+p" . "$(7#5(B")
("+ph" . "$(7#6(B")
("+b" . "$(7#7(B")
("+bh" . "$(7#8(B")
("+m" . "$(7#9(B")
("+ts" . "$(7#:(B")
("+tsh" . "$(7#;(B")
("+dz" . "$(7#<(B")
("+dzh" . "$(7#=(B")
("+w" . "$(7#>(B")
("+zh" . "$(7#?(B")
("+z" . "$(7#@(B")
("+'" . "$(7#A(B")
("+y" . "$(7#B(B")
("+r" . "$(7#C(B")
("+l" . "$(7#D(B")
("+sh" . "$(7#E(B")
("+SH" . "$(7#F(B")
("+s" . "$(7#G(B")
("+h" . "$(7#H(B")
("+A" . "$(7#I(B")
("+kSH" . "$(7#J(B")
("+W" . "$(7#K(B") ("+Y" . "$(7#L(B") ("+R" . "$(7#M(B") )
(lambda (x y) (> (length (car x)) (length (car y))))))
(defconst tibetan-base-to-subjoined-alist
'(("$(7"!(B" . "$(7#!(B")
("$(7""(B" . "$(7#"(B")
("$(7"#(B" . "$(7##(B")
("$(7"$(B" . "$(7#$(B")
("$(7"%(B" . "$(7#%(B")
("$(7"&(B" . "$(7#&(B")
("$(7"'(B" . "$(7#'(B")
("$(7"((B" . "$(7#((B")
("$(7"*(B" . "$(7#*(B")
("$(7"+(B" . "$(7#+(B")
("$(7",(B" . "$(7#,(B")
("$(7"-(B" . "$(7#-(B")
("$(7".(B" . "$(7#.(B")
("$(7"/(B" . "$(7#/(B")
("$(7"0(B" . "$(7#0(B")
("$(7"1(B" . "$(7#1(B")
("$(7"2(B" . "$(7#2(B")
("$(7"3(B" . "$(7#3(B")
("$(7"4(B" . "$(7#4(B")
("$(7"5(B" . "$(7#5(B")
("$(7"6(B" . "$(7#6(B")
("$(7"7(B" . "$(7#7(B")
("$(7"8(B" . "$(7#8(B")
("$(7"9(B" . "$(7#9(B")
("$(7":(B" . "$(7#:(B")
("$(7";(B" . "$(7#;(B")
("$(7"<(B" . "$(7#<(B")
("$(7"=(B" . "$(7#=(B")
("$(7">(B" . "$(7#>(B")
("$(7"?(B" . "$(7#?(B")
("$(7"@(B" . "$(7#@(B")
("$(7"A(B" . "$(7#A(B")
("$(7"B(B" . "$(7#B(B")
("$(7"C(B" . "$(7#C(B")
("$(7"D(B" . "$(7#D(B")
("$(7"E(B" . "$(7#E(B")
("$(7"F(B" . "$(7#F(B")
("$(7"G(B" . "$(7#G(B")
("$(7"H(B" . "$(7#H(B")
("$(7"I(B" . "$(7#I(B")
("$(7"J(B" . "$(7#J(B")
;; Added by Tomabechi 1999/12/10
("$(7"K(B" . "$(7#M(B") ))
(defconst tibetan-composite-vowel-alist
'( ("$(7"T(B" . (?$(7"R(B (tc . bc) ?$(7"S(B))
;; LONG U
("$(7"V(B" . (?$(7"R(B (bc . tc) ?$(7"U(B))
("$(7"W(B" . (?$(7#C(B (tc . bc) ?$(7"a(B))
("$(7"X(B" . (?$(7#C(B (bc . tc) ?$(7"R(B (tc . bc) ?$(7"a(B))
;; VOCALIC L
("$(7"Y(B" . (?$(7#D(B (tc . bc) ?$(7"a(B))
;;$(7!;(BLONG VOCALIC L
("$(7"Z(B" . (?$(7#D(B (bc . tc) ?$(7"R(B (tc . bc) ?$(7"a(B))
("$(7"b(B" . (?$(7"R(B (tc . bc) ?$(7"a(B))
))
;;;
;;; alist for Tibetan consonantic components <-> precomposed glyph conversion.
;;; (includes some punctuation conversion rules)
;;;
(defconst tibetan-precomposition-rule-alist
`(("$(7"6#B#>(B" . "$(7$G(B")
("$(7"##C#>(B" . "$(7$_(B")
("$(7";#>(B" . "$(7$)(B")
("$(7"C#:#>(B" . "$(7%.(B")
("$(7"C###>(B" . "$(7%-(B")
("$(7"C#!#B(B" . "$(7%0(B")
("$(7"C###B(B" . "$(7%1(B")
("$(7"C#9#B(B" . "$(7%2(B")
("$(7"G#!#B(B" . "$(7%`(B")
("$(7"G###B(B" . "$(7%a(B")
("$(7"G#5#B(B" . "$(7%b(B")
("$(7"G#7#B(B" . "$(7%c(B")
("$(7"G#9#B(B" . "$(7%d(B")
("$(7"G#!#C(B" . "$(7%p(B")
("$(7"G###C(B" . "$(7%q(B")
("$(7"G#4#C(B" . "$(7%r(B")
("$(7"G#5#C(B" . "$(7%s(B")
("$(7"G#7#C(B" . "$(7%t(B")
("$(7"G#9#C(B" . "$(7%u(B")
("$(7""#>(B" . "$(7$"(B")
("$(7"*#>(B" . "$(7$%(B")
("$(7":#>(B" . "$(7$((B")
("$(7"?#>(B" . "$(7$*(B")
("$(7"E#>(B" . "$(7$.(B")
("$(7""#B(B" . "$(7$A(B")
("$(7"6#B(B" . "$(7$D(B")
("$(7""#C(B" . "$(7$Q(B")
("$(7"1#C(B" . "$(7$T(B")
("$(7"6#C(B" . "$(7$W(B")
("$(7"E#C(B" . "$(7$Z(B")
("$(7"<#C(B" . "$(7$^(B")
("$(7"C#%(B" . "$(7%#(B")
("$(7"C#*(B" . "$(7%%(B")
("$(7"C#:(B" . "$(7%+(B")
("$(7"C#<(B" . "$(7%,(B")
("$(7"D#%(B" . "$(7%B(B")
("$(7"G#%(B" . "$(7%R(B")
("$(7"G#*(B" . "$(7%S(B")
("$(7"G#:(B" . "$(7%Z(B")
("$(7"!#>(B" . "$(7$!(B")
("$(7"##>(B" . "$(7$#(B")
("$(7"&#>(B" . "$(7$$(B")
("$(7"0#>(B" . "$(7$&(B")
("$(7"2#>(B" . "$(7$'(B")
("$(7"@#>(B" . "$(7$+(B")
("$(7"C#>(B" . "$(7$,(B")
("$(7"D#>(B" . "$(7$-(B")
("$(7"G#>(B" . "$(7$/(B")
("$(7"H#>(B" . "$(7$0(B")
("$(7"!#B(B" . "$(7$@(B")
("$(7"##B(B" . "$(7$B(B")
("$(7"5#B(B" . "$(7$C(B")
("$(7"7#B(B" . "$(7$E(B")
("$(7"9#B(B" . "$(7$F(B")
("$(7"!#C(B" . "$(7$P(B")
("$(7"##C(B" . "$(7$R(B")
("$(7"0#C(B" . "$(7$S(B")
("$(7"2#C(B" . "$(7$U(B")
("$(7"5#C(B" . "$(7$V(B")
("$(7"7#C(B" . "$(7$X(B")
("$(7"9#C(B" . "$(7$Y(B")
("$(7"G#C(B" . "$(7$[(B")
("$(7"H#C(B" . "$(7$\(B")
("$(7"(#C(B" . "$(7$](B")
("$(7"!#D(B" . "$(7$`(B")
("$(7"##D(B" . "$(7$a(B")
("$(7"7#D(B" . "$(7$b(B")
("$(7"@#D(B" . "$(7$c(B")
("$(7"C#D(B" . "$(7$d(B")
("$(7"G#D(B" . "$(7$e(B")
("$(7"C#!(B" . "$(7%!(B")
("$(7"C##(B" . "$(7%"(B")
("$(7"C#((B" . "$(7%$(B")
("$(7"C#0(B" . "$(7%&(B")
("$(7"C#2(B" . "$(7%'(B")
("$(7"C#4(B" . "$(7%((B")
("$(7"C#7(B" . "$(7%)(B")
("$(7"C#9(B" . "$(7%*(B")
("$(7"D#!(B" . "$(7%@(B")
("$(7"D##(B" . "$(7%A(B")
("$(7"D#4(B" . "$(7!!(B") ; dummy 0x2121 added 2000/06/08 for transition l -> lng
("$(7"D#&(B" . "$(7%C(B")
("$(7"D#((B" . "$(7%D(B")
("$(7"D#0(B" . "$(7%E(B")
("$(7"D#2(B" . "$(7%F(B")
("$(7"D#5(B" . "$(7%G(B")
("$(7"D#7(B" . "$(7%H(B")
("$(7"D#H(B" . "$(7%I(B")
("$(7"G#!(B" . "$(7%P(B")
("$(7"G##(B" . "$(7%Q(B")
("$(7"G#0(B" . "$(7%T(B")
("$(7"G#2(B" . "$(7%U(B")
("$(7"G#4(B" . "$(7%V(B")
("$(7"G#5(B" . "$(7%W(B")
("$(7"G#7(B" . "$(7%X(B")
("$(7"G#9(B" . "$(7%Y(B")))
(defconst tibetan-obsolete-glyphs
`(("$(7!=(B" . "$(8!=(B") ("$(7!?(B" . "$(8!?(B")
("$(7!@(B" . "$(8!@(B")
("$(7!A(B" . "$(8!A(B")
("$(7"`(B" . "$(8"`(B")
("$(7!;(B" . "$(8!;(B")
("$(7!D(B" . "$(8!D(B")
("$(7!>(B $(7!>(B" . ,(compose-string "$(7!>(B $(7!>(B" 0 3 [?$(7!>(B (Br . Bl) ? (Br . Bl) ?$(7!>(B]))
("$(7!4!5!5(B" . ,(compose-string
"$(7#R#S#S#S(B" 0 4
[?$(7#R(B (Br . Bl) ?$(7#S(B (Br . Bl) ?$(7#S(B (Br . Bl) ?$(7#S(B]))
("$(7!4!5(B" . ,(compose-string "$(7#R#S#S(B" 0 3 [?$(7#R(B (Br . Bl) ?$(7#S(B (Br . Bl) ?$(7#S(B]))
("$(7!6(B" . ,(compose-string "$(7#R#S!I(B" 0 3 [?$(7#R(B (Br . Bl) ?$(7#S(B (br . tr) ?$(7!I(B]))
("$(7!4(B" . ,(compose-string "$(7#R#S(B" 0 2 [?$(7#R(B (Br . Bl) ?$(7#S(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
(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
(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)
(provide 'tibetan)