(minibuffer-default-add-shell-commands): Fix doc-string typo.
[emacs.git] / lisp / language / ind-util.el
blobeec33276670e796acb051e236bb71396017fb3cf
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
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/>.
24 ;;; Commentary:
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.
32 ;;; Code:
34 ;;; Transliteration
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.
40 (eval-and-compile
42 (defun indian-regexp-of-hashtbl-keys (hashtbl)
43 "Returns the regular expression of hashtable keys."
44 (let (keys)
45 (maphash (lambda (key val) (push key keys)) hashtbl)
46 (regexp-opt keys)))
48 (defvar indian-dev-base-table
50 (;; VOWELS (18)
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")
64 (;; Misc Symbols (7)
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)
66 (;; Digits (10)
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
74 (;; VOWELS
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)
78 (;; CONSONANTS
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)
88 (;; Misc Symbols (7)
89 nil ?\e$,18"\e(B nil nil ?\e$,18m\e(B nil nil) ;; ek onkar, etc.
90 (;; Digits
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
97 (;; VOWELS
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)
101 (;; CONSONANTS
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")
111 (;; Misc Symbols (7)
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)
113 (;; Digits
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
120 (;; VOWELS
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))
124 (;; CONSONANTS
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")
134 (;; Misc Symbols
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)
136 (;; Digits
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
143 (;; VOWELS
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))
147 (;; CONSONANTS
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$,16u7M77\e(B")
157 (;; Misc Symbols
158 ?\e$,16a\e(B ?\e$,16b\e(B ?\e$,16c\e(B nil ?\e$,17M\e(B nil nil)
159 (;; Digits
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
166 (;; VOWELS
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))
170 (;; CONSONANTS
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")
180 (;; Misc Symbols
181 ?\e$,16a\e(B ?\e$,16b\e(B ?\e$,16c\e(B nil ?\e$,17M\e(B nil nil)
182 (;; Digits
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
189 (;; VOWELS
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))
193 (;; CONSONANTS
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")
203 (;; Misc Symbols
204 ?\e$,1=A\e(B ?\e$,1=B\e(B ?\e$,1=C\e(B nil ?\e$,1>-\e(B nil nil)
205 (;; Digits
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
212 (;; VOWELS
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))
216 (;; CONSONANTS
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")
226 (;; Misc Symbols
227 nil ?\e$,1>b\e(B ?\e$,1>c\e(B nil ?\e$,1?M\e(B nil nil)
228 (;; Digits
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
235 (;; VOWELS
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)
239 (;; CONSONANTS
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")
249 (;; Misc Symbols
250 nil ?\e$,1@"\e(B ?\e$,1@#\e(B nil ?\e$,1@m\e(B nil nil)
251 (;; Digits
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
258 (;; VOWELS
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)
262 (;; CONSONANTS
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")
272 (;; Misc Symbols
273 nil ?\e$,1<"\e(B ?\e$,1<#\e(B nil ?\e$,1<m\e(B nil nil)
274 (;; Digits
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
292 (;; vowels -- 18
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"))
296 (;; consonants -- 40
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")
305 ("GY" "dny") "x")
306 (;; misc -- 7
307 ".N" (".n" "M") "H" ".a" ".h" ("AUM" "OM") "..")))
309 (defvar indian-kyoto-harvard-table
310 '(;; for encode/decode
311 (;; vowel
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"))
315 (;; consonant
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
324 nil nil)
325 (;; misc
326 nil "M" "H" "'" nil "." nil)))
328 (defvar indian-harvard-table
329 '(;; for encode/decode
330 (;; vowel
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"))
334 (;; consonant
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
343 nil nil)
344 (;; misc
345 nil "M" "H" "'" nil "." nil)))
347 (defvar indian-tokyo-table
348 '(;; for encode/decode
349 (;; vowel
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"))
353 (;; consonant
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
362 nil nil)
363 (;; misc
364 nil "M" "H" "'" nil "." nil)))
366 (defvar indian-aiba-table
367 '(;; for encode/decode
368 (;; vowel
369 "a" "aa" "i" "ii" "u" "uu"
370 ".r" ".l" nil nil "e" "ai"
371 nil nil "o" "au" "~r" "~l")
372 (;; consonant
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"
379 "^s" ".s" "s" "h"
380 nil nil nil nil nil nil nil nil
381 nil nil)
382 (;; misc
383 nil ".m" ".h" "'" nil "." nil)))
385 (defun mapthread (function seq1 &rest seqrest)
386 "Apply FUNCTION to each element of SEQ1 and return result list.
387 If there are several SEQRESTs, FUNCTION is called with that many
388 arguments, with all possible combinations of these multiple SEQUENCES.
389 Thus, if SEQ1 contains 3 elements and SEQ2 contains 5 elements, then
390 FUNCTION will be called 15 times."
391 (if seqrest
392 (mapcar
393 (lambda (x)
394 (apply
395 'mapthread
396 `(lambda (&rest y) (apply ',function x y))
397 seqrest))
398 seq1)
399 (mapcar function seq1)))
401 (defun indian--puthash-char (char trans-char hashtbls)
402 (let ((encode-hash (car hashtbls)) ;; char -> trans
403 (decode-hash (cdr hashtbls)) ;; trans -> char
405 ;; char -- nil / char / string (/ list of vowel & matra)
406 ;; trans-char -- nil / string / list of strings
407 (when (and char trans-char)
408 (if (stringp trans-char) (setq trans-char (list trans-char)))
409 (if (characterp char) (setq char (char-to-string char)))
410 (puthash char (car trans-char) encode-hash)
411 (dolist (trans trans-char)
412 (puthash trans char decode-hash)))))
414 (defun indian--map (f l1 l2)
415 (while l1
416 (funcall f (pop l1) (pop l2))))
418 (defun indian--puthash-v (v trans-v hashtbls)
419 (indian--map
420 (lambda (v trans-v)
421 (indian--puthash-char (car v) trans-v hashtbls))
422 v trans-v))
424 (defun indian--puthash-c (c trans-c halant hashtbls)
425 (indian--map
426 (lambda (c trans-c)
427 (if (characterp c) (setq c (char-to-string c)))
428 (indian--puthash-char (concat c halant) trans-c hashtbls))
429 c trans-c))
431 (defun indian--puthash-m (m trans-m hashtbls)
432 (indian--map
433 (lambda (m trans-m)
434 (indian--puthash-char m trans-m hashtbls))
435 m trans-m))
437 (defun indian--puthash-cv (c trans-c v trans-v hashtbls)
438 (indian--map
439 (lambda (c trans-c)
440 (indian--map
441 (lambda (v trans-v)
442 (when (and c trans-c v trans-v)
443 (if (characterp c) (setq c (char-to-string c)))
444 (setq v (if (characterp (cadr v)) (char-to-string (cadr v)) ""))
445 (if (stringp trans-c) (setq trans-c (list trans-c)))
446 (if (stringp trans-v) (setq trans-v (list trans-v)))
447 (indian--puthash-char
448 (concat c v)
449 (apply 'append
450 (mapthread 'concat trans-c trans-v))
451 hashtbls)))
452 v trans-v))
453 c trans-c))
455 (defun indian-make-hash (table trans-table)
456 "Indian Transliteration Hash for decode/encode"
457 (let* ((encode-hash (make-hash-table :test 'equal))
458 (decode-hash (make-hash-table :test 'equal))
459 (hashtbls (cons encode-hash decode-hash))
460 (vowels (elt table 0))
461 (consonants (elt table 1))
462 (misc (elt table 2))
463 (digits (elt table 3))
464 (halant (char-to-string (elt misc 4)))
465 (trans-vowels (elt trans-table 0))
466 (trans-consonants (elt trans-table 1))
467 (trans-misc (elt trans-table 2))
468 (trans-digits '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")))
469 (indian--puthash-v vowels trans-vowels hashtbls)
470 (indian--puthash-c consonants trans-consonants halant hashtbls)
471 (indian--puthash-cv consonants trans-consonants
472 vowels trans-vowels hashtbls)
473 (indian--puthash-m misc trans-misc hashtbls)
474 (indian--puthash-m digits trans-digits hashtbls)
475 hashtbls))
477 (defvar indian-dev-itrans-v5-hash
478 (indian-make-hash indian-dev-base-table
479 indian-itrans-v5-table))
480 (defvar indian-dev-kyoto-harvard-hash
481 (indian-make-hash indian-dev-base-table
482 indian-kyoto-harvard-table))
483 (defvar indian-dev-aiba-hash
484 (indian-make-hash indian-dev-base-table
485 indian-aiba-table))
487 (defvar indian-pnj-itrans-v5-hash
488 (indian-make-hash indian-pnj-base-table
489 indian-itrans-v5-table))
491 (defvar indian-gjr-itrans-v5-hash
492 (indian-make-hash indian-gjr-base-table
493 indian-itrans-v5-table))
495 (defvar indian-ori-itrans-v5-hash
496 (indian-make-hash indian-ori-base-table
497 indian-itrans-v5-table))
499 (defvar indian-bng-itrans-v5-hash
500 (indian-make-hash indian-bng-base-table
501 indian-itrans-v5-table))
503 (defvar indian-asm-itrans-v5-hash
504 (indian-make-hash indian-asm-base-table
505 indian-itrans-v5-table))
507 (defvar indian-tlg-itrans-v5-hash
508 (indian-make-hash indian-tlg-base-table
509 indian-itrans-v5-table))
511 (defvar indian-knd-itrans-v5-hash
512 (indian-make-hash indian-knd-base-table
513 indian-itrans-v5-table))
515 (defvar indian-mlm-itrans-v5-hash
516 (indian-make-hash indian-mlm-base-table
517 indian-itrans-v5-table))
519 (defvar indian-tml-itrans-v5-hash
520 (indian-make-hash indian-tml-base-table
521 indian-itrans-v5-table))
524 (defmacro indian-translate-region (from to hashtable encode-p)
525 `(save-excursion
526 (save-restriction
527 (let ((regexp ,(indian-regexp-of-hashtbl-keys
528 (if encode-p (car (eval hashtable))
529 (cdr (eval hashtable))))))
530 (narrow-to-region from to)
531 (goto-char (point-min))
532 (while (re-search-forward regexp nil t)
533 (let ((matchstr (gethash (match-string 0)
534 (if ,encode-p
535 (car ,hashtable)
536 (cdr ,hashtable)))))
537 (if matchstr (replace-match matchstr))))))))
541 (defun indian-dev-itrans-v5-encode-region (from to)
542 (interactive "r")
543 (indian-translate-region
544 from to indian-dev-itrans-v5-hash t))
546 (defun indian-dev-itrans-v5-decode-region (from to)
547 (interactive "r")
548 (indian-translate-region
549 from to indian-dev-itrans-v5-hash nil))
551 (defun indian-dev-kyoto-harvard-encode-region (from to)
552 (interactive "r")
553 (indian-translate-region
554 from to indian-dev-kyoto-harvard-hash t))
556 (defun indian-dev-kyoto-harvard-decode-region (from to)
557 (interactive "r")
558 (indian-translate-region
559 from to indian-dev-kyoto-harvard-hash nil))
561 (defun indian-dev-aiba-encode-region (from to)
562 (interactive "r")
563 (indian-translate-region
564 from to indian-dev-aiba-hash t))
566 (defun indian-dev-aiba-decode-region (from to)
567 (interactive "r")
568 (indian-translate-region
569 from to indian-dev-aiba-hash nil))
574 ;;; IS 13194 utilities
576 ;; The followings provide conversion between IS 13194 (ISCII) and UCS.
578 (let
579 ;;Unicode vs IS13194 ;; only Devanagari is supported now.
580 ((ucs-devanagari-to-is13194-alist
581 '((?\x0900 . "[U+0900]")
582 (?\x0901 . "\e(5!\e(B")
583 (?\x0902 . "\e(5"\e(B")
584 (?\x0903 . "\e(5#\e(B")
585 (?\x0904 . "[U+0904]")
586 (?\x0905 . "\e(5$\e(B")
587 (?\x0906 . "\e(5%\e(B")
588 (?\x0907 . "\e(5&\e(B")
589 (?\x0908 . "\e(5'\e(B")
590 (?\x0909 . "\e(5(\e(B")
591 (?\x090a . "\e(5)\e(B")
592 (?\x090b . "\e(5*\e(B")
593 (?\x090c . "\e(5&i\e(B")
594 (?\x090d . "\e(5.\e(B")
595 (?\x090e . "\e(5+\e(B")
596 (?\x090f . "\e(5,\e(B")
597 (?\x0910 . "\e(5-\e(B")
598 (?\x0911 . "\e(52\e(B")
599 (?\x0912 . "\e(5/\e(B")
600 (?\x0913 . "\e(50\e(B")
601 (?\x0914 . "\e(51\e(B")
602 (?\x0915 . "\e(53\e(B")
603 (?\x0916 . "\e(54\e(B")
604 (?\x0917 . "\e(55\e(B")
605 (?\x0918 . "\e(56\e(B")
606 (?\x0919 . "\e(57\e(B")
607 (?\x091a . "\e(58\e(B")
608 (?\x091b . "\e(59\e(B")
609 (?\x091c . "\e(5:\e(B")
610 (?\x091d . "\e(5;\e(B")
611 (?\x091e . "\e(5<\e(B")
612 (?\x091f . "\e(5=\e(B")
613 (?\x0920 . "\e(5>\e(B")
614 (?\x0921 . "\e(5?\e(B")
615 (?\x0922 . "\e(5@\e(B")
616 (?\x0923 . "\e(5A\e(B")
617 (?\x0924 . "\e(5B\e(B")
618 (?\x0925 . "\e(5C\e(B")
619 (?\x0926 . "\e(5D\e(B")
620 (?\x0927 . "\e(5E\e(B")
621 (?\x0928 . "\e(5F\e(B")
622 (?\x0929 . "\e(5G\e(B")
623 (?\x092a . "\e(5H\e(B")
624 (?\x092b . "\e(5I\e(B")
625 (?\x092c . "\e(5J\e(B")
626 (?\x092d . "\e(5K\e(B")
627 (?\x092e . "\e(5L\e(B")
628 (?\x092f . "\e(5M\e(B")
629 (?\x0930 . "\e(5O\e(B")
630 (?\x0931 . "\e(5P\e(B")
631 (?\x0932 . "\e(5Q\e(B")
632 (?\x0933 . "\e(5R\e(B")
633 (?\x0934 . "\e(5S\e(B")
634 (?\x0935 . "\e(5T\e(B")
635 (?\x0936 . "\e(5U\e(B")
636 (?\x0937 . "\e(5V\e(B")
637 (?\x0938 . "\e(5W\e(B")
638 (?\x0939 . "\e(5X\e(B")
639 (?\x093a . "[U+093a]")
640 (?\x093b . "[U+093b]")
641 (?\x093c . "\e(5i\e(B")
642 (?\x093d . "\e(5ji\e(B")
643 (?\x093e . "\e(5Z\e(B")
644 (?\x093f . "\e(5[\e(B")
645 (?\x0940 . "\e(5\\e(B")
646 (?\x0941 . "\e(5]\e(B")
647 (?\x0942 . "\e(5^\e(B")
648 (?\x0943 . "\e(5_\e(B")
649 (?\x0944 . "\e(5_i\e(B")
650 (?\x0945 . "\e(5c\e(B")
651 (?\x0946 . "\e(5`\e(B")
652 (?\x0947 . "\e(5a\e(B")
653 (?\x0948 . "\e(5b\e(B")
654 (?\x0949 . "\e(5g\e(B")
655 (?\x094a . "\e(5d\e(B")
656 (?\x094b . "\e(5e\e(B")
657 (?\x094c . "\e(5f\e(B")
658 (?\x094d . "\e(5h\e(B")
659 (?\x094e . "[U+094e]")
660 (?\x094f . "[U+094f]")
661 (?\x0950 . "\e(5!i\e(B")
662 (?\x0951 . "\e(5p5\e(B")
663 (?\x0952 . "\e(5p8\e(B")
664 (?\x0953 . "[DEVANAGARI GRAVE ACCENT]")
665 (?\x0954 . "[DEVANAGARI ACUTE ACCENT]")
666 (?\x0955 . "[U+0955]")
667 (?\x0956 . "[U+0956]")
668 (?\x0957 . "[U+0957]")
669 (?\x0958 . "\e(53i\e(B")
670 (?\x0959 . "\e(54i\e(B")
671 (?\x095a . "\e(55i\e(B")
672 (?\x095b . "\e(5:i\e(B")
673 (?\x095c . "\e(5?i\e(B")
674 (?\x095d . "\e(5@i\e(B")
675 (?\x095e . "\e(5Ii\e(B")
676 (?\x095f . "\e(5N\e(B")
677 (?\x0960 . "\e(5*i\e(B")
678 (?\x0961 . "\e(5'i\e(B")
679 (?\x0962 . "\e(5[i\e(B")
680 (?\x0963 . "\e(5ei\e(B")
681 (?\x0964 . "\e(5j\e(B")
682 (?\x0965 . "\e(5jj\e(B")
683 (?\x0966 . "\e(5q\e(B")
684 (?\x0967 . "\e(5r\e(B")
685 (?\x0968 . "\e(5s\e(B")
686 (?\x0969 . "\e(5t\e(B")
687 (?\x096a . "\e(5u\e(B")
688 (?\x096b . "\e(5v\e(B")
689 (?\x096c . "\e(5w\e(B")
690 (?\x096d . "\e(5x\e(B")
691 (?\x096e . "\e(5y\e(B")
692 (?\x096f . "\e(5z\e(B")
693 (?\x0970 . "[U+0970]")
694 (?\x0971 . "[U+0971]")
695 (?\x0972 . "[U+0972]")
696 (?\x0973 . "[U+0973]")
697 (?\x0974 . "[U+0974]")
698 (?\x0975 . "[U+0975]")
699 (?\x0976 . "[U+0976]")
700 (?\x0977 . "[U+0977]")
701 (?\x0978 . "[U+0978]")
702 (?\x0979 . "[U+0979]")
703 (?\x097a . "[U+097a]")
704 (?\x097b . "[U+097b]")
705 (?\x097c . "[U+097c]")
706 (?\x097d . "[U+097d]")
707 (?\x097e . "[U+097e]")
708 (?\x097f . "[U+097f]")))
709 (ucs-bengali-to-is13194-alist nil)
710 (ucs-assamese-to-is13194-alist nil)
711 (ucs-gurmukhi-to-is13194-alist nil)
712 (ucs-gujarati-to-is13194-alist nil)
713 (ucs-oriya-to-is13194-alist nil)
714 (ucs-tamil-to-is13194-alist nil)
715 (ucs-telugu-to-is13194-alist nil)
716 (ucs-malayalam-to-is13194-alist nil)
717 (ucs-kannada-to-is13194-alist nil))
718 (dolist (script '(devanagari bengali assamese gurmukhi gujarati
719 oriya tamil telugu malayalam kannada))
720 (let ((hashtable (intern (concat "is13194-to-ucs-"
721 (symbol-name script) "-hashtbl" )))
722 (regexp (intern (concat "is13194-to-ucs-"
723 (symbol-name script) "-regexp"))))
724 (set hashtable (make-hash-table :test 'equal :size 128))
725 (dolist (x (eval (intern (concat "ucs-" (symbol-name script)
726 "-to-is13194-alist"))))
727 (put-char-code-property (car x) 'script script)
728 (put-char-code-property (car x) 'iscii (cdr x))
729 (puthash (cdr x) (char-to-string (car x)) (eval hashtable)))
730 (set regexp (indian-regexp-of-hashtbl-keys (eval hashtable))))))
732 (defvar is13194-default-repertory 'devanagari)
734 (defvar is13194-repertory-to-ucs-script
735 `((DEF ?\x40 ,is13194-default-repertory)
736 (RMN ?\x41 ,is13194-default-repertory)
737 (DEV ?\x42 devanagari)
738 (BNG ?\x43 bengali)
739 (TML ?\x44 tamil)
740 (TLG ?\x45 telugu)
741 (ASM ?\x46 bengali)
742 (ORI ?\x47 oriya)
743 (KND ?\x48 kannada)
744 (MLM ?\x49 malayalam)
745 (GJR ?\x4a gujarati)
746 (PNJ ?\x4b gurmukhi)))
748 ;; for guiding find-variable function.
749 (defvar is13194-to-ucs-devanagari-hashtbl nil)
750 (defvar is13194-to-ucs-devanagari-regexp nil)
751 (defvar is13194-to-ucs-bengali-hashtbl nil)
752 (defvar is13194-to-ucs-bengali-regexp nil)
753 (defvar is13194-to-ucs-assamese-hashtbl nil)
754 (defvar is13194-to-ucs-assamese-regexp nil)
755 (defvar is13194-to-ucs-gurmukhi-hashtbl nil)
756 (defvar is13194-to-ucs-gurmukhi-regexp nil)
757 (defvar is13194-to-ucs-gujarati-hashtbl nil)
758 (defvar is13194-to-ucs-gujarati-regexp nil)
759 (defvar is13194-to-ucs-oriya-hashtbl nil)
760 (defvar is13194-to-ucs-oriya-regexp nil)
761 (defvar is13194-to-ucs-tamil-hashtbl nil)
762 (defvar is13194-to-ucs-tamil-regexp nil)
763 (defvar is13194-to-ucs-telugu-hashtbl nil)
764 (defvar is13194-to-ucs-telugu-regexp nil)
765 (defvar is13194-to-ucs-malayalam-hashtbl nil)
766 (defvar is13194-to-ucs-malayalam-regexp nil)
767 (defvar is13194-to-ucs-kannada-hashtbl nil)
768 (defvar is13194-to-ucs-kannada-regexp nil)
770 (defvar ucs-to-is13194-regexp
771 ;; only Devanagari is supported now.
772 (concat "[" (char-to-string #x0900)
773 "-" (char-to-string #x097f) "]")
774 "Regexp that matches to conversion")
776 (defun ucs-to-iscii-region (from to)
777 "Converts the indian UCS characters in the region to ISCII.
778 Returns new end position."
779 (interactive "r")
780 ;; only Devanagari is supported now.
781 (save-excursion
782 (save-restriction
783 (narrow-to-region from to)
784 (goto-char (point-min))
785 (let* ((current-repertory is13194-default-repertory))
786 (while (re-search-forward ucs-to-is13194-regexp nil t)
787 (replace-match
788 (get-char-code-property (string-to-char (match-string 0))
789 'iscii))))
790 (point-max))))
792 (defun iscii-to-ucs-region (from to)
793 "Converts the ISCII characters in the region to UCS.
794 Returns new end position."
795 (interactive "r")
796 ;; only Devanagari is supported now.
797 (save-excursion
798 (save-restriction
799 (narrow-to-region from to)
800 (goto-char (point-min))
801 (let* ((current-repertory is13194-default-repertory)
802 (current-hashtable
803 (intern (concat "is13194-to-ucs-"
804 (symbol-name current-repertory) "-hashtbl")))
805 (current-regexp
806 (intern (concat "is13194-to-ucs-"
807 (symbol-name current-repertory) "-regexp")))
808 (re (eval current-regexp))
809 (hash (eval current-hashtable)))
810 (while (re-search-forward re nil t)
811 (replace-match (gethash (match-string 0) hash ""))))
812 (point-max))))
814 ;;;###autoload
815 (defun indian-compose-region (from to)
816 "Compose the region according to `composition-function-table'."
817 (interactive "r")
818 (save-excursion
819 (save-restriction
820 (let ((pos from) newpos func (max to))
821 (narrow-to-region from to)
822 (while (< pos max)
823 (setq func (aref composition-function-table (char-after pos)))
824 (if (fboundp func)
825 (setq newpos (funcall func pos nil)
826 pos (if (and (integerp newpos) (> newpos pos))
827 newpos (1+ pos)))
828 (setq pos (1+ pos))))))))
830 ;;;###autoload
831 (defun indian-compose-string (string)
832 (with-temp-buffer
833 (insert string)
834 (indian-compose-region (point-min) (point-max))
835 (buffer-string)))
837 ;;;###autoload
838 (defun in-is13194-post-read-conversion (len)
839 (let ((pos (point)) endpos)
840 (setq endpos (iscii-to-ucs-region pos (+ pos len)))
841 (- endpos pos)))
843 ;;;###autoload
844 (defun in-is13194-pre-write-conversion (from to)
845 (let ((buf (current-buffer)))
846 (set-buffer (generate-new-buffer " *temp*"))
847 (if (stringp from)
848 (insert from)
849 (insert-buffer-substring buf from to))
850 (ucs-to-iscii-region (point-min) (point-max))
851 nil))
856 ;;; Backward Compatibility support programs
858 ;; The following provides the conversion from old-implementation of
859 ;; Emacs Devanagari script to UCS.
861 (defconst indian-2-colum-to-ucs
863 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
864 ;;2120 \e$(6!!!"!#!$!%!&!'!(!)!*!+!,!-!.!/\e(B
865 ("\e$(6!!\e(B" . "\e$,15A\e(B")
866 ("\e$(6!"\e(B" . "\e$,15B\e(B")
867 ("\e$(6!#\e(B" . "\e$,15C\e(B")
868 ("\e$(6!$\e(B" . "\e$,15E\e(B")
869 ("\e$(6!%\e(B" . "\e$,15F\e(B")
870 ("\e$(6!&\e(B" . "\e$,15G\e(B")
871 ("\e$(6!'\e(B" . "\e$,15H\e(B")
872 ("\e$(6!(\e(B" . "\e$,15I\e(B")
873 ("\e$(6!)\e(B" . "\e$,15J\e(B")
874 ("\e$(6!*\e(B" . "\e$,15K\e(B")
875 ("\e$(6!*"p\e(B" . "\e$,15p6#\e(B")
876 ("\e$(6!+\e(B" . "\e$,15N\e(B")
877 ("\e$(6!,\e(B" . "\e$,15O\e(B")
878 ("\e$(6!-\e(B" . "\e$,15P\e(B")
879 ("\e$(6!.\e(B" . "\e$,15M\e(B")
880 ("\e$(6!/\e(B" . "\e$,15R\e(B")
881 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
882 ;;2130 \e$(6!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?\e(B
883 ("\e$(6!0\e(B" . "\e$,15S\e(B")
884 ("\e$(6!1\e(B" . "\e$,15T\e(B")
885 ("\e$(6!2\e(B" . "\e$,15Q\e(B")
886 ("\e$(6!3\e(B" . "\e$,15U\e(B")
887 ("\e$(6!4\e(B" . "\e$,15V\e(B")
888 ("\e$(6!5\e(B" . "\e$,15W\e(B")
889 ("\e$(6!6\e(B" . "\e$,15X\e(B")
890 ("\e$(6!7\e(B" . "\e$,15Y\e(B")
891 ("\e$(6!8\e(B" . "\e$,15Z\e(B")
892 ("\e$(6!9\e(B" . "\e$,15[\e(B")
893 ("\e$(6!:\e(B" . "\e$,15\\e(B")
894 ("\e$(6!;\e(B" . "\e$,15]\e(B")
895 ("\e$(6!<\e(B" . "\e$,15^\e(B")
896 ("\e$(6!=\e(B" . "\e$,15_\e(B")
897 ("\e$(6!>\e(B" . "\e$,15`\e(B")
898 ("\e$(6!?\e(B" . "\e$,15a\e(B")
899 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
900 ;;2140 \e$(6!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O\e(B
901 ("\e$(6!@\e(B" . "\e$,15b\e(B")
902 ("\e$(6!A\e(B" . "\e$,15c\e(B")
903 ("\e$(6!B\e(B" . "\e$,15d\e(B")
904 ("\e$(6!C\e(B" . "\e$,15e\e(B")
905 ("\e$(6!D\e(B" . "\e$,15f\e(B")
906 ("\e$(6!E\e(B" . "\e$,15g\e(B")
907 ("\e$(6!F\e(B" . "\e$,15h\e(B")
908 ("\e$(6!G\e(B" . "\e$,15i\e(B")
909 ("\e$(6!H\e(B" . "\e$,15j\e(B")
910 ("\e$(6!I\e(B" . "\e$,15k\e(B")
911 ("\e$(6!J\e(B" . "\e$,15l\e(B")
912 ("\e$(6!K\e(B" . "\e$,15m\e(B")
913 ("\e$(6!L\e(B" . "\e$,15n\e(B")
914 ("\e$(6!M\e(B" . "\e$,15o\e(B")
915 ("\e$(6!N\e(B" . "\e$,16?\e(B")
916 ("\e$(6!O\e(B" . "\e$,15p\e(B")
917 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
918 ;;2150 \e$(6!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_\e(B
919 ("\e$(6!P\e(B" . "\e$,15q\e(B")
920 ("\e$(6!Q\e(B" . "\e$,15r\e(B")
921 ("\e$(6!R\e(B" . "\e$,15s\e(B")
922 ("\e$(6!S\e(B" . "\e$,15t\e(B")
923 ("\e$(6!T\e(B" . "\e$,15u\e(B")
924 ("\e$(6!U\e(B" . "\e$,15v\e(B")
925 ("\e$(6!V\e(B" . "\e$,15w\e(B")
926 ("\e$(6!W\e(B" . "\e$,15x\e(B")
927 ("\e$(6!X\e(B" . "\e$,15y\e(B")
928 ("\e$(6!Z\e(B" . "\e$,15~\e(B")
929 ("\e$(6![\e(B" . "\e$,15\x7f\e(B")
930 ("\e$(6!\\e(B" . "\e$,16 \e(B")
931 ("\e$(6!]\e(B" . "\e$,16!\e(B")
932 ("\e$(6!^\e(B" . "\e$,16"\e(B")
933 ("\e$(6!_\e(B" . "\e$,16#\e(B")
934 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
935 ;;2160 \e$(6!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o\e(B
936 ("\e$(6!`\e(B" . "\e$,16&\e(B")
937 ("\e$(6!a\e(B" . "\e$,16'\e(B")
938 ("\e$(6!b\e(B" . "\e$,16(\e(B")
939 ("\e$(6!c\e(B" . "\e$,16%\e(B")
940 ("\e$(6!d\e(B" . "\e$,16*\e(B")
941 ("\e$(6!e\e(B" . "\e$,16+\e(B")
942 ("\e$(6!f\e(B" . "\e$,16,\e(B")
943 ("\e$(6!g\e(B" . "\e$,16)\e(B")
944 ("\e$(6!h\e(B" . "\e$,16-\e(B")
945 ("\e$(6!i\e(B" . "\e$,15|\e(B")
946 ("\e$(6!j\e(B" . "\e$,16D\e(B")
947 ("\e$(6!j!j\e(B" . "\e$,16E\e(B")
948 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
949 ;;2170 \e$(6!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~\e(B
950 ("\e$(6!q\e(B" . "\e$,16F\e(B")
951 ("\e$(6!r\e(B" . "\e$,16G\e(B")
952 ("\e$(6!s\e(B" . "\e$,16H\e(B")
953 ("\e$(6!t\e(B" . "\e$,16I\e(B")
954 ("\e$(6!u\e(B" . "\e$,16J\e(B")
955 ("\e$(6!v\e(B" . "\e$,16K\e(B")
956 ("\e$(6!w\e(B" . "\e$,16L\e(B")
957 ("\e$(6!x\e(B" . "\e$,16M\e(B")
958 ("\e$(6!y\e(B" . "\e$,16N\e(B")
959 ("\e$(6!z\e(B" . "\e$,16O\e(B")
960 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
961 ;;2220 \e$(6"!"""#"$"%"&"'"(")"*"+","-"."/\e(B
962 ("\e$(6"!\e(B" . "\e$,16;6-5p\e(B")
963 ("\e$(6""\e(B" . "\e$,16>6-5p\e(B")
964 ("\e$(6"#\e(B" . "\e$,15U6-5p\e(B")
965 ("\e$(6"$\e(B" . "\e$,15W6-5p\e(B")
966 ("\e$(6"%\e(B" . "\e$,15d6-5p\e(B")
967 ("\e$(6"&\e(B" . "\e$,15j6-5p\e(B")
968 ("\e$(6"'\e(B" . "\e$,15k6-5p\e(B")
969 ("\e$(6")\e(B" . "\e$,15v6-5p\e(B")
970 ("\e$(6",\e(B" . "\e$,15p6!\e(B")
971 ("\e$(6"-\e(B" . "\e$,15p6"\e(B")
972 ("\e$(6".\e(B" . "\e$,15q6!\e(B")
973 ("\e$(6"/\e(B" . "\e$,15q6"\e(B")
974 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
975 ;;2230 \e$(6"0"1"2"3"4"5"6"7"8"9":";"<"=">"?\e(B
976 ("\e$(6"3\e(B" . "\e$,15U6-\e(B")
977 ("\e$(6"4\e(B" . "\e$,15V6-\e(B")
978 ("\e$(6"5\e(B" . "\e$,15W6-\e(B")
979 ("\e$(6"6\e(B" . "\e$,15X6-\e(B")
980 ("\e$(6"8\e(B" . "\e$,15Z6-\e(B")
981 ("\e$(6"8"q\e(B" . "\e$,15Z6-5p6-\e(B")
982 ("\e$(6":\e(B" . "\e$,15\6-\e(B")
983 ("\e$(6";\e(B" . "\e$,15]6-\e(B")
984 ("\e$(6"<\e(B" . "\e$,15^6-\e(B")
985 ("\e$(6"<\e(B" . "\e$,15^6-\e(B")
986 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
987 ;;2240 \e$(6"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O\e(B
988 ("\e$(6"A\e(B" . "\e$,15c6-\e(B")
989 ("\e$(6"B\e(B" . "\e$,15d6-\e(B")
990 ("\e$(6"C\e(B" . "\e$,15e6-\e(B")
991 ("\e$(6"E\e(B" . "\e$,15g6-\e(B")
992 ("\e$(6"F\e(B" . "\e$,15h6-\e(B")
993 ("\e$(6"G\e(B" . "\e$,15i6-\e(B")
994 ("\e$(6"H\e(B" . "\e$,15j6-\e(B")
995 ("\e$(6"I\e(B" . "\e$,15k6-\e(B")
996 ("\e$(6"J\e(B" . "\e$,15l6-\e(B")
997 ("\e$(6"J\e(B" . "\e$,15l6-\e(B")
998 ("\e$(6"K\e(B" . "\e$,15m6-\e(B")
999 ("\e$(6"L\e(B" . "\e$,15n6-\e(B")
1000 ("\e$(6"M\e(B" . "\e$,15o6-\e(B")
1001 ("\e$(6"N\e(B" . "\e$,16?6-\e(B")
1002 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1003 ;;2250 \e$(6"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_\e(B
1004 ("\e$(6"Q\e(B" . "\e$,15r6-\e(B")
1005 ("\e$(6"R\e(B" . "\e$,15s6-\e(B")
1006 ("\e$(6"S\e(B" . "\e$,15t6-\e(B")
1007 ("\e$(6"T\e(B" . "\e$,15u6-\e(B")
1008 ("\e$(6"U\e(B" . "\e$,15v6-\e(B")
1009 ("\e$(6"V\e(B" . "\e$,15w6-\e(B")
1010 ("\e$(6"W\e(B" . "\e$,15x6-\e(B")
1011 ("\e$(6"]\e(B" . "\e$,16-5o\e(B")
1012 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1013 ;;2260 \e$(6"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o\e(B
1014 ("\e$(6"`\e(B" . "\e$,15W6-5p6-\e(B")
1015 ("\e$(6"a\e(B" . "\e$,15X6-5h6-\e(B")
1016 ("\e$(6"c\e(B" . "\e$,15d6-5d6-\e(B")
1017 ("\e$(6"d\e(B" . "\e$,15d6-5p6-\e(B")
1018 ("\e$(6"e\e(B" . "\e$,15g6-5h6-\e(B")
1019 ("\e$(6"f\e(B" . "\e$,15g6-5p6-\e(B")
1020 ("\e$(6"g\e(B" . "\e$,15j6-5d6-\e(B")
1021 ("\e$(6"h\e(B" . "\e$,15v6-5Z6-\e(B")
1022 ("\e$(6"i\e(B" . "\e$,15v6-5p6-\e(B")
1023 ("\e$(6"j\e(B" . "\e$,15v6-5u6-\e(B")
1024 ("\e$(6"k\e(B" . "\e$,15h6-5h6-\e(B")
1025 ("\e$(6"l\e(B" . "\e$,15U6-5w6-\e(B")
1026 ("\e$(6"m\e(B" . "\e$,15\6-5^6-\e(B")
1027 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1028 ;;2270 \e$(6"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~\e(B
1029 ("\e$(6"p\e(B" . "\e$,15p6-\e(B")
1030 ("\e$(6"q\e(B" . "\e$,16-5p\e(B")
1031 ("\e$(6"r\e(B" . "\e$,16-5p\e(B")
1032 ("\e$(6"s\e(B" . "\e$,1686-\e(B")
1033 ("\e$(6"t\e(B" . "\e$,1696-\e(B")
1034 ("\e$(6"u\e(B" . "\e$,16:6-\e(B")
1035 ("\e$(6"y\e(B" . "\e$,16>6-\e(B")
1036 ("\e$(6"z\e(B" . "\e$,16;6-\e(B")
1037 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1038 ;;2320 \e$(6#!#"###$#%#&#'#(#)#*#+#,#-#.#/\e(B
1039 ("\e$(6#!\e(B" . "\e$,160\e(B")
1040 ("\e$(6#&\e(B" . "\e$,15L\e(B")
1041 ("\e$(6#&"p\e(B" . "\e$,15p6$\e(B")
1042 ("\e$(6#'\e(B" . "\e$,16A\e(B")
1043 ("\e$(6#'"p\e(B" . "\e$,15p6C\e(B")
1044 ("\e$(6#*\e(B" . "\e$,16@\e(B")
1045 ("\e$(6#*"p\e(B" . "\e$,15p6B\e(B")
1046 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1047 ;;2330 \e$(6#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?\e(B
1048 ("\e$(6#3\e(B" . "\e$,168\e(B")
1049 ("\e$(6#4\e(B" . "\e$,169\e(B")
1050 ("\e$(6#5\e(B" . "\e$,16:\e(B")
1051 ("\e$(6#:\e(B" . "\e$,16;\e(B")
1052 ("\e$(6#?\e(B" . "\e$,16<\e(B")
1053 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1054 ;;2340 \e$(6#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O\e(B
1055 ("\e$(6#@\e(B" . "\e$,16=\e(B")
1056 ("\e$(6#I\e(B" . "\e$,16>\e(B")
1057 ("\e$(6#J\e(B" . "\e$,15}\e(B")
1058 ("\e$(6#K\e(B" . "\e$,16$\e(B")
1059 ("\e$(6#L\e(B" . "\e$,16B\e(B")
1060 ("\e$(6#M\e(B" . "\e$,16C\e(B")
1061 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1062 ;;2350 \e$(6#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_\e(B
1063 ("\e$(6#P\e(B" . "\e$,15n6-5h\e(B")
1064 ("\e$(6#Q\e(B" . "\e$,15n6-5r\e(B")
1065 ("\e$(6#R\e(B" . "\e$,15y6#\e(B")
1066 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1067 ;;2360 \e$(6#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o\e(B
1068 ("\e$(6#`\e(B" . "\e$,15r6-5r\e(B")
1069 ("\e$(6#a\e(B" . "\e$,15u6-5h\e(B")
1070 ("\e$(6#b\e(B" . "\e$,15u6-5u\e(B")
1071 ("\e$(6#c\e(B" . "\e$,15v6-5Z\e(B")
1072 ("\e$(6#d\e(B" . "\e$,15v6-5h\e(B")
1073 ("\e$(6#e\e(B" . "\e$,15v6-5l\e(B")
1074 ("\e$(6#f\e(B" . "\e$,15v6-5r\e(B")
1075 ("\e$(6#g\e(B" . "\e$,15v6-5u\e(B")
1076 ("\e$(6#h\e(B" . "\e$,15w6-5_6-5p6-5o\e(B")
1077 ("\e$(6#i\e(B" . "\e$,15w6-5_6-5o\e(B")
1078 ("\e$(6#j\e(B" . "\e$,15w6-5_6-5u\e(B")
1079 ("\e$(6#k\e(B" . "\e$,15w6-5_\e(B")
1080 ("\e$(6#l\e(B" . "\e$,15w6-5`\e(B")
1081 ("\e$(6#m\e(B" . "\e$,15x6-5h\e(B")
1082 ("\e$(6#n\e(B" . "\e$,15x6-5p\e(B")
1083 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1084 ;;2370 \e$(6#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~\e(B
1085 ("\e$(6#p\e(B" . "\e$,15y6-5c\e(B")
1086 ("\e$(6#q\e(B" . "\e$,15y6-5h\e(B")
1087 ("\e$(6#r\e(B" . "\e$,15y6-5n\e(B")
1088 ("\e$(6#s\e(B" . "\e$,15y6-5o\e(B")
1089 ("\e$(6#t\e(B" . "\e$,15y6-5p\e(B")
1090 ("\e$(6#u\e(B" . "\e$,15y6-5r\e(B")
1091 ("\e$(6#v\e(B" . "\e$,15y6-5u\e(B")
1092 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1093 ;;2420 \e$(6$!$"$#$$$%$&$'$($)$*$+$,$-$.$/\e(B
1094 ("\e$(6$!\e(B" . "\e$,15U6-5d6-5p6-5o\e(B")
1095 ("\e$(6$"\e(B" . "\e$,15U6-5d6-5u\e(B")
1096 ("\e$(6$#\e(B" . "\e$,15U6-5d6-5o\e(B")
1097 ("\e$(6$$\e(B" . "\e$,15U6-5h6-5o\e(B")
1098 ("\e$(6$%\e(B" . "\e$,15U6-5p6-5o\e(B")
1099 ("\e$(6$&\e(B" . "\e$,15U6-5u6-5o\e(B")
1100 ("\e$(6$'\e(B" . "\e$,15U6-5U\e(B")
1101 ("\e$(6$(\e(B" . "\e$,15U6-5d\e(B")
1102 ("\e$(6$)\e(B" . "\e$,15U6-5h\e(B")
1103 ("\e$(6$*\e(B" . "\e$,15U6-5n\e(B")
1104 ("\e$(6$+\e(B" . "\e$,15U6-5o\e(B")
1105 ("\e$(6$,\e(B" . "\e$,15U6-5r\e(B")
1106 ("\e$(6$-\e(B" . "\e$,15U6-5u\e(B")
1107 ("\e$(6$.\e(B" . "\e$,15U6-5w\e(B")
1108 ("\e$(6$/\e(B" . "\e$,15X6-5h\e(B")
1109 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1110 ;;2430 \e$(6$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?\e(B
1111 ("\e$(6$0\e(B" . "\e$,15Y6-5U6-5d6-5o\e(B")
1112 ("\e$(6$1\e(B" . "\e$,15Y6-5U6-5w6-5u\e(B")
1113 ("\e$(6$2\e(B" . "\e$,15Y6-5U6-5d\e(B")
1114 ("\e$(6$3\e(B" . "\e$,15Y6-5U6-5w\e(B")
1115 ("\e$(6$4\e(B" . "\e$,15Y6-5X6-5p\e(B")
1116 ("\e$(6$5\e(B" . "\e$,15Y6-5U6-5o\e(B")
1117 ("\e$(6$6\e(B" . "\e$,15Y6-5V6-5o\e(B")
1118 ("\e$(6$7\e(B" . "\e$,15Y6-5W6-5o\e(B")
1119 ("\e$(6$8\e(B" . "\e$,15Y6-5X6-5o\e(B")
1120 ("\e$(6$9\e(B" . "\e$,15Y6-5U\e(B")
1121 ("\e$(6$:\e(B" . "\e$,15Y6-5V\e(B")
1122 ("\e$(6$;\e(B" . "\e$,15Y6-5W\e(B")
1123 ("\e$(6$<\e(B" . "\e$,15Y6-5X\e(B")
1124 ("\e$(6$=\e(B" . "\e$,15Y6-5Y\e(B")
1125 ("\e$(6$>\e(B" . "\e$,15Y6-5h\e(B")
1126 ("\e$(6$?\e(B" . "\e$,15Y6-5n\e(B")
1127 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1128 ;;2440 \e$(6$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O\e(B
1129 ("\e$(6$@\e(B" . "\e$,15Y6-5o\e(B")
1130 ("\e$(6$A\e(B" . "\e$,15Z6-5Z\e(B")
1131 ("\e$(6$B\e(B" . "\e$,15Z6-5^\e(B")
1132 ("\e$(6$C\e(B" . "\e$,15[6-5o\e(B")
1133 ("\e$(6$D\e(B" . "\e$,15\6-5p\e(B")
1134 ("\e$(6$E\e(B" . "\e$,15\6-5^\e(B")
1135 ("\e$(6$F\e(B" . "\e$,15^6-5Z\e(B")
1136 ("\e$(6$G\e(B" . "\e$,15^6-5\\e(B")
1137 ("\e$(6$H\e(B" . "\e$,15_6-5U\e(B")
1138 ("\e$(6$I\e(B" . "\e$,15_6-5_\e(B")
1139 ("\e$(6$J\e(B" . "\e$,15_6-5`\e(B")
1140 ("\e$(6$K\e(B" . "\e$,15_6-5o\e(B")
1141 ("\e$(6$L\e(B" . "\e$,15`6-5o\e(B")
1142 ("\e$(6$M\e(B" . "\e$,15a6-5W6-5o\e(B")
1143 ("\e$(6$N\e(B" . "\e$,15a6-5X6-5p\e(B")
1144 ("\e$(6$O\e(B" . "\e$,15a6-5p6-5o\e(B")
1145 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1146 ;;2450 \e$(6$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_\e(B
1147 ("\e$(6$P\e(B" . "\e$,15a6-5W\e(B")
1148 ("\e$(6$Q\e(B" . "\e$,15a6-5X\e(B")
1149 ("\e$(6$R\e(B" . "\e$,15a6-5a\e(B")
1150 ("\e$(6$S\e(B" . "\e$,15a6-5n\e(B")
1151 ("\e$(6$T\e(B" . "\e$,15a6-5o\e(B")
1152 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1153 ;;2460 \e$(6$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o\e(B
1154 ("\e$(6$`\e(B" . "\e$,15b6-5o\e(B")
1155 ("\e$(6$a\e(B" . "\e$,15d6-5d\e(B")
1156 ("\e$(6$b\e(B" . "\e$,15d6-5h\e(B")
1157 ("\e$(6$c\e(B" . "\e$,15f6-5f6-5o\e(B")
1158 ("\e$(6$d\e(B" . "\e$,15f6-5g6-5o\e(B")
1159 ("\e$(6$e\e(B" . "\e$,15f6-5m6-5o\e(B")
1160 ("\e$(6$f\e(B" . "\e$,15f6-5p6-5o\e(B")
1161 ("\e$(6$g\e(B" . "\e$,15f6-5u6-5o\e(B")
1162 ("\e$(6$h\e(B" . "\e$,15f6-5W6-5p\e(B")
1163 ("\e$(6$i\e(B" . "\e$,15f6-5X6-5p\e(B")
1164 ("\e$(6$j\e(B" . "\e$,15f6-5f6-5u\e(B")
1165 ("\e$(6$k\e(B" . "\e$,15f6-5g6-5u\e(B")
1166 ("\e$(6$l\e(B" . "\e$,15f6-5W\e(B")
1167 ("\e$(6$m\e(B" . "\e$,15f6-5X\e(B")
1168 ("\e$(6$n\e(B" . "\e$,15f6-5f\e(B")
1169 ("\e$(6$o\e(B" . "\e$,15f6-5g\e(B")
1170 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1171 ;;2470 \e$(6$p$q$r$s$t$u$v$w$x$y$z${$|$}$~\e(B
1172 ("\e$(6$p\e(B" . "\e$,15f6-5h\e(B")
1173 ("\e$(6$q\e(B" . "\e$,15f6-5l\e(B")
1174 ("\e$(6$r\e(B" . "\e$,15f6-5m\e(B")
1175 ("\e$(6$s\e(B" . "\e$,15f6-5n\e(B")
1176 ("\e$(6$t\e(B" . "\e$,15f6-5o\e(B")
1177 ("\e$(6$u\e(B" . "\e$,15f6-5u\e(B")
1178 ("\e$(6$v\e(B" . "\e$,15g6-5h\e(B")
1179 ("\e$(6$w\e(B" . "\e$,15h6-5h\e(B")
1180 ("\e$(6$x\e(B" . "\e$,15j6-5d\e(B")
1181 ("\e$(6$y\e(B" . "\e$,15j6-5h\e(B")
1182 ("\e$(6$z\e(B" . "\e$,15j6-5r\e(B")
1183 ("\e$(6${\e(B" . "\e$,15l6-5h\e(B")
1184 ("\e$(6$|\e(B" . "\e$,15l6-5l\e(B")
1185 ("\e$(6$}\e(B" . "\e$,15l6-5u\e(B")
1186 ("\e$(6$~\e(B" . "\e$,15m6-5h\e(B")))
1188 (defconst indian-2-column-to-ucs-regexp
1189 "\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]")
1191 (put 'indian-2-column-to-ucs-chartable 'char-table-extra-slots 1)
1192 (defconst indian-2-column-to-ucs-chartable
1193 (let ((table (make-char-table 'indian-2-column-to-ucs-chartable))
1194 (alist nil))
1195 (dolist (elt indian-2-colum-to-ucs)
1196 (if (= (length (car elt)) 1)
1197 (aset table (aref (car elt) 0) (cdr elt))
1198 (setq alist (cons elt alist))))
1199 (set-char-table-extra-slot table 0 alist)
1200 table))
1202 ;;;###autoload
1203 (defun indian-2-column-to-ucs-region (from to)
1204 "Convert old Emacs Devanagari characters to UCS."
1205 (interactive "r")
1206 (save-excursion
1207 (save-restriction
1208 (let ((pos from)
1209 (alist (char-table-extra-slot indian-2-column-to-ucs-chartable 0)))
1210 (narrow-to-region from to)
1211 (decompose-region from to)
1212 (goto-char (point-min))
1213 (while (re-search-forward indian-2-column-to-ucs-regexp nil t)
1214 (let ((len (- (match-end 0) (match-beginning 0)))
1215 subst)
1216 (if (= len 1)
1217 (setq subst (aref indian-2-column-to-ucs-chartable
1218 (char-after (match-beginning 0))))
1219 (setq subst (cdr (assoc (match-string 0) alist))))
1220 (replace-match (if subst subst "?"))))
1221 (indian-compose-region (point-min) (point-max))))))
1223 (provide 'ind-util)
1225 ;; arch-tag: 59aacd71-46c2-4cb3-bb26-e12bbad55545
1226 ;;; ind-util.el ends here