1 ;;; ind-util.el --- Transliteration and Misc. Tools for Indian Languages -*- coding: iso-2022-7bit; -*-
3 ;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4 ;; Free Software Foundation, Inc.
6 ;; Maintainer: KAWABATA, Taichi <kawabata@m17n.org>
7 ;; Keywords: multilingual, Indian, Devanagari
9 ;; This file is part of GNU Emacs.
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
12 ;; it under the terms of the GNU General Public License as published by
13 ;; the Free Software Foundation, either version 3 of the License, or
14 ;; (at your option) any later version.
16 ;; GNU Emacs is distributed in the hope that it will be useful,
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 ;; GNU General Public License for more details.
21 ;; You should have received a copy of the GNU General Public License
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
26 ;; This file provides conversion between UCS and various
27 ;; transliteration schemes, such as ITRANS, kyoto-harvard and aiba
28 ;; methods. It also provides conversion between IS 13194 and UCS.
29 ;; Finally, this program provides the compatibility support with
30 ;; old implementation of Devanagari script.
36 ;; The followings provide the various transliteration schemes (such as
37 ;; ITRANS, kyoto-harvard, and Aiba) of Indian scripts. They are also
38 ;; used in quail/indian.el for typing Indian script in Emacs.
42 (defun indian-regexp-of-hashtbl-keys (hashtbl)
43 "Returns the regular expression of hashtable keys."
45 (maphash (lambda (key val
) (push key keys
)) hashtbl
)
48 (defvar indian-dev-base-table
51 (?
\e$
,15E
\e(B nil
) (?
\e$
,15F
\e(B ?
\e$
,15~
\e(B) (?
\e$
,15G
\e(B ?
\e$
,15\x7f\e(B) (?
\e$
,15H
\e(B ?
\e$
,16 \e(B) (?
\e$
,15I
\e(B ?
\e$
,16!\e(B) (?
\e$
,15J
\e(B ?
\e$
,16"\e(B)
52 (?\e$,15K\e(B ?\e$,16#\e(B) (?\e$,15L\e(B ?\e$,16B\e(B) (?\e$,15M\e(B ?\e$,16%\e(B) (?\e$,15N\e(B ?\e$,16&\e(B) (?\e$,15O\e(B ?\e$,16'\e(B) (?\e$,15P\e(B ?\e$,16(\e(B)
53 (?\e$,15Q\e(B ?\e$,16)\e(B) (?\e$,15R\e(B ?\e$,16*\e(B) (?\e$,15S\e(B ?\e$,16+\e(B) (?\e$,15T\e(B ?\e$,16,\e(B) (?\e$,16@\e(B ?\e$,16$\e(B) (?\e$,16A\e(B ?\e$,16C\e(B))
54 (;; CONSONANTS (currently 42, including special cases)
55 ?\e$,15U\e(B ?\e$,15V\e(B ?\e$,15W\e(B ?\e$,15X\e(B ?\e$,15Y\e(B ;; GUTTRULS
56 ?\e$,15Z\e(B ?\e$,15[\e(B ?\e$,15\\e(B ?\e$,15]\e(B ?\e$,15^\e(B ;; PALATALS
57 ?\e$,15_\e(B ?\e$,15`\e(B ?\e$,15a\e(B ?\e$,15b\e(B ?\e$,15c\e(B ;; CEREBRALS
58 ?\e$,15d\e(B ?\e$,15e\e(B ?\e$,15f\e(B ?\e$,15g\e(B ?\e$,15h\e(B ?\e$,15i\e(B ;; DENTALS
59 ?\e$,15j\e(B ?\e$,15k\e(B ?\e$,15l\e(B ?\e$,15m\e(B ?\e$,15n\e(B ;; LABIALS
60 ?\e$,15o\e(B ?\e$,15p\e(B ?\e$,15q\e(B ?\e$,15r\e(B ?\e$,15s\e(B ?\e$,15t\e(B ?\e$,15u\e(B ;; SEMIVOWELS
61 ?\e$,15v\e(B ?\e$,15w\e(B ?\e$,15x\e(B ?\e$,15y\e(B ;; SIBILANTS
62 ?\e$,168\e(B ?\e$,169\e(B ?\e$,16:\e(B ?\e$,16;\e(B ?\e$,16<\e(B ?\e$,16=\e(B ?\e$,16>\e(B ?\e$,16?\e(B ;; NUKTAS
63 "\e$
,15\
6-
5^
\e(B" "\e$
,15U6-
5w
\e(B")
65 ?\e$,15A\e(B ?\e$,15B\e(B ?\e$,15C\e(B ?\e$,15}\e(B ?\e$,16-\e(B ?\e$,160\e(B ?\e$,16D\e(B)
67 ?\e$,16F\e(B ?\e$,16G\e(B ?\e$,16H\e(B ?\e$,16I\e(B ?\e$,16J\e(B ?\e$,16K\e(B ?\e$,16L\e(B ?\e$,16M\e(B ?\e$,16N\e(B ?\e$,16O\e(B)
68 (;; Inscript-extra (4) (#, $, ^, *, ])
69 "\e$
,16-
5p
\e(B" "\e$
,15p6-
\e(B" "\e$
,15d6-5p
\e(B" "\e$
,15v6-5p
\e(B" "\e$
,15|
\e(B")))
71 ;; Punjabi is also known as Gurmukhi.
72 (defvar indian-pnj-base-table
75 (?\e$,18%\e(B nil) (?\e$,18&\e(B ?\e$,18^\e(B) (?\e$,18'\e(B ?\e$,18_\e(B) (?\e$,18(\e(B ?\e$,18`\e(B) (?\e$,18)\e(B ?\e$,18a\e(B) (?\e$,18*\e(B ?\e$,18b\e(B)
76 nil nil nil nil (?\e$,18/\e(B ?\e$,18g\e(B) (?\e$,180\e(B ?\e$,18h\e(B)
77 nil nil (?\e$,183\e(B ?\e$,18k\e(B) (?\e$,184\e(B ?\e$,18l\e(B) nil nil)
79 ?\e$,185\e(B ?\e$,186\e(B ?\e$,187\e(B ?\e$,188\e(B ?\e$,189\e(B ;; GUTTRULS
80 ?\e$,18:\e(B ?\e$,18;\e(B ?\e$,18<\e(B ?\e$,18=\e(B ?\e$,18>\e(B ;; PALATALS
81 ?\e$,18?\e(B ?\e$,18@\e(B ?\e$,18A\e(B ?\e$,18B\e(B ?\e$,18C\e(B ;; CEREBRALS
82 ?\e$,18D\e(B ?\e$,18E\e(B ?\e$,18F\e(B ?\e$,18G\e(B ?\e$,18H\e(B nil ;; DENTALS
83 ?\e$,18J\e(B ?\e$,18K\e(B ?\e$,18L\e(B ?\e$,18M\e(B ?\e$,18N\e(B ;; LABIALS
84 ?\e$,18O\e(B ?\e$,18P\e(B nil ?\e$,18R\e(B ?\e$,18S\e(B nil ?\e$,18U\e(B ;; SEMIVOWELS
85 ?\e$,18V\e(B nil ?\e$,18X\e(B ?\e$,18Y\e(B ;; SIBILANTS
86 nil ?\e$,18y\e(B ?\e$,18z\e(B ?\e$,18{\e(B ?\e$,18|\e(B nil ?\e$,18~\e(B nil ;; NUKTAS
87 "\e$
,18<8m8
>\e(B" nil)
89 nil ?\e$,18"\e(B nil nil ?
\e$
,18m
\e(B nil nil
) ;; ek onkar, etc.
91 ?
\e$
,19&\e(B ?
\e$
,19'\e(B ?
\e$
,19(\e(B ?
\e$
,19)\e(B ?
\e$
,19*\e(B ?
\e$
,19+\e(B ?
\e$
,19,\e(B ?
\e$
,19-
\e(B ?
\e$
,19.
\e(B ?
\e$
,19/\e(B)
92 (;; Inscript-extra (4) (#, $, ^, *, ])
93 "\e$,18m8P\e(B" "\e$,18P8m\e(B" "\e$,18D8m8P\e(B" "\e$,18V8m8P\e(B" "\e$,18\\e(B")))
95 (defvar indian-gjr-base-table
98 (?
\e$
,19E
\e(B nil
) (?
\e$
,19F
\e(B ?
\e$
,19~
\e(B) (?
\e$
,19G
\e(B ?
\e$
,19\x7f\e(B) (?
\e$
,19H
\e(B ?
\e$
,1: \e(B) (?
\e$
,19I
\e(B ?
\e$
,1:!\e(B) (?
\e$
,19J
\e(B ?
\e$
,1:"\e(B)
99 (?\e$,19K\e(B ?\e$,1:#\e(B) nil (?\e$,19M\e(B ?\e$,1:%\e(B) nil (?\e$,19O\e(B ?\e$,1:'\e(B) (?\e$,19P\e(B ?\e$,1:(\e(B)
100 (?\e$,19Q\e(B ?\e$,1:)\e(B) nil (?\e$,19S\e(B ?\e$,1:+\e(B) (?\e$,19T\e(B ?\e$,1:,\e(B) (?\e$,1:@\e(B ?\e$,1:$\e(B) nil)
102 ?\e$,19U\e(B ?\e$,19V\e(B ?\e$,19W\e(B ?\e$,19X\e(B ?\e$,19Y\e(B ;; GUTTRULS
103 ?\e$,19Z\e(B ?\e$,19[\e(B ?\e$,19\\e(B ?\e$,19]\e(B ?\e$,19^\e(B ;; PALATALS
104 ?\e$,19_\e(B ?\e$,19`\e(B ?\e$,19a\e(B ?\e$,19b\e(B ?\e$,19c\e(B ;; CEREBRALS
105 ?\e$,19d\e(B ?\e$,19e\e(B ?\e$,19f\e(B ?\e$,19g\e(B ?\e$,19h\e(B nil ;; DENTALS
106 ?\e$,19j\e(B ?\e$,19k\e(B ?\e$,19l\e(B ?\e$,19m\e(B ?\e$,19n\e(B ;; LABIALS
107 ?\e$,19o\e(B ?\e$,19p\e(B nil ?\e$,19r\e(B ?\e$,19s\e(B nil ?\e$,19u\e(B ;; SEMIVOWELS
108 ?\e$,19v\e(B ?\e$,19w\e(B ?\e$,19x\e(B ?\e$,19y\e(B ;; SIBILANTS
109 nil nil nil nil nil nil nil nil ;; NUKTAS
110 "\e$
,19\
:-
9^
\e(B" "\e$
,19U:-
9w
\e(B")
112 ?\e$,19A\e(B ?\e$,19B\e(B ?\e$,19C\e(B ?\e$,19}\e(B ?\e$,1:-\e(B ?\e$,1:0\e(B nil)
114 ?\e$,1:F\e(B ?\e$,1:G\e(B ?\e$,1:H\e(B ?\e$,1:I\e(B ?\e$,1:J\e(B ?\e$,1:K\e(B ?\e$,1:L\e(B ?\e$,1:M\e(B ?\e$,1:N\e(B ?\e$,1:O\e(B)
115 (;; Inscript-extra (4) (#, $, ^, *, ])
116 "\e$
,1:-
9p
\e(B" "\e$
,19p
:-
\e(B" "\e$
,19d
:-
9p
\e(B" "\e$
,19v
:-
9p
\e(B" "\e$
,19|
\e(B")))
118 (defvar indian-ori-base-table
121 (?\e$,1:e\e(B nil) (?\e$,1:f\e(B ?\e$,1;>\e(B) (?\e$,1:g\e(B ?\e$,1;?\e(B) (?\e$,1:h\e(B ?\e$,1;@\e(B) (?\e$,1:i\e(B ?\e$,1;A\e(B) (?\e$,1:j\e(B ?\e$,1;B\e(B)
122 (?\e$,1:k\e(B ?\e$,1;C\e(B) (?\e$,1:l\e(B nil) nil nil (?\e$,1:o\e(B ?\e$,1;G\e(B) (?\e$,1:p\e(B ?\e$,1;H\e(B)
123 nil nil (?\e$,1:s\e(B ?\e$,1;K\e(B) (?\e$,1:t\e(B ?\e$,1;L\e(B) (?\e$,1;`\e(B nil) (?\e$,1;a\e(B nil))
125 ?\e$,1:u\e(B ?\e$,1:v\e(B ?\e$,1:w\e(B ?\e$,1:x\e(B ?\e$,1:y\e(B ;; GUTTRULS
126 ?\e$,1:z\e(B ?\e$,1:{\e(B ?\e$,1:|\e(B ?\e$,1:}\e(B ?\e$,1:~\e(B ;; PALATALS
127 ?\e$,1:\x7f\e(B ?\e$,1; \e(B ?\e$,1;!\e(B ?\e$,1;"\e(B ?
\e$
,1;#\e(B ;; CEREBRALS
128 ?
\e$
,1;$\e(B ?\e$,1;%\e(B ?\e$,1;&\e(B ?\e$,1;'\e(B ?\e$,1;(\e(B nil ;; DENTALS
129 ?
\e$
,1;*\e(B ?\e$,1;+\e(B ?\e$,1;,\e(B ?\e$,1;-\e(B ?\e$,1;.\e(B ;; LABIALS
130 ?
\e$
,1;/\e(B ?\e$,1;0\e(B nil ?\e$,1;2\e(B ?\e$,1;3\e(B nil nil ;; SEMIVOWELS
131 ?
\e$
,1;6\e(B ?\e$,1;7\e(B ?\e$,1;8\e(B ?\e$,1;9\e(B ;; SIBILANTS
132 nil nil nil nil ?
\e$
,1;\\e(B ?\e$,1;]\e(B nil ?\e$,1;_\e(B ;; NUKTAS
133 "\e$,1:|;M:~\e(B" "\e$,1:u;M;7\e(B")
135 ?
\e$
,1:a
\e(B ?
\e$
,1:b
\e(B ?
\e$
,1:c
\e(B ?
\e$
,1;=\e(B ?\e$,1;M\e(B nil nil)
137 ?
\e$
,1;f\e(B ?\e$,1;g\e(B ?\e$,1;h\e(B ?\e$,1;i\e(B ?\e$,1;j\e(B ?\e$,1;k\e(B ?\e$,1;l\e(B ?\e$,1;m\e(B ?\e$,1;n\e(B ?\e$,1;o\e(B)
138 (;; Inscript-extra (4) (#, $, ^, *, ])
139 "\e$,1;M;0\e(B" "\e$,1;0;M\e(B" "\e$,1;$;M;0\e(B" "\e$,1;6;M;0\e(B" "\e$,1;<\e(B")))
141 (defvar indian-bng-base-table
144 (?
\e$
,16e
\e(B nil
) (?
\e$
,16f
\e(B ?
\e$
,17>\e(B) (?
\e$
,16g
\e(B ?
\e$
,17?
\e(B) (?
\e$
,16h
\e(B ?
\e$
,17@\e(B) (?
\e$
,16i
\e(B ?
\e$
,17A
\e(B) (?
\e$
,16j
\e(B ?
\e$
,17B
\e(B)
145 (?
\e$
,16k
\e(B ?
\e$
,17C
\e(B) (?
\e$
,16l\e(B ?
\e$
,17b
\e(B) nil nil
(?
\e$
,16o
\e(B ?
\e$
,17G
\e(B) (?
\e$
,16p
\e(B ?
\e$
,17H
\e(B)
146 nil nil
(?
\e$
,16s
\e(B ?
\e$
,17K
\e(B) (?
\e$
,16t
\e(B ?
\e$
,17L\e(B) (?
\e$
,17`\e(B ?
\e$
,17D
\e(B) (?
\e$
,17a
\e(B ?
\e$
,17c
\e(B))
148 ?
\e$
,16u\e(B ?
\e$
,16v
\e(B ?
\e$
,16w
\e(B ?
\e$
,16x
\e(B ?
\e$
,16y
\e(B ;; GUTTRULS
149 ?
\e$
,16z
\e(B ?
\e$
,16{\e(B ?
\e$
,16|
\e(B ?
\e$
,16}\e(B ?
\e$
,16~
\e(B ;; PALATALS
150 ?
\e$
,16\x7f\e(B ?
\e$
,17 \e(B ?
\e$
,17!\e(B ?
\e$
,17"\e(B ?\e$,17#\e(B ;; CEREBRALS
151 ?\e$,17$\e(B ?\e$,17%\e(B ?\e$,17&\e(B ?\e$,17'\e(B ?\e$,17(\e(B nil ;; DENTALS
152 ?\e$,17*\e(B ?\e$,17+\e(B ?\e$,17,\e(B ?\e$,17-\e(B ?\e$,17.\e(B ;; LABIALS
153 ?\e$,17/\e(B ?\e$,170\e(B nil ?\e$,172\e(B nil nil nil ;; SEMIVOWELS
154 ?\e$,176\e(B ?\e$,177\e(B ?\e$,178\e(B ?\e$,179\e(B ;; SIBILANTS
155 nil nil nil nil ?\e$,17\\e(B ?\e$,17]\e(B nil ?\e$,17_\e(B ;; NUKTAS
156 "\e$
,16|
7M6~
\e(B" "\e$
,16u7M
77\e(B")
158 ?\e$,16a\e(B ?\e$,16b\e(B ?\e$,16c\e(B nil ?\e$,17M\e(B nil nil)
160 ?\e$,17f\e(B ?\e$,17g\e(B ?\e$,17h\e(B ?\e$,17i\e(B ?\e$,17j\e(B ?\e$,17k\e(B ?\e$,17l\e(B ?\e$,17m\e(B ?\e$,17n\e(B ?\e$,17o\e(B)
161 (;; Inscript-extra (4) (#, $, ^, *, ])
162 "\e$
,17M70
\e(B" "\e$
,1707M
\e(B" "\e$
,17$
7M70
\e(B" "\e$
,1767M70
\e(B" "\e$
,17<\e(B")))
164 (defvar indian-asm-base-table
167 (?\e$,16e\e(B nil) (?\e$,16f\e(B ?\e$,17>\e(B) (?\e$,16g\e(B ?\e$,17?\e(B) (?\e$,16h\e(B ?\e$,17@\e(B) (?\e$,16i\e(B ?\e$,17A\e(B) (?\e$,16j\e(B ?\e$,17B\e(B)
168 (?\e$,16k\e(B ?\e$,17C\e(B) (?\e$,16l\e(B ?\e$,17b\e(B) nil nil (?\e$,16o\e(B ?\e$,17G\e(B) (?\e$,16p\e(B ?\e$,17H\e(B)
169 nil nil (?\e$,16s\e(B ?\e$,17K\e(B) (?\e$,16t\e(B ?\e$,17L\e(B) (?\e$,17`\e(B ?\e$,17D\e(B) (?\e$,17a\e(B ?\e$,17c\e(B))
171 ?\e$,16u\e(B ?\e$,16v\e(B ?\e$,16w\e(B ?\e$,16x\e(B ?\e$,16y\e(B ;; GUTTRULS
172 ?\e$,16z\e(B ?\e$,16{\e(B ?\e$,16|\e(B ?\e$,16}\e(B ?\e$,16~\e(B ;; PALATALS
173 ?\e$,16\x7f\e(B ?\e$,17 \e(B ?\e$,17!\e(B ?\e$,17"\e(B ?
\e$
,17#\e(B ;; CEREBRALS
174 ?
\e$
,17$
\e(B ?
\e$
,17%
\e(B ?
\e$
,17&\e(B ?
\e$
,17'\e(B ?
\e$
,17(\e(B nil
;; DENTALS
175 ?
\e$
,17*\e(B ?
\e$
,17+\e(B ?
\e$
,17,\e(B ?
\e$
,17-
\e(B ?
\e$
,17.
\e(B ;; LABIALS
176 ?
\e$
,17/\e(B ?
\e$
,17p
\e(B nil ?
\e$
,172\e(B nil nil ?
\e$
,17q
\e(B ;; SEMIVOWELS
177 ?
\e$
,176\e(B ?
\e$
,177\e(B ?
\e$
,178\e(B ?
\e$
,179\e(B ;; SIBILANTS
178 nil nil nil nil ?
\e$
,17\
\e(B ?
\e$
,17]\e(B nil ?
\e$
,17_
\e(B ;; NUKTAS
179 "\e$,16|7M6~\e(B" "\e$,16u7M77\e(B")
181 ?
\e$
,16a
\e(B ?
\e$
,16b
\e(B ?
\e$
,16c
\e(B nil ?
\e$
,17M
\e(B nil nil
)
183 ?
\e$
,17f
\e(B ?
\e$
,17g
\e(B ?
\e$
,17h
\e(B ?
\e$
,17i
\e(B ?
\e$
,17j
\e(B ?
\e$
,17k
\e(B ?
\e$
,17l\e(B ?
\e$
,17m
\e(B ?
\e$
,17n
\e(B ?
\e$
,17o
\e(B)
184 (;; Inscript-extra (4) (#, $, ^, *, ])
185 "\e$,17M7p\e(B" "\e$,17p7M\e(B" "\e$,17$7M7p\e(B" "\e$,1767M7p\e(B" "\e$,17<\e(B")))
187 (defvar indian-tlg-base-table
190 (?
\e$
,1=E
\e(B nil
) (?
\e$
,1=F
\e(B ?
\e$
,1=~
\e(B) (?
\e$
,1=G
\e(B ?
\e$
,1=\x7f\e(B) (?
\e$
,1=H
\e(B ?
\e$
,1> \e(B) (?
\e$
,1=I
\e(B ?
\e$
,1>!\e(B) (?
\e$
,1=J
\e(B ?
\e$
,1>"\e(B)
191 (?\e$,1=K\e(B ?\e$,1>#\e(B) (?\e$,1=L\e(B nil) nil (?\e$,1=O\e(B ?\e$,1>'\e(B) (?\e$,1=N\e(B ?\e$,1>&\e(B) (?\e$,1=P\e(B ?\e$,1>(\e(B)
192 nil (?\e$,1=S\e(B ?\e$,1>+\e(B) (?\e$,1=R\e(B ?\e$,1>*\e(B) (?\e$,1=T\e(B ?\e$,1>,\e(B) (?\e$,1>@\e(B ?\e$,1>$\e(B) (?\e$,1>A\e(B nil))
194 ?\e$,1=U\e(B ?\e$,1=V\e(B ?\e$,1=W\e(B ?\e$,1=X\e(B ?\e$,1=Y\e(B ;; GUTTRULS
195 ?\e$,1=Z\e(B ?\e$,1=[\e(B ?\e$,1=\\e(B ?\e$,1=]\e(B ?\e$,1=^\e(B ;; PALATALS
196 ?\e$,1=_\e(B ?\e$,1=`\e(B ?\e$,1=a\e(B ?\e$,1=b\e(B ?\e$,1=c\e(B ;; CEREBRALS
197 ?\e$,1=d\e(B ?\e$,1=e\e(B ?\e$,1=f\e(B ?\e$,1=g\e(B ?\e$,1=h\e(B nil ;; DENTALS
198 ?\e$,1=j\e(B ?\e$,1=k\e(B ?\e$,1=l\e(B ?\e$,1=m\e(B ?\e$,1=n\e(B ;; LABIALS
199 ?\e$,1=o\e(B ?\e$,1=p\e(B ?\e$,1=q\e(B ?\e$,1=r\e(B ?\e$,1=s\e(B nil ?\e$,1=u\e(B ;; SEMIVOWELS
200 ?\e$,1=v\e(B ?\e$,1=w\e(B ?\e$,1=x\e(B ?\e$,1=y\e(B ;; SIBILANTS
201 nil nil nil nil nil nil nil nil ;; NUKTAS
202 "\e$
,1=\
>-
=^
\e(B" "\e$
,1=U
>-
=w
\e(B")
204 ?\e$,1=A\e(B ?\e$,1=B\e(B ?\e$,1=C\e(B nil ?\e$,1>-\e(B nil nil)
206 ?\e$,1>F\e(B ?\e$,1>G\e(B ?\e$,1>H\e(B ?\e$,1>I\e(B ?\e$,1>J\e(B ?\e$,1>K\e(B ?\e$,1>L\e(B ?\e$,1>M\e(B ?\e$,1>N\e(B ?\e$,1>O\e(B)
207 (;; Inscript-extra (4) (#, $, ^, *, ])
208 "\e$
,1>-
=p
\e(B" "\e$
,1=p
>-
\e(B" "\e$
,1=d
>-
=p
\e(B" "\e$
,1=v
>-
=p
\e(B" nil)))
210 (defvar indian-knd-base-table
213 (?\e$,1>e\e(B nil) (?\e$,1>f\e(B ?\e$,1?>\e(B) (?\e$,1>g\e(B ?\e$,1??\e(B) (?\e$,1>h\e(B ?\e$,1?@\e(B) (?\e$,1>i\e(B ?\e$,1?A\e(B) (?\e$,1>j\e(B ?\e$,1?B\e(B)
214 (?\e$,1>k\e(B ?\e$,1?C\e(B) (?\e$,1>l\e(B nil) nil (?\e$,1>o\e(B ?\e$,1?G\e(B) (?\e$,1>n\e(B ?\e$,1?F\e(B) (?\e$,1>p\e(B ?\e$,1?H\e(B)
215 nil (?\e$,1>s\e(B ?\e$,1?K\e(B) (?\e$,1>r\e(B ?\e$,1?J\e(B) (?\e$,1>t\e(B ?\e$,1?L\e(B) (?\e$,1?`\e(B ?\e$,1?D\e(B) (?\e$,1?a\e(B nil))
217 ?\e$,1>u\e(B ?\e$,1>v\e(B ?\e$,1>w\e(B ?\e$,1>x\e(B ?\e$,1>y\e(B ;; GUTTRULS
218 ?\e$,1>z\e(B ?\e$,1>{\e(B ?\e$,1>|\e(B ?\e$,1>}\e(B ?\e$,1>~\e(B ;; PALATALS
219 ?\e$,1>\x7f\e(B ?\e$,1? \e(B ?\e$,1?!\e(B ?\e$,1?"\e(B ?
\e$
,1?
#\e(B ;; CEREBRALS
220 ?
\e$
,1?$
\e(B ?
\e$
,1?%
\e(B ?
\e$
,1?
&\e(B ?
\e$
,1?
'\e(B ?
\e$
,1?
(\e(B nil
;; DENTALS
221 ?
\e$
,1?
*\e(B ?
\e$
,1?
+\e(B ?
\e$
,1?
,\e(B ?
\e$
,1?-
\e(B ?
\e$
,1?.
\e(B ;; LABIALS
222 ?
\e$
,1?
/\e(B ?
\e$
,1?
0\e(B ?
\e$
,1?
1\e(B ?
\e$
,1?
2\e(B ?
\e$
,1?
3\e(B nil ?
\e$
,1?
5\e(B ;; SEMIVOWELS
223 ?
\e$
,1?
6\e(B ?
\e$
,1?
7\e(B ?
\e$
,1?
8\e(B ?
\e$
,1?
9\e(B ;; SIBILANTS
224 nil nil nil nil nil nil ?
\e$
,1?^
\e(B nil
;; NUKTAS
225 "\e$,1>|?M>~\e(B" "\e$,1>u?M?7\e(B")
227 nil ?
\e$
,1>b
\e(B ?
\e$
,1>c
\e(B nil ?
\e$
,1?M
\e(B nil nil
)
229 ?
\e$
,1?f
\e(B ?
\e$
,1?g
\e(B ?
\e$
,1?h
\e(B ?
\e$
,1?i
\e(B ?
\e$
,1?j
\e(B ?
\e$
,1?k
\e(B ?
\e$
,1?l
\e(B ?
\e$
,1?m
\e(B ?
\e$
,1?n
\e(B ?
\e$
,1?o
\e(B)
230 (;; Inscript-extra (4) (#, $, ^, *, ])
231 "\e$,1?M?0\e(B" "\e$,1?0?M\e(B" "\e$,1?$?M?0\e(B" "\e$,1?6?M?0\e(B" nil
)))
233 (defvar indian-mlm-base-table
236 (?
\e$
,1@%
\e(B nil
) (?
\e$
,1@&\e(B ?
\e$
,1@^
\e(B) (?
\e$
,1@'\e(B ?
\e$
,1@_
\e(B) (?
\e$
,1@(\e(B ?
\e$
,1@`\e(B) (?
\e$
,1@)\e(B ?
\e$
,1@a
\e(B) (?
\e$
,1@*\e(B ?
\e$
,1@b
\e(B)
237 (?
\e$
,1@+\e(B ?
\e$
,1@c
\e(B) (?
\e$
,1@,\e(B nil
) nil
(?
\e$
,1@/\e(B ?
\e$
,1@g
\e(B) (?
\e$
,1@.
\e(B ?
\e$
,1@f
\e(B) (?
\e$
,1@0\e(B ?
\e$
,1@h
\e(B)
238 nil
(?
\e$
,1@3\e(B ?
\e$
,1@k
\e(B) (?
\e$
,1@2\e(B ?
\e$
,1@j
\e(B) (?
\e$
,1@4\e(B ?
\e$
,1@l
\e(B) nil nil
)
240 ?
\e$
,1@5\e(B ?
\e$
,1@6\e(B ?
\e$
,1@7\e(B ?
\e$
,1@8\e(B ?
\e$
,1@9\e(B ;; GUTTRULS
241 ?
\e$
,1@:\e(B ?
\e$
,1@;\e(B ?\e$,1@<\e(B ?\e$,1@=\e(B ?\e$,1@>\e(B ;; PALATALS
242 ?
\e$
,1@?
\e(B ?
\e$
,1@@\e(B ?
\e$
,1@A
\e(B ?
\e$
,1@B
\e(B ?
\e$
,1@C
\e(B ;; CEREBRALS
243 ?
\e$
,1@D
\e(B ?
\e$
,1@E
\e(B ?
\e$
,1@F
\e(B ?
\e$
,1@G
\e(B ?
\e$
,1@H
\e(B nil
;; DENTALS
244 ?
\e$
,1@J
\e(B ?
\e$
,1@K
\e(B ?
\e$
,1@L
\e(B ?
\e$
,1@M
\e(B ?
\e$
,1@N
\e(B ;; LABIALS
245 ?
\e$
,1@O
\e(B ?
\e$
,1@P
\e(B ?
\e$
,1@Q
\e(B ?
\e$
,1@R
\e(B ?
\e$
,1@S
\e(B ?
\e$
,1@T
\e(B ?
\e$
,1@U
\e(B ;; SEMIVOWELS
246 ?
\e$
,1@V
\e(B ?
\e$
,1@W
\e(B ?
\e$
,1@X
\e(B ?
\e$
,1@Y
\e(B ;; SIBILANTS
247 nil nil nil nil nil nil nil nil
;; NUKTAS
248 "\e$,1@<@m@>\e(B" "\e$,1@5@m@W\e(B")
250 nil ?
\e$
,1@"\e(B ?\e$,1@#\e(B nil ?\e$,1@m\e(B nil nil)
252 ?\e$,1A&\e(B ?\e$,1A'\e(B ?\e$,1A(\e(B ?\e$,1A)\e(B ?\e$,1A*\e(B ?\e$,1A+\e(B ?\e$,1A,\e(B ?\e$,1A-\e(B ?\e$,1A.\e(B ?\e$,1A/\e(B)
253 (;; Inscript-extra (4) (#, $, ^, *, ])
254 "\e$
,1@m
@P
\e(B" "\e$
,1@P
@m
\e(B" "\e$
,1@D
@m
@P
\e(B" "\e$
,1@V
@m
@P
\e(B" nil)))
256 (defvar indian-tml-base-table
259 (?\e$,1<%\e(B nil) (?\e$,1<&\e(B ?\e$,1<^\e(B) (?\e$,1<'\e(B ?\e$,1<_\e(B) (?\e$,1<(\e(B ?\e$,1<`\e(B) (?\e$,1<)\e(B ?\e$,1<a\e(B) (?\e$,1<*\e(B ?\e$,1<b\e(B)
260 nil nil nil (?\e$,1</\e(B ?\e$,1<g\e(B) (?\e$,1<.\e(B ?\e$,1<f\e(B) (?\e$,1<0\e(B ?\e$,1<h\e(B)
261 nil (?\e$,1<3\e(B ?\e$,1<k\e(B) (?\e$,1<2\e(B ?\e$,1<j\e(B) (?\e$,1<4\e(B ?\e$,1<l\e(B) nil nil)
263 ?\e$,1<5\e(B nil nil nil ?\e$,1<9\e(B ;; GUTTRULS
264 ?\e$,1<:\e(B nil ?\e$,1<<\e(B nil ?\e$,1<>\e(B ;; PALATALS
265 ?\e$,1<?\e(B nil nil nil ?\e$,1<C\e(B ;; CEREBRALS
266 ?\e$,1<D\e(B nil nil nil ?\e$,1<H\e(B ?\e$,1<I\e(B ;; DENTALS
267 ?\e$,1<J\e(B nil nil nil ?\e$,1<N\e(B ;; LABIALS
268 ?\e$,1<O\e(B ?\e$,1<P\e(B ?\e$,1<Q\e(B ?\e$,1<R\e(B ?\e$,1<S\e(B ?\e$,1<T\e(B ?\e$,1<U\e(B ;; SEMIVOWELS
269 nil ?\e$,1<W\e(B ?\e$,1<X\e(B ?\e$,1<Y\e(B ;; SIBILANTS
270 nil nil nil nil nil nil nil nil ;; NUKTAS
271 "\e$
,1<<<m
<>\e(B" "\e$
,1<5<m
<W
\e(B")
273 nil ?\e$,1<"\e(B ?
\e$
,1<#\e(B nil ?
\e$
,1<m
\e(B nil nil
)
275 nil ?
\e$
,1='\e(B ?
\e$
,1=(\e(B ?
\e$
,1=)\e(B ?
\e$
,1=*\e(B ?
\e$
,1=+\e(B ?
\e$
,1=,\e(B ?
\e$
,1=-
\e(B ?
\e$
,1=.
\e(B ?
\e$
,1=/\e(B)
276 (;; Inscript-extra (4) (#, $, ^, *, ])
277 "\e$,1<m<P\e(B" "\e$,1<P<m\e(B" "\e$,1<D<m<P\e(B" nil nil
)))
279 (defvar indian-base-table-to-language-alist
280 '((indian-dev-base-table .
"Devanagari")
281 (indian-pnj-base-table .
"Punjabi")
282 (indian-ori-base-table .
"Oriya")
283 (indian-bng-base-table .
"Bengali")
284 (indian-asm-base-table .
"Assamese")
285 (indian-tlg-base-table .
"Telugu")
286 (indian-knd-base-table .
"Kannada")
287 (indian-mlm-base-table .
"Malayalam")
288 (indian-tml-base-table .
"Tamil")))
290 (defvar indian-itrans-v5-table
291 '(;; for encode/decode
293 "a" ("aa" "A") "i" ("ii" "I") "u" ("uu" "U")
294 ("RRi" "R^i") ("LLi" "L^i") (".c" "e.c") "E" "e" "ai"
295 "o.c" "O" "o" "au" ("RRI" "R^I") ("LLI" "L^I"))
297 "k" "kh" "g" "gh" ("~N" "N^")
298 "ch" ("Ch" "chh") "j" "jh" ("~n" "JN")
299 "T" "Th" "D" "Dh" "N"
300 "t" "th" "d" "dh" "n" "nh"
301 "p" "ph" "b" "bh" "m"
302 "y" "r" "rh" "l" ("L" "ld") nil
("v" "w")
303 "sh" ("Sh" "shh") "s" "h"
304 "q" "K" "G" ("J" "z") ".D" ".Dh" "f" ("Y" "yh")
307 ".N" (".n" "M") "H" ".a" ".h" ("AUM" "OM") "..")))
309 (defvar indian-kyoto-harvard-table
310 '(;; for encode/decode
312 "a" ("A" "aa") "i" ("I" "ii") "u" ("U" "uu")
313 "R" ("L" "lR") nil nil
"e" "ai"
314 nil nil
"o" "au" ("q" "RR" "Q") ("E" "LL" "lRR"))
316 "k" "kh" "g" "gh" "G"
317 "c" "ch" "j" "jh" "J"
318 "T" "Th" "D" "Dh" "N"
319 "t" "th" "d" "dh" "n" nil
320 "p" "ph" "b" "bh" "m"
321 "y" "r" nil
"l" "L" nil
"v"
322 ("z" "Z") "S" "s" "h"
323 nil nil nil nil nil nil nil nil
326 nil
"M" "H" "'" nil
"." nil
)))
328 (defvar indian-harvard-table
329 '(;; for encode/decode
331 "a" ("A" "aa") "i" ("I" "ii") "u" ("U" "uu")
332 "R" ("L" "lR") nil nil
"e" "ai"
333 nil nil
"o" "au" ("RR" "q" "Q") ("LL" "E" "lRR"))
335 "k" "kh" "g" "gh" "G"
336 "c" "ch" "j" "jh" "J"
337 "T" "Th" "D" "Dh" "N"
338 "t" "th" "d" "dh" "n" nil
339 "p" "ph" "b" "bh" "m"
340 "y" "r" nil
"l" "L" nil
"v"
341 ("z" "Z") "S" "s" "h"
342 nil nil nil nil nil nil nil nil
345 nil
"M" "H" "'" nil
"." nil
)))
347 (defvar indian-tokyo-table
348 '(;; for encode/decode
350 "a" ("A" "aa") "i" ("I" "ii") "u" ("U" "uu")
351 "R" ("L" "lR") nil nil
"e" "ai"
352 nil nil
"o" "au" ("Q" "RR" "q") ("E" "LL" "lRR"))
354 "k" "kh" "g" "gh" "G"
355 "c" "ch" "j" "jh" "J"
356 "T" "Th" "D" "Dh" "N"
357 "t" "th" "d" "dh" "n" nil
358 "p" "ph" "b" "bh" "m"
359 "y" "r" nil
"l" "L" nil
"v"
360 ("Z" "z") "S" "s" "h"
361 nil nil nil nil nil nil nil nil
364 nil
"M" "H" "'" nil
"." nil
)))
366 (defvar indian-aiba-table
367 '(;; for encode/decode
369 "a" "aa" "i" "ii" "u" "uu"
370 ".r" ".l" nil nil
"e" "ai"
371 nil nil
"o" "au" "~r" "~l")
373 "k" "kh" "g" "gh" "^n"
374 "c" "ch" "j" "jh" "~n"
375 ".t" ".th" ".d" ".dh" ".n"
376 "t" "th" "d" "dh" "n" nil
377 "p" "ph" "b" "bh" "m"
378 "y" "r" nil
"l" nil nil
"v"
380 nil nil nil nil nil nil nil nil
383 nil
".m" ".h" "'" nil
"." nil
)))
385 (defun combinatorial (head &rest tail
)
388 (mapcar (lambda (y) (mapcar (lambda (x) (cons x y
)) head
))
389 (apply 'combinatorial tail
)))
390 (mapcar 'list head
)))
392 (defun indian--puthash-char (char trans-char hashtbls
)
393 (let ((encode-hash (car hashtbls
)) ;; char -> trans
394 (decode-hash (cdr hashtbls
)) ;; trans -> char
396 ;; char -- nil / char / string (/ list of vowel & matra)
397 ;; trans-char -- nil / string / list of strings
398 (when (and char trans-char
)
399 (if (stringp trans-char
) (setq trans-char
(list trans-char
)))
400 (if (characterp char
) (setq char
(char-to-string char
)))
401 (puthash char
(car trans-char
) encode-hash
)
402 (dolist (trans trans-char
)
403 (puthash trans char decode-hash
)))))
405 (defun indian--map (f l1 l2
)
407 (funcall f
(pop l1
) (pop l2
))))
409 (defun indian--puthash-v (v trans-v hashtbls
)
412 (indian--puthash-char (car v
) trans-v hashtbls
))
415 (defun indian--puthash-c (c trans-c halant hashtbls
)
418 (if (characterp c
) (setq c
(char-to-string c
)))
419 (indian--puthash-char (concat c halant
) trans-c hashtbls
))
422 (defun indian--puthash-m (m trans-m hashtbls
)
425 (indian--puthash-char m trans-m hashtbls
))
428 (defun indian--puthash-cv (c trans-c v trans-v hashtbls
)
433 (when (and c trans-c v trans-v
)
434 (if (characterp c
) (setq c
(char-to-string c
)))
435 (setq v
(if (characterp (cadr v
)) (char-to-string (cadr v
)) ""))
436 (if (stringp trans-c
) (setq trans-c
(list trans-c
)))
437 (if (stringp trans-v
) (setq trans-v
(list trans-v
)))
438 (indian--puthash-char
440 (mapcar (lambda (x) (apply 'concat x
))
441 (combinatorial trans-c trans-v
))
446 (defun indian-make-hash (table trans-table
)
447 "Indian Transliteration Hash for decode/encode"
448 (let* ((encode-hash (make-hash-table :test
'equal
))
449 (decode-hash (make-hash-table :test
'equal
))
450 (hashtbls (cons encode-hash decode-hash
))
451 (vowels (elt table
0))
452 (consonants (elt table
1))
454 (digits (elt table
3))
455 (halant (char-to-string (elt misc
4)))
456 (trans-vowels (elt trans-table
0))
457 (trans-consonants (elt trans-table
1))
458 (trans-misc (elt trans-table
2))
459 (trans-digits '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")))
460 (indian--puthash-v vowels trans-vowels hashtbls
)
461 (indian--puthash-c consonants trans-consonants halant hashtbls
)
462 (indian--puthash-cv consonants trans-consonants
463 vowels trans-vowels hashtbls
)
464 (indian--puthash-m misc trans-misc hashtbls
)
465 (indian--puthash-m digits trans-digits hashtbls
)
468 (defvar indian-dev-itrans-v5-hash
469 (indian-make-hash indian-dev-base-table
470 indian-itrans-v5-table
))
471 (defvar indian-dev-kyoto-harvard-hash
472 (indian-make-hash indian-dev-base-table
473 indian-kyoto-harvard-table
))
474 (defvar indian-dev-aiba-hash
475 (indian-make-hash indian-dev-base-table
478 (defvar indian-pnj-itrans-v5-hash
479 (indian-make-hash indian-pnj-base-table
480 indian-itrans-v5-table
))
482 (defvar indian-gjr-itrans-v5-hash
483 (indian-make-hash indian-gjr-base-table
484 indian-itrans-v5-table
))
486 (defvar indian-ori-itrans-v5-hash
487 (indian-make-hash indian-ori-base-table
488 indian-itrans-v5-table
))
490 (defvar indian-bng-itrans-v5-hash
491 (indian-make-hash indian-bng-base-table
492 indian-itrans-v5-table
))
494 (defvar indian-asm-itrans-v5-hash
495 (indian-make-hash indian-asm-base-table
496 indian-itrans-v5-table
))
498 (defvar indian-tlg-itrans-v5-hash
499 (indian-make-hash indian-tlg-base-table
500 indian-itrans-v5-table
))
502 (defvar indian-knd-itrans-v5-hash
503 (indian-make-hash indian-knd-base-table
504 indian-itrans-v5-table
))
506 (defvar indian-mlm-itrans-v5-hash
507 (indian-make-hash indian-mlm-base-table
508 indian-itrans-v5-table
))
510 (defvar indian-tml-itrans-v5-hash
511 (indian-make-hash indian-tml-base-table
512 indian-itrans-v5-table
))
515 (defmacro indian-translate-region
(from to hashtable encode-p
)
518 (let ((regexp ,(indian-regexp-of-hashtbl-keys
519 (if encode-p
(car (eval hashtable
))
520 (cdr (eval hashtable
))))))
521 (narrow-to-region from to
)
522 (goto-char (point-min))
523 (while (re-search-forward regexp nil t
)
524 (let ((matchstr (gethash (match-string 0)
528 (if matchstr
(replace-match matchstr
))))))))
532 (defun indian-dev-itrans-v5-encode-region (from to
)
534 (indian-translate-region
535 from to indian-dev-itrans-v5-hash t
))
537 (defun indian-dev-itrans-v5-decode-region (from to
)
539 (indian-translate-region
540 from to indian-dev-itrans-v5-hash nil
))
542 (defun indian-dev-kyoto-harvard-encode-region (from to
)
544 (indian-translate-region
545 from to indian-dev-kyoto-harvard-hash t
))
547 (defun indian-dev-kyoto-harvard-decode-region (from to
)
549 (indian-translate-region
550 from to indian-dev-kyoto-harvard-hash nil
))
552 (defun indian-dev-aiba-encode-region (from to
)
554 (indian-translate-region
555 from to indian-dev-aiba-hash t
))
557 (defun indian-dev-aiba-decode-region (from to
)
559 (indian-translate-region
560 from to indian-dev-aiba-hash nil
))
565 ;;; IS 13194 utilities
567 ;; The followings provide conversion between IS 13194 (ISCII) and UCS.
570 ;;Unicode vs IS13194 ;; only Devanagari is supported now.
571 ((ucs-devanagari-to-is13194-alist
572 '((?
\x0900 .
"[U+0900]")
573 (?
\x0901 .
"\e(5!\e(B")
574 (?
\x0902 .
"\e(5"\e(B")
575 (?\x0903 . "\e(5#\e(B")
576 (?\x0904 . "[U
+0904]")
577 (?\x0905 . "\e(5$
\e(B")
578 (?\x0906 . "\e(5%
\e(B")
579 (?\x0907 . "\e(5&\e(B")
580 (?\x0908 . "\e(5'\e(B")
581 (?\x0909 . "\e(5(\e(B")
582 (?\x090a . "\e(5)\e(B")
583 (?\x090b . "\e(5*\e(B")
584 (?\x090c . "\e(5&i
\e(B")
585 (?\x090d . "\e(5.
\e(B")
586 (?\x090e . "\e(5+\e(B")
587 (?\x090f . "\e(5,\e(B")
588 (?\x0910 . "\e(5-\e(B")
589 (?\x0911 . "\e(52\e(B")
590 (?\x0912 . "\e(5/\e(B")
591 (?\x0913 . "\e(50\e(B")
592 (?\x0914 . "\e(51\e(B")
593 (?\x0915 . "\e(53\e(B")
594 (?\x0916 . "\e(54\e(B")
595 (?\x0917 . "\e(55\e(B")
596 (?\x0918 . "\e(56\e(B")
597 (?\x0919 . "\e(57\e(B")
598 (?\x091a . "\e(58\e(B")
599 (?\x091b . "\e(59\e(B")
600 (?\x091c . "\e(5:\e(B")
601 (?\x091d . "\e(5;\e(B")
602 (?
\x091e .
"\e(5<\e(B")
603 (?
\x091f .
"\e(5=\e(B")
604 (?
\x0920 .
"\e(5>\e(B")
605 (?
\x0921 .
"\e(5?\e(B")
606 (?
\x0922 .
"\e(5@\e(B")
607 (?
\x0923 .
"\e(5A\e(B")
608 (?
\x0924 .
"\e(5B\e(B")
609 (?
\x0925 .
"\e(5C\e(B")
610 (?
\x0926 .
"\e(5D\e(B")
611 (?
\x0927 .
"\e(5E\e(B")
612 (?
\x0928 .
"\e(5F\e(B")
613 (?
\x0929 .
"\e(5G\e(B")
614 (?
\x092a .
"\e(5H\e(B")
615 (?
\x092b .
"\e(5I\e(B")
616 (?
\x092c .
"\e(5J\e(B")
617 (?
\x092d .
"\e(5K\e(B")
618 (?
\x092e .
"\e(5L\e(B")
619 (?
\x092f .
"\e(5M\e(B")
620 (?
\x0930 .
"\e(5O\e(B")
621 (?
\x0931 .
"\e(5P\e(B")
622 (?
\x0932 .
"\e(5Q\e(B")
623 (?
\x0933 .
"\e(5R\e(B")
624 (?
\x0934 .
"\e(5S\e(B")
625 (?
\x0935 .
"\e(5T\e(B")
626 (?
\x0936 .
"\e(5U\e(B")
627 (?
\x0937 .
"\e(5V\e(B")
628 (?
\x0938 .
"\e(5W\e(B")
629 (?
\x0939 .
"\e(5X\e(B")
630 (?
\x093a .
"[U+093a]")
631 (?
\x093b .
"[U+093b]")
632 (?
\x093c .
"\e(5i\e(B")
633 (?
\x093d .
"\e(5ji\e(B")
634 (?
\x093e .
"\e(5Z\e(B")
635 (?
\x093f .
"\e(5[\e(B")
636 (?
\x0940 .
"\e(5\\e(B")
637 (?
\x0941 .
"\e(5]\e(B")
638 (?
\x0942 .
"\e(5^\e(B")
639 (?
\x0943 .
"\e(5_\e(B")
640 (?
\x0944 .
"\e(5_i\e(B")
641 (?
\x0945 .
"\e(5c\e(B")
642 (?
\x0946 .
"\e(5`\e(B")
643 (?
\x0947 .
"\e(5a\e(B")
644 (?
\x0948 .
"\e(5b\e(B")
645 (?
\x0949 .
"\e(5g\e(B")
646 (?
\x094a .
"\e(5d\e(B")
647 (?
\x094b .
"\e(5e\e(B")
648 (?
\x094c .
"\e(5f\e(B")
649 (?
\x094d .
"\e(5h\e(B")
650 (?
\x094e .
"[U+094e]")
651 (?
\x094f .
"[U+094f]")
652 (?
\x0950 .
"\e(5!i\e(B")
653 (?
\x0951 .
"\e(5p5\e(B")
654 (?
\x0952 .
"\e(5p8\e(B")
655 (?
\x0953 .
"[DEVANAGARI GRAVE ACCENT]")
656 (?
\x0954 .
"[DEVANAGARI ACUTE ACCENT]")
657 (?
\x0955 .
"[U+0955]")
658 (?
\x0956 .
"[U+0956]")
659 (?
\x0957 .
"[U+0957]")
660 (?
\x0958 .
"\e(53i\e(B")
661 (?
\x0959 .
"\e(54i\e(B")
662 (?
\x095a .
"\e(55i\e(B")
663 (?
\x095b .
"\e(5:i\e(B")
664 (?
\x095c .
"\e(5?i\e(B")
665 (?
\x095d .
"\e(5@i\e(B")
666 (?
\x095e .
"\e(5Ii\e(B")
667 (?
\x095f .
"\e(5N\e(B")
668 (?
\x0960 .
"\e(5*i\e(B")
669 (?
\x0961 .
"\e(5'i\e(B")
670 (?
\x0962 .
"\e(5[i\e(B")
671 (?
\x0963 .
"\e(5ei\e(B")
672 (?
\x0964 .
"\e(5j\e(B")
673 (?
\x0965 .
"\e(5jj\e(B")
674 (?
\x0966 .
"\e(5q\e(B")
675 (?
\x0967 .
"\e(5r\e(B")
676 (?
\x0968 .
"\e(5s\e(B")
677 (?
\x0969 .
"\e(5t\e(B")
678 (?
\x096a .
"\e(5u\e(B")
679 (?
\x096b .
"\e(5v\e(B")
680 (?
\x096c .
"\e(5w\e(B")
681 (?
\x096d .
"\e(5x\e(B")
682 (?
\x096e .
"\e(5y\e(B")
683 (?
\x096f .
"\e(5z\e(B")
684 (?
\x0970 .
"[U+0970]")
685 (?
\x0971 .
"[U+0971]")
686 (?
\x0972 .
"[U+0972]")
687 (?
\x0973 .
"[U+0973]")
688 (?
\x0974 .
"[U+0974]")
689 (?
\x0975 .
"[U+0975]")
690 (?
\x0976 .
"[U+0976]")
691 (?
\x0977 .
"[U+0977]")
692 (?
\x0978 .
"[U+0978]")
693 (?
\x0979 .
"[U+0979]")
694 (?
\x097a .
"[U+097a]")
695 (?
\x097b .
"[U+097b]")
696 (?
\x097c .
"[U+097c]")
697 (?
\x097d .
"[U+097d]")
698 (?
\x097e .
"[U+097e]")
699 (?
\x097f .
"[U+097f]")))
700 (ucs-bengali-to-is13194-alist nil
)
701 (ucs-assamese-to-is13194-alist nil
)
702 (ucs-gurmukhi-to-is13194-alist nil
)
703 (ucs-gujarati-to-is13194-alist nil
)
704 (ucs-oriya-to-is13194-alist nil
)
705 (ucs-tamil-to-is13194-alist nil
)
706 (ucs-telugu-to-is13194-alist nil
)
707 (ucs-malayalam-to-is13194-alist nil
)
708 (ucs-kannada-to-is13194-alist nil
))
709 (dolist (script '(devanagari bengali assamese gurmukhi gujarati
710 oriya tamil telugu malayalam kannada
))
711 (let ((hashtable (intern (concat "is13194-to-ucs-"
712 (symbol-name script
) "-hashtbl" )))
713 (regexp (intern (concat "is13194-to-ucs-"
714 (symbol-name script
) "-regexp"))))
715 (set hashtable
(make-hash-table :test
'equal
:size
128))
716 (dolist (x (eval (intern (concat "ucs-" (symbol-name script
)
717 "-to-is13194-alist"))))
718 (put-char-code-property (car x
) 'script script
)
719 (put-char-code-property (car x
) 'iscii
(cdr x
))
720 (puthash (cdr x
) (char-to-string (car x
)) (eval hashtable
)))
721 (set regexp
(indian-regexp-of-hashtbl-keys (eval hashtable
))))))
723 (defvar is13194-default-repertory
'devanagari
)
725 (defvar is13194-repertory-to-ucs-script
726 `((DEF ?
\x40 ,is13194-default-repertory
)
727 (RMN ?
\x41 ,is13194-default-repertory
)
728 (DEV ?
\x42 devanagari
)
735 (MLM ?
\x49 malayalam
)
737 (PNJ ?
\x4b gurmukhi
)))
739 ;; for guiding find-variable function.
740 (defvar is13194-to-ucs-devanagari-hashtbl nil
)
741 (defvar is13194-to-ucs-devanagari-regexp nil
)
742 (defvar is13194-to-ucs-bengali-hashtbl nil
)
743 (defvar is13194-to-ucs-bengali-regexp nil
)
744 (defvar is13194-to-ucs-assamese-hashtbl nil
)
745 (defvar is13194-to-ucs-assamese-regexp nil
)
746 (defvar is13194-to-ucs-gurmukhi-hashtbl nil
)
747 (defvar is13194-to-ucs-gurmukhi-regexp nil
)
748 (defvar is13194-to-ucs-gujarati-hashtbl nil
)
749 (defvar is13194-to-ucs-gujarati-regexp nil
)
750 (defvar is13194-to-ucs-oriya-hashtbl nil
)
751 (defvar is13194-to-ucs-oriya-regexp nil
)
752 (defvar is13194-to-ucs-tamil-hashtbl nil
)
753 (defvar is13194-to-ucs-tamil-regexp nil
)
754 (defvar is13194-to-ucs-telugu-hashtbl nil
)
755 (defvar is13194-to-ucs-telugu-regexp nil
)
756 (defvar is13194-to-ucs-malayalam-hashtbl nil
)
757 (defvar is13194-to-ucs-malayalam-regexp nil
)
758 (defvar is13194-to-ucs-kannada-hashtbl nil
)
759 (defvar is13194-to-ucs-kannada-regexp nil
)
761 (defvar ucs-to-is13194-regexp
762 ;; only Devanagari is supported now.
763 (concat "[" (char-to-string #x0900
)
764 "-" (char-to-string #x097f
) "]")
765 "Regexp that matches to conversion")
767 (defun ucs-to-iscii-region (from to
)
768 "Converts the indian UCS characters in the region to ISCII.
769 Returns new end position."
771 ;; only Devanagari is supported now.
774 (narrow-to-region from to
)
775 (goto-char (point-min))
776 (let* ((current-repertory is13194-default-repertory
))
777 (while (re-search-forward ucs-to-is13194-regexp nil t
)
779 (get-char-code-property (string-to-char (match-string 0))
783 (defun iscii-to-ucs-region (from to
)
784 "Converts the ISCII characters in the region to UCS.
785 Returns new end position."
787 ;; only Devanagari is supported now.
790 (narrow-to-region from to
)
791 (goto-char (point-min))
792 (let* ((current-repertory is13194-default-repertory
)
794 (intern (concat "is13194-to-ucs-"
795 (symbol-name current-repertory
) "-hashtbl")))
797 (intern (concat "is13194-to-ucs-"
798 (symbol-name current-repertory
) "-regexp")))
799 (re (eval current-regexp
))
800 (hash (eval current-hashtable
)))
801 (while (re-search-forward re nil t
)
802 (replace-match (gethash (match-string 0) hash
""))))
806 (defun indian-compose-region (from to
)
807 "Compose the region according to `composition-function-table'."
811 (let ((pos from
) newpos func
(max to
))
812 (narrow-to-region from to
)
814 (setq func
(aref composition-function-table
(char-after pos
)))
816 (setq newpos
(funcall func pos nil
)
817 pos
(if (and (integerp newpos
) (> newpos pos
))
819 (setq pos
(1+ pos
))))))))
822 (defun indian-compose-string (string)
825 (indian-compose-region (point-min) (point-max))
829 (defun in-is13194-post-read-conversion (len)
830 (let ((pos (point)) endpos
)
831 (setq endpos
(iscii-to-ucs-region pos
(+ pos len
)))
835 (defun in-is13194-pre-write-conversion (from to
)
836 (let ((buf (current-buffer)))
837 (set-buffer (generate-new-buffer " *temp*"))
840 (insert-buffer-substring buf from to
))
841 (ucs-to-iscii-region (point-min) (point-max))
847 ;;; Backward Compatibility support programs
849 ;; The following provides the conversion from old-implementation of
850 ;; Emacs Devanagari script to UCS.
852 (defconst indian-2-colum-to-ucs
854 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
855 ;;2120 \e$(6!!!"!#!$!%!&!'!(!)!*!+!,!-!.!/\e(B
856 ("\e$(6!!\e(B" .
"\e$,15A\e(B")
857 ("\e$(6!"\e(B" . "\e$
,15B
\e(B")
858 ("\e$
(6!#\e(B" . "\e$
,15C
\e(B")
859 ("\e$
(6!$
\e(B" . "\e$
,15E
\e(B")
860 ("\e$
(6!%
\e(B" . "\e$
,15F
\e(B")
861 ("\e$
(6!&\e(B" . "\e$
,15G
\e(B")
862 ("\e$
(6!'\e(B" . "\e$
,15H
\e(B")
863 ("\e$
(6!(\e(B" . "\e$
,15I
\e(B")
864 ("\e$
(6!)\e(B" . "\e$
,15J
\e(B")
865 ("\e$
(6!*\e(B" . "\e$
,15K
\e(B")
866 ("\e$
(6!*"p\e(B" .
"\e$,15p6#\e(B")
867 ("\e$(6!+\e(B" .
"\e$,15N\e(B")
868 ("\e$(6!,\e(B" .
"\e$,15O\e(B")
869 ("\e$(6!-\e(B" .
"\e$,15P\e(B")
870 ("\e$(6!.\e(B" .
"\e$,15M\e(B")
871 ("\e$(6!/\e(B" .
"\e$,15R\e(B")
872 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
873 ;;2130 \e$(6!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?\e(B
874 ("\e$(6!0\e(B" .
"\e$,15S\e(B")
875 ("\e$(6!1\e(B" .
"\e$,15T\e(B")
876 ("\e$(6!2\e(B" .
"\e$,15Q\e(B")
877 ("\e$(6!3\e(B" .
"\e$,15U\e(B")
878 ("\e$(6!4\e(B" .
"\e$,15V\e(B")
879 ("\e$(6!5\e(B" .
"\e$,15W\e(B")
880 ("\e$(6!6\e(B" .
"\e$,15X\e(B")
881 ("\e$(6!7\e(B" .
"\e$,15Y\e(B")
882 ("\e$(6!8\e(B" .
"\e$,15Z\e(B")
883 ("\e$(6!9\e(B" .
"\e$,15[\e(B")
884 ("\e$(6!:\e(B" .
"\e$,15\\e(B")
885 ("\e$(6!;\e(B" .
"\e$,15]\e(B")
886 ("\e$(6!<\e(B" .
"\e$,15^\e(B")
887 ("\e$(6!=\e(B" .
"\e$,15_\e(B")
888 ("\e$(6!>\e(B" .
"\e$,15`\e(B")
889 ("\e$(6!?\e(B" .
"\e$,15a\e(B")
890 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
891 ;;2140 \e$(6!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O\e(B
892 ("\e$(6!@\e(B" .
"\e$,15b\e(B")
893 ("\e$(6!A\e(B" .
"\e$,15c\e(B")
894 ("\e$(6!B\e(B" .
"\e$,15d\e(B")
895 ("\e$(6!C\e(B" .
"\e$,15e\e(B")
896 ("\e$(6!D\e(B" .
"\e$,15f\e(B")
897 ("\e$(6!E\e(B" .
"\e$,15g\e(B")
898 ("\e$(6!F\e(B" .
"\e$,15h\e(B")
899 ("\e$(6!G\e(B" .
"\e$,15i\e(B")
900 ("\e$(6!H\e(B" .
"\e$,15j\e(B")
901 ("\e$(6!I\e(B" .
"\e$,15k\e(B")
902 ("\e$(6!J\e(B" .
"\e$,15l\e(B")
903 ("\e$(6!K\e(B" .
"\e$,15m\e(B")
904 ("\e$(6!L\e(B" .
"\e$,15n\e(B")
905 ("\e$(6!M\e(B" .
"\e$,15o\e(B")
906 ("\e$(6!N\e(B" .
"\e$,16?\e(B")
907 ("\e$(6!O\e(B" .
"\e$,15p\e(B")
908 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
909 ;;2150 \e$(6!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_\e(B
910 ("\e$(6!P\e(B" .
"\e$,15q\e(B")
911 ("\e$(6!Q\e(B" .
"\e$,15r\e(B")
912 ("\e$(6!R\e(B" .
"\e$,15s\e(B")
913 ("\e$(6!S\e(B" .
"\e$,15t\e(B")
914 ("\e$(6!T\e(B" .
"\e$,15u\e(B")
915 ("\e$(6!U\e(B" .
"\e$,15v\e(B")
916 ("\e$(6!V\e(B" .
"\e$,15w\e(B")
917 ("\e$(6!W\e(B" .
"\e$,15x\e(B")
918 ("\e$(6!X\e(B" .
"\e$,15y\e(B")
919 ("\e$(6!Z\e(B" .
"\e$,15~\e(B")
920 ("\e$(6![\e(B" .
"\e$,15\x7f\e(B")
921 ("\e$(6!\\e(B" .
"\e$,16 \e(B")
922 ("\e$(6!]\e(B" .
"\e$,16!\e(B")
923 ("\e$(6!^\e(B" .
"\e$,16"\e(B")
924 ("\e$
(6!_
\e(B" . "\e$
,16#\e(B")
925 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
926 ;;2160 \e$(6!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o\e(B
927 ("\e$
(6!`\e(B" . "\e$
,16&\e(B")
928 ("\e$
(6!a
\e(B" . "\e$
,16'\e(B")
929 ("\e$
(6!b
\e(B" . "\e$
,16(\e(B")
930 ("\e$
(6!c
\e(B" . "\e$
,16%
\e(B")
931 ("\e$
(6!d
\e(B" . "\e$
,16*\e(B")
932 ("\e$
(6!e
\e(B" . "\e$
,16+\e(B")
933 ("\e$
(6!f
\e(B" . "\e$
,16,\e(B")
934 ("\e$
(6!g
\e(B" . "\e$
,16)\e(B")
935 ("\e$
(6!h
\e(B" . "\e$
,16-
\e(B")
936 ("\e$
(6!i
\e(B" . "\e$
,15|
\e(B")
937 ("\e$
(6!j
\e(B" . "\e$
,16D
\e(B")
938 ("\e$
(6!j
!j
\e(B" . "\e$
,16E
\e(B")
939 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
940 ;;2170 \e$(6!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~\e(B
941 ("\e$
(6!q
\e(B" . "\e$
,16F
\e(B")
942 ("\e$
(6!r
\e(B" . "\e$
,16G
\e(B")
943 ("\e$
(6!s
\e(B" . "\e$
,16H
\e(B")
944 ("\e$
(6!t
\e(B" . "\e$
,16I
\e(B")
945 ("\e$
(6!u
\e(B" . "\e$
,16J
\e(B")
946 ("\e$
(6!v
\e(B" . "\e$
,16K
\e(B")
947 ("\e$
(6!w
\e(B" . "\e$
,16L\e(B")
948 ("\e$
(6!x
\e(B" . "\e$
,16M
\e(B")
949 ("\e$
(6!y
\e(B" . "\e$
,16N
\e(B")
950 ("\e$
(6!z
\e(B" . "\e$
,16O
\e(B")
951 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
952 ;;2220 \e$(6"!"""#"$
"%"&"'"(")"*"+","-".
"/\e(B
953 ("\e$
(6"!\e(B" .
"\e$,16;6-5p\e(B")
954 ("\e$(6""\e(B" .
"\e$,16>6-5p\e(B")
955 ("\e$(6"#\e(B" . "\e$
,15U6-
5p
\e(B")
956 ("\e$
(6"$\e(B" .
"\e$,15W6-5p\e(B")
957 ("\e$(6"%
\e(B" . "\e$
,15d6-5p
\e(B")
958 ("\e$
(6"&\e(B" .
"\e$,15j6-5p\e(B")
959 ("\e$(6"'\e(B" . "\e$
,15k6-5p
\e(B")
960 ("\e$
(6")\e(B" .
"\e$,15v6-5p\e(B")
961 ("\e$(6",\e(B" . "\e$
,15p6
!\e(B")
962 ("\e$
(6"-\e(B" .
"\e$,15p6"\e(B")
963 ("\e$
(6".\e(B" .
"\e$,15q6!\e(B")
964 ("\e$(6"/\e(B" . "\e$
,15q6
"\e(B")
965 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
966 ;;2230 \e$(6"0"1"2"3"4"5"6"7"8"9":";"<"=">"?\e(B
967 ("\e$(6"3\e(B" . "\e$
,15U6-
\e(B")
968 ("\e$
(6"4\e(B" .
"\e$,15V6-\e(B")
969 ("\e$(6"5\e(B" . "\e$
,15W6-
\e(B")
970 ("\e$
(6"6\e(B" .
"\e$,15X6-\e(B")
971 ("\e$(6"8\e(B" . "\e$
,15Z6-
\e(B")
972 ("\e$
(6"8"q
\e(B" . "\e$
,15Z6-5p6-
\e(B")
973 ("\e$
(6":\e(B" .
"\e$,15\6-\e(B")
974 ("\e$(6";\e(B" . "\e$,15]6-\e(B")
975 ("\e$(6"<\e(B" . "\e$
,15^
6-
\e(B")
976 ("\e$
(6"<\e(B" .
"\e$,15^6-\e(B")
977 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
978 ;;2240 \e$(6"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O\e(B
979 ("\e$(6"A
\e(B" . "\e$
,15c6-
\e(B")
980 ("\e$
(6"B\e(B" .
"\e$,15d6-\e(B")
981 ("\e$(6"C
\e(B" . "\e$
,15e6-
\e(B")
982 ("\e$
(6"E\e(B" .
"\e$,15g6-\e(B")
983 ("\e$(6"F
\e(B" . "\e$
,15h6-
\e(B")
984 ("\e$
(6"G\e(B" .
"\e$,15i6-\e(B")
985 ("\e$(6"H
\e(B" . "\e$
,15j6-
\e(B")
986 ("\e$
(6"I\e(B" .
"\e$,15k6-\e(B")
987 ("\e$(6"J
\e(B" . "\e$
,15l6-
\e(B")
988 ("\e$
(6"J\e(B" .
"\e$,15l6-\e(B")
989 ("\e$(6"K
\e(B" . "\e$
,15m6-
\e(B")
990 ("\e$
(6"L\e(B" .
"\e$,15n6-\e(B")
991 ("\e$(6"M
\e(B" . "\e$
,15o6-
\e(B")
992 ("\e$
(6"N\e(B" .
"\e$,16?6-\e(B")
993 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
994 ;;2250 \e$(6"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_\e(B
995 ("\e$(6"Q
\e(B" . "\e$
,15r6-
\e(B")
996 ("\e$
(6"R\e(B" .
"\e$,15s6-\e(B")
997 ("\e$(6"S
\e(B" . "\e$
,15t6-
\e(B")
998 ("\e$
(6"T\e(B" .
"\e$,15u6-\e(B")
999 ("\e$(6"U
\e(B" . "\e$
,15v6-
\e(B")
1000 ("\e$
(6"V\e(B" .
"\e$,15w6-\e(B")
1001 ("\e$(6"W
\e(B" . "\e$
,15x6-
\e(B")
1002 ("\e$
(6"]\e(B" .
"\e$,16-5o\e(B")
1003 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1004 ;;2260 \e$(6"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o\e(B
1005 ("\e$(6"`\e(B" . "\e$
,15W6-5p6-
\e(B")
1006 ("\e$
(6"a\e(B" .
"\e$,15X6-5h6-\e(B")
1007 ("\e$(6"c
\e(B" . "\e$
,15d6-5d6-
\e(B")
1008 ("\e$
(6"d\e(B" .
"\e$,15d6-5p6-\e(B")
1009 ("\e$(6"e
\e(B" . "\e$
,15g6-5h6-
\e(B")
1010 ("\e$
(6"f\e(B" .
"\e$,15g6-5p6-\e(B")
1011 ("\e$(6"g
\e(B" . "\e$
,15j6-5d6-
\e(B")
1012 ("\e$
(6"h\e(B" .
"\e$,15v6-5Z6-\e(B")
1013 ("\e$(6"i
\e(B" . "\e$
,15v6-5p6-
\e(B")
1014 ("\e$
(6"j\e(B" .
"\e$,15v6-5u6-\e(B")
1015 ("\e$(6"k
\e(B" . "\e$
,15h6-5h6-
\e(B")
1016 ("\e$
(6"l\e(B" .
"\e$,15U6-5w6-\e(B")
1017 ("\e$(6"m
\e(B" . "\e$
,15\
6-
5^
6-
\e(B")
1018 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1019 ;;2270 \e$(6"p
"q"r
"s"t
"u"v
"w"x
"y"z
"{"|
"}"~
\e(B
1020 ("\e$(6"p
\e(B" . "\e$
,15p6-
\e(B")
1021 ("\e$
(6"q\e(B" .
"\e$,16-5p\e(B")
1022 ("\e$(6"r
\e(B" . "\e$
,16-
5p
\e(B")
1023 ("\e$
(6"s\e(B" .
"\e$,1686-\e(B")
1024 ("\e$(6"t
\e(B" . "\e$
,1696-
\e(B")
1025 ("\e$
(6"u\e(B" .
"\e$,16:6-\e(B")
1026 ("\e$(6"y
\e(B" . "\e$
,16>6-
\e(B")
1027 ("\e$
(6"z\e(B" .
"\e$,16;6-\e(B")
1028 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1029 ;;2320 \e$(6#!#"###$#%#&#'#(#)#*#+#,#-#.#/\e(B
1030 ("\e$(6#!\e(B" .
"\e$,160\e(B")
1031 ("\e$(6#&\e(B" .
"\e$,15L\e(B")
1032 ("\e$(6#&"p
\e(B" . "\e$
,15p6$
\e(B")
1033 ("\e$
(6#'\e(B" . "\e$
,16A
\e(B")
1034 ("\e$
(6#'"p\e(B" .
"\e$,15p6C\e(B")
1035 ("\e$(6#*\e(B" .
"\e$,16@\e(B")
1036 ("\e$(6#*"p
\e(B" . "\e$
,15p6B
\e(B")
1037 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1038 ;;2330 \e$(6#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?\e(B
1039 ("\e$
(6#3\e(B" . "\e$
,168\e(B")
1040 ("\e$
(6#4\e(B" . "\e$
,169\e(B")
1041 ("\e$
(6#5\e(B" . "\e$
,16:\e(B")
1042 ("\e$
(6#:\e(B" . "\e$
,16;\e(B")
1043 ("\e$(6#?\e(B" .
"\e$,16<\e(B")
1044 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1045 ;;2340 \e$(6#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O\e(B
1046 ("\e$(6#@\e(B" .
"\e$,16=\e(B")
1047 ("\e$(6#I\e(B" .
"\e$,16>\e(B")
1048 ("\e$(6#J\e(B" .
"\e$,15}\e(B")
1049 ("\e$(6#K\e(B" .
"\e$,16$\e(B")
1050 ("\e$(6#L\e(B" .
"\e$,16B\e(B")
1051 ("\e$(6#M\e(B" .
"\e$,16C\e(B")
1052 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1053 ;;2350 \e$(6#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_\e(B
1054 ("\e$(6#P\e(B" .
"\e$,15n6-5h\e(B")
1055 ("\e$(6#Q\e(B" .
"\e$,15n6-5r\e(B")
1056 ("\e$(6#R\e(B" .
"\e$,15y6#\e(B")
1057 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1058 ;;2360 \e$(6#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o\e(B
1059 ("\e$(6#`\e(B" .
"\e$,15r6-5r\e(B")
1060 ("\e$(6#a\e(B" .
"\e$,15u6-5h\e(B")
1061 ("\e$(6#b\e(B" .
"\e$,15u6-5u\e(B")
1062 ("\e$(6#c\e(B" .
"\e$,15v6-5Z\e(B")
1063 ("\e$(6#d\e(B" .
"\e$,15v6-5h\e(B")
1064 ("\e$(6#e\e(B" .
"\e$,15v6-5l\e(B")
1065 ("\e$(6#f\e(B" .
"\e$,15v6-5r\e(B")
1066 ("\e$(6#g\e(B" .
"\e$,15v6-5u\e(B")
1067 ("\e$(6#h\e(B" .
"\e$,15w6-5_6-5p6-5o\e(B")
1068 ("\e$(6#i\e(B" .
"\e$,15w6-5_6-5o\e(B")
1069 ("\e$(6#j\e(B" .
"\e$,15w6-5_6-5u\e(B")
1070 ("\e$(6#k\e(B" .
"\e$,15w6-5_\e(B")
1071 ("\e$(6#l\e(B" .
"\e$,15w6-5`\e(B")
1072 ("\e$(6#m\e(B" .
"\e$,15x6-5h\e(B")
1073 ("\e$(6#n\e(B" .
"\e$,15x6-5p\e(B")
1074 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1075 ;;2370 \e$(6#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~\e(B
1076 ("\e$(6#p\e(B" .
"\e$,15y6-5c\e(B")
1077 ("\e$(6#q\e(B" .
"\e$,15y6-5h\e(B")
1078 ("\e$(6#r\e(B" .
"\e$,15y6-5n\e(B")
1079 ("\e$(6#s\e(B" .
"\e$,15y6-5o\e(B")
1080 ("\e$(6#t\e(B" .
"\e$,15y6-5p\e(B")
1081 ("\e$(6#u\e(B" .
"\e$,15y6-5r\e(B")
1082 ("\e$(6#v\e(B" .
"\e$,15y6-5u\e(B")
1083 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1084 ;;2420 \e$(6$!$"$#$$$%$&$'$($)$*$+$,$-$.$/\e(B
1085 ("\e$(6$!\e(B" .
"\e$,15U6-5d6-5p6-5o\e(B")
1086 ("\e$(6$"\e(B" . "\e$
,15U6-
5d
6-
5u\e(B")
1087 ("\e$
(6$
#\e(B" . "\e$
,15U6-
5d
6-
5o
\e(B")
1088 ("\e$
(6$$
\e(B" . "\e$
,15U6-
5h
6-
5o
\e(B")
1089 ("\e$
(6$%
\e(B" . "\e$
,15U6-
5p
6-
5o
\e(B")
1090 ("\e$
(6$
&\e(B" . "\e$
,15U6-
5u6-
5o
\e(B")
1091 ("\e$
(6$
'\e(B" . "\e$
,15U6-
5U\e(B")
1092 ("\e$
(6$
(\e(B" . "\e$
,15U6-
5d
\e(B")
1093 ("\e$
(6$
)\e(B" . "\e$
,15U6-
5h
\e(B")
1094 ("\e$
(6$
*\e(B" . "\e$
,15U6-
5n
\e(B")
1095 ("\e$
(6$
+\e(B" . "\e$
,15U6-
5o
\e(B")
1096 ("\e$
(6$
,\e(B" . "\e$
,15U6-
5r
\e(B")
1097 ("\e$
(6$-
\e(B" . "\e$
,15U6-
5u\e(B")
1098 ("\e$
(6$.
\e(B" . "\e$
,15U6-
5w
\e(B")
1099 ("\e$
(6$
/\e(B" . "\e$
,15X6-5h
\e(B")
1100 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1101 ;;2430 \e$(6$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?\e(B
1102 ("\e$
(6$
0\e(B" . "\e$
,15Y6-5U6-5d6-5o
\e(B")
1103 ("\e$
(6$
1\e(B" . "\e$
,15Y6-5U6-5w6-5u
\e(B")
1104 ("\e$
(6$
2\e(B" . "\e$
,15Y6-5U6-5d
\e(B")
1105 ("\e$
(6$
3\e(B" . "\e$
,15Y6-5U6-5w
\e(B")
1106 ("\e$
(6$
4\e(B" . "\e$
,15Y6-5X6-5p
\e(B")
1107 ("\e$
(6$
5\e(B" . "\e$
,15Y6-5U6-5o
\e(B")
1108 ("\e$
(6$
6\e(B" . "\e$
,15Y6-5V6-5o
\e(B")
1109 ("\e$
(6$
7\e(B" . "\e$
,15Y6-5W6-5o
\e(B")
1110 ("\e$
(6$
8\e(B" . "\e$
,15Y6-5X6-5o
\e(B")
1111 ("\e$
(6$
9\e(B" . "\e$
,15Y6-5U
\e(B")
1112 ("\e$
(6$
:\e(B" . "\e$
,15Y6-5V
\e(B")
1113 ("\e$
(6$
;\e(B" . "\e$,15Y6-5W\e(B")
1114 ("\e$(6$<\e(B" .
"\e$,15Y6-5X\e(B")
1115 ("\e$(6$=\e(B" .
"\e$,15Y6-5Y\e(B")
1116 ("\e$(6$>\e(B" .
"\e$,15Y6-5h\e(B")
1117 ("\e$(6$?\e(B" .
"\e$,15Y6-5n\e(B")
1118 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1119 ;;2440 \e$(6$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O\e(B
1120 ("\e$(6$@\e(B" .
"\e$,15Y6-5o\e(B")
1121 ("\e$(6$A\e(B" .
"\e$,15Z6-5Z\e(B")
1122 ("\e$(6$B\e(B" .
"\e$,15Z6-5^\e(B")
1123 ("\e$(6$C\e(B" .
"\e$,15[6-5o\e(B")
1124 ("\e$(6$D\e(B" .
"\e$,15\6-5p\e(B")
1125 ("\e$(6$E\e(B" .
"\e$,15\6-5^\e(B")
1126 ("\e$(6$F\e(B" .
"\e$,15^6-5Z\e(B")
1127 ("\e$(6$G\e(B" .
"\e$,15^6-5\\e(B")
1128 ("\e$(6$H\e(B" .
"\e$,15_6-5U\e(B")
1129 ("\e$(6$I\e(B" .
"\e$,15_6-5_\e(B")
1130 ("\e$(6$J\e(B" .
"\e$,15_6-5`\e(B")
1131 ("\e$(6$K\e(B" .
"\e$,15_6-5o\e(B")
1132 ("\e$(6$L\e(B" .
"\e$,15`6-5o\e(B")
1133 ("\e$(6$M\e(B" .
"\e$,15a6-5W6-5o\e(B")
1134 ("\e$(6$N\e(B" .
"\e$,15a6-5X6-5p\e(B")
1135 ("\e$(6$O\e(B" .
"\e$,15a6-5p6-5o\e(B")
1136 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1137 ;;2450 \e$(6$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_\e(B
1138 ("\e$(6$P\e(B" .
"\e$,15a6-5W\e(B")
1139 ("\e$(6$Q\e(B" .
"\e$,15a6-5X\e(B")
1140 ("\e$(6$R\e(B" .
"\e$,15a6-5a\e(B")
1141 ("\e$(6$S\e(B" .
"\e$,15a6-5n\e(B")
1142 ("\e$(6$T\e(B" .
"\e$,15a6-5o\e(B")
1143 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1144 ;;2460 \e$(6$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o\e(B
1145 ("\e$(6$`\e(B" .
"\e$,15b6-5o\e(B")
1146 ("\e$(6$a\e(B" .
"\e$,15d6-5d\e(B")
1147 ("\e$(6$b\e(B" .
"\e$,15d6-5h\e(B")
1148 ("\e$(6$c\e(B" .
"\e$,15f6-5f6-5o\e(B")
1149 ("\e$(6$d\e(B" .
"\e$,15f6-5g6-5o\e(B")
1150 ("\e$(6$e\e(B" .
"\e$,15f6-5m6-5o\e(B")
1151 ("\e$(6$f\e(B" .
"\e$,15f6-5p6-5o\e(B")
1152 ("\e$(6$g\e(B" .
"\e$,15f6-5u6-5o\e(B")
1153 ("\e$(6$h\e(B" .
"\e$,15f6-5W6-5p\e(B")
1154 ("\e$(6$i\e(B" .
"\e$,15f6-5X6-5p\e(B")
1155 ("\e$(6$j\e(B" .
"\e$,15f6-5f6-5u\e(B")
1156 ("\e$(6$k\e(B" .
"\e$,15f6-5g6-5u\e(B")
1157 ("\e$(6$l\e(B" .
"\e$,15f6-5W\e(B")
1158 ("\e$(6$m\e(B" .
"\e$,15f6-5X\e(B")
1159 ("\e$(6$n\e(B" .
"\e$,15f6-5f\e(B")
1160 ("\e$(6$o\e(B" .
"\e$,15f6-5g\e(B")
1161 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1162 ;;2470 \e$(6$p$q$r$s$t$u$v$w$x$y$z${$|$}$~\e(B
1163 ("\e$(6$p\e(B" .
"\e$,15f6-5h\e(B")
1164 ("\e$(6$q\e(B" .
"\e$,15f6-5l\e(B")
1165 ("\e$(6$r\e(B" .
"\e$,15f6-5m\e(B")
1166 ("\e$(6$s\e(B" .
"\e$,15f6-5n\e(B")
1167 ("\e$(6$t\e(B" .
"\e$,15f6-5o\e(B")
1168 ("\e$(6$u\e(B" .
"\e$,15f6-5u\e(B")
1169 ("\e$(6$v\e(B" .
"\e$,15g6-5h\e(B")
1170 ("\e$(6$w\e(B" .
"\e$,15h6-5h\e(B")
1171 ("\e$(6$x\e(B" .
"\e$,15j6-5d\e(B")
1172 ("\e$(6$y\e(B" .
"\e$,15j6-5h\e(B")
1173 ("\e$(6$z\e(B" .
"\e$,15j6-5r\e(B")
1174 ("\e$(6${\e(B" .
"\e$,15l6-5h\e(B")
1175 ("\e$(6$|\e(B" .
"\e$,15l6-5l\e(B")
1176 ("\e$(6$}\e(B" .
"\e$,15l6-5u\e(B")
1177 ("\e$(6$~\e(B" .
"\e$,15m6-5h\e(B")))
1179 (defconst indian-2-column-to-ucs-regexp
1180 "\e$(6!j!j\e(B\\|\e$(6"8"q\e(B\\|[\e$(6#&#'!*#*\e(B]\e$(6"p
\e(B\\|
[\e$
(6!!\e(B-\e$
(6$~
\e(B]")
1182 (put 'indian-2-column-to-ucs-chartable 'char-table-extra-slots 1)
1183 (defconst indian-2-column-to-ucs-chartable
1184 (let ((table (make-char-table 'indian-2-column-to-ucs-chartable))
1186 (dolist (elt indian-2-colum-to-ucs)
1187 (if (= (length (car elt)) 1)
1188 (aset table (aref (car elt) 0) (cdr elt))
1189 (setq alist (cons elt alist))))
1190 (set-char-table-extra-slot table 0 alist)
1194 (defun indian-2-column-to-ucs-region (from to)
1195 "Convert old Emacs Devanagari characters to UCS.
"
1200 (alist (char-table-extra-slot indian-2-column-to-ucs-chartable 0)))
1201 (narrow-to-region from to)
1202 (decompose-region from to)
1203 (goto-char (point-min))
1204 (while (re-search-forward indian-2-column-to-ucs-regexp nil t)
1205 (let ((len (- (match-end 0) (match-beginning 0)))
1208 (setq subst (aref indian-2-column-to-ucs-chartable
1209 (char-after (match-beginning 0))))
1210 (setq subst (cdr (assoc (match-string 0) alist))))
1211 (replace-match (if subst subst "?
"))))
1212 (indian-compose-region (point-min) (point-max))))))
1216 ;; arch-tag: 59aacd71-46c2-4cb3-bb26-e12bbad55545
1217 ;;; ind-util.el ends here