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, or (at your option)
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; see the file COPYING. If not, write to the
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24 ;; Boston, MA 02110-1301, USA.
28 ;; This file provides conversion between UCS and various
29 ;; transliteration schemes, such as ITRANS, kyoto-harvard and aiba
30 ;; methods. It also provides conversion between IS 13194 and UCS.
31 ;; Finally, this program provides the compatibility support with
32 ;; old implementation of Devanagari script.
38 ;; The followings provide the various transliteration schemes (such as
39 ;; ITRANS, kyoto-harvard, and Aiba) of Indian scripts. They are also
40 ;; used in quail/indian.el for typing Indian script in Emacs.
44 (defun indian-regexp-of-hashtbl-keys (hashtbl)
45 "Returns the regular expression of hashtable keys."
47 (maphash (lambda (key val
) (push key keys
)) hashtbl
)
50 (defvar indian-dev-base-table
53 (?
\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)
54 (?\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)
55 (?\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))
56 (;; CONSONANTS (currently 42, including special cases)
57 ?\e$,15U\e(B ?\e$,15V\e(B ?\e$,15W\e(B ?\e$,15X\e(B ?\e$,15Y\e(B ;; GUTTRULS
58 ?\e$,15Z\e(B ?\e$,15[\e(B ?\e$,15\\e(B ?\e$,15]\e(B ?\e$,15^\e(B ;; PALATALS
59 ?\e$,15_\e(B ?\e$,15`\e(B ?\e$,15a\e(B ?\e$,15b\e(B ?\e$,15c\e(B ;; CEREBRALS
60 ?\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
61 ?\e$,15j\e(B ?\e$,15k\e(B ?\e$,15l\e(B ?\e$,15m\e(B ?\e$,15n\e(B ;; LABIALS
62 ?\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
63 ?\e$,15v\e(B ?\e$,15w\e(B ?\e$,15x\e(B ?\e$,15y\e(B ;; SIBILANTS
64 ?\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
65 "\e$
,15\
6-
5^
\e(B" "\e$
,15U6-
5w
\e(B")
67 ?\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)
69 ?\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)
70 (;; Inscript-extra (4) (#, $, ^, *, ])
71 "\e$
,16-
5p
\e(B" "\e$
,15p6-
\e(B" "\e$
,15d6-5p
\e(B" "\e$
,15v6-5p
\e(B" "\e$
,15|
\e(B")))
73 ;; Punjabi is also known as Gurmukhi.
74 (defvar indian-pnj-base-table
77 (?\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)
78 nil nil nil nil (?\e$,18/\e(B ?\e$,18g\e(B) (?\e$,180\e(B ?\e$,18h\e(B)
79 nil nil (?\e$,183\e(B ?\e$,18k\e(B) (?\e$,184\e(B ?\e$,18l\e(B) nil nil)
81 ?\e$,185\e(B ?\e$,186\e(B ?\e$,187\e(B ?\e$,188\e(B ?\e$,189\e(B ;; GUTTRULS
82 ?\e$,18:\e(B ?\e$,18;\e(B ?\e$,18<\e(B ?\e$,18=\e(B ?\e$,18>\e(B ;; PALATALS
83 ?\e$,18?\e(B ?\e$,18@\e(B ?\e$,18A\e(B ?\e$,18B\e(B ?\e$,18C\e(B ;; CEREBRALS
84 ?\e$,18D\e(B ?\e$,18E\e(B ?\e$,18F\e(B ?\e$,18G\e(B ?\e$,18H\e(B nil ;; DENTALS
85 ?\e$,18J\e(B ?\e$,18K\e(B ?\e$,18L\e(B ?\e$,18M\e(B ?\e$,18N\e(B ;; LABIALS
86 ?\e$,18O\e(B ?\e$,18P\e(B nil ?\e$,18R\e(B ?\e$,18S\e(B nil ?\e$,18U\e(B ;; SEMIVOWELS
87 ?\e$,18V\e(B nil ?\e$,18X\e(B ?\e$,18Y\e(B ;; SIBILANTS
88 nil ?\e$,18y\e(B ?\e$,18z\e(B ?\e$,18{\e(B ?\e$,18|\e(B nil ?\e$,18~\e(B nil ;; NUKTAS
89 "\e$
,18<8m8
>\e(B" nil)
91 nil ?\e$,18"\e(B nil nil ?
\e$
,18m
\e(B nil nil
) ;; ek onkar, etc.
93 ?
\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)
94 (;; Inscript-extra (4) (#, $, ^, *, ])
95 "\e$,18m8P\e(B" "\e$,18P8m\e(B" "\e$,18D8m8P\e(B" "\e$,18V8m8P\e(B" "\e$,18\\e(B")))
97 (defvar indian-gjr-base-table
100 (?
\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)
101 (?\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)
102 (?\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)
104 ?\e$,19U\e(B ?\e$,19V\e(B ?\e$,19W\e(B ?\e$,19X\e(B ?\e$,19Y\e(B ;; GUTTRULS
105 ?\e$,19Z\e(B ?\e$,19[\e(B ?\e$,19\\e(B ?\e$,19]\e(B ?\e$,19^\e(B ;; PALATALS
106 ?\e$,19_\e(B ?\e$,19`\e(B ?\e$,19a\e(B ?\e$,19b\e(B ?\e$,19c\e(B ;; CEREBRALS
107 ?\e$,19d\e(B ?\e$,19e\e(B ?\e$,19f\e(B ?\e$,19g\e(B ?\e$,19h\e(B nil ;; DENTALS
108 ?\e$,19j\e(B ?\e$,19k\e(B ?\e$,19l\e(B ?\e$,19m\e(B ?\e$,19n\e(B ;; LABIALS
109 ?\e$,19o\e(B ?\e$,19p\e(B nil ?\e$,19r\e(B ?\e$,19s\e(B nil ?\e$,19u\e(B ;; SEMIVOWELS
110 ?\e$,19v\e(B ?\e$,19w\e(B ?\e$,19x\e(B ?\e$,19y\e(B ;; SIBILANTS
111 nil nil nil nil nil nil nil nil ;; NUKTAS
112 "\e$
,19\
:-
9^
\e(B" "\e$
,19U:-
9w
\e(B")
114 ?\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)
116 ?\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)
117 (;; Inscript-extra (4) (#, $, ^, *, ])
118 "\e$
,1:-
9p
\e(B" "\e$
,19p
:-
\e(B" "\e$
,19d
:-
9p
\e(B" "\e$
,19v
:-
9p
\e(B" "\e$
,19|
\e(B")))
120 (defvar indian-ori-base-table
123 (?\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)
124 (?\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)
125 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))
127 ?\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
128 ?\e$,1:z\e(B ?\e$,1:{\e(B ?\e$,1:|\e(B ?\e$,1:}\e(B ?\e$,1:~\e(B ;; PALATALS
129 ?\e$,1:\x7f\e(B ?\e$,1; \e(B ?\e$,1;!\e(B ?\e$,1;"\e(B ?
\e$
,1;#\e(B ;; CEREBRALS
130 ?
\e$
,1;$\e(B ?\e$,1;%\e(B ?\e$,1;&\e(B ?\e$,1;'\e(B ?\e$,1;(\e(B nil ;; DENTALS
131 ?
\e$
,1;*\e(B ?\e$,1;+\e(B ?\e$,1;,\e(B ?\e$,1;-\e(B ?\e$,1;.\e(B ;; LABIALS
132 ?
\e$
,1;/\e(B ?\e$,1;0\e(B nil ?\e$,1;2\e(B ?\e$,1;3\e(B nil nil ;; SEMIVOWELS
133 ?
\e$
,1;6\e(B ?\e$,1;7\e(B ?\e$,1;8\e(B ?\e$,1;9\e(B ;; SIBILANTS
134 nil nil nil nil ?
\e$
,1;\\e(B ?\e$,1;]\e(B nil ?\e$,1;_\e(B ;; NUKTAS
135 "\e$,1:|;M:~\e(B" "\e$,1:u;M;7\e(B")
137 ?
\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)
139 ?
\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)
140 (;; Inscript-extra (4) (#, $, ^, *, ])
141 "\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")))
143 (defvar indian-bng-base-table
146 (?
\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)
147 (?
\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)
148 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))
150 ?
\e$
,16u\e(B ?
\e$
,16v
\e(B ?
\e$
,16w
\e(B ?
\e$
,16x
\e(B ?
\e$
,16y
\e(B ;; GUTTRULS
151 ?
\e$
,16z
\e(B ?
\e$
,16{\e(B ?
\e$
,16|
\e(B ?
\e$
,16}\e(B ?
\e$
,16~
\e(B ;; PALATALS
152 ?
\e$
,16\x7f\e(B ?
\e$
,17 \e(B ?
\e$
,17!\e(B ?
\e$
,17"\e(B ?\e$,17#\e(B ;; CEREBRALS
153 ?\e$,17$\e(B ?\e$,17%\e(B ?\e$,17&\e(B ?\e$,17'\e(B ?\e$,17(\e(B nil ;; DENTALS
154 ?\e$,17*\e(B ?\e$,17+\e(B ?\e$,17,\e(B ?\e$,17-\e(B ?\e$,17.\e(B ;; LABIALS
155 ?\e$,17/\e(B ?\e$,170\e(B nil ?\e$,172\e(B nil nil nil ;; SEMIVOWELS
156 ?\e$,176\e(B ?\e$,177\e(B ?\e$,178\e(B ?\e$,179\e(B ;; SIBILANTS
157 nil nil nil nil ?\e$,17\\e(B ?\e$,17]\e(B nil ?\e$,17_\e(B ;; NUKTAS
158 "\e$
,16|
7M6~
\e(B" "\e$
,16u7M
77\e(B")
160 ?\e$,16a\e(B ?\e$,16b\e(B ?\e$,16c\e(B nil ?\e$,17M\e(B nil nil)
162 ?\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)
163 (;; Inscript-extra (4) (#, $, ^, *, ])
164 "\e$
,17M70
\e(B" "\e$
,1707M
\e(B" "\e$
,17$
7M70
\e(B" "\e$
,1767M70
\e(B" "\e$
,17<\e(B")))
166 (defvar indian-asm-base-table
169 (?\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)
170 (?\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)
171 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))
173 ?\e$,16u\e(B ?\e$,16v\e(B ?\e$,16w\e(B ?\e$,16x\e(B ?\e$,16y\e(B ;; GUTTRULS
174 ?\e$,16z\e(B ?\e$,16{\e(B ?\e$,16|\e(B ?\e$,16}\e(B ?\e$,16~\e(B ;; PALATALS
175 ?\e$,16\x7f\e(B ?\e$,17 \e(B ?\e$,17!\e(B ?\e$,17"\e(B ?
\e$
,17#\e(B ;; CEREBRALS
176 ?
\e$
,17$
\e(B ?
\e$
,17%
\e(B ?
\e$
,17&\e(B ?
\e$
,17'\e(B ?
\e$
,17(\e(B nil
;; DENTALS
177 ?
\e$
,17*\e(B ?
\e$
,17+\e(B ?
\e$
,17,\e(B ?
\e$
,17-
\e(B ?
\e$
,17.
\e(B ;; LABIALS
178 ?
\e$
,17/\e(B ?
\e$
,17p
\e(B nil ?
\e$
,172\e(B nil nil ?
\e$
,17q
\e(B ;; SEMIVOWELS
179 ?
\e$
,176\e(B ?
\e$
,177\e(B ?
\e$
,178\e(B ?
\e$
,179\e(B ;; SIBILANTS
180 nil nil nil nil ?
\e$
,17\
\e(B ?
\e$
,17]\e(B nil ?
\e$
,17_
\e(B ;; NUKTAS
181 "\e$,16|7M6~\e(B" "\e$,16u7M77\e(B")
183 ?
\e$
,16a
\e(B ?
\e$
,16b
\e(B ?
\e$
,16c
\e(B nil ?
\e$
,17M
\e(B nil nil
)
185 ?
\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)
186 (;; Inscript-extra (4) (#, $, ^, *, ])
187 "\e$,17M7p\e(B" "\e$,17p7M\e(B" "\e$,17$7M7p\e(B" "\e$,1767M7p\e(B" "\e$,17<\e(B")))
189 (defvar indian-tlg-base-table
192 (?
\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)
193 (?\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)
194 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))
196 ?\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
197 ?\e$,1=Z\e(B ?\e$,1=[\e(B ?\e$,1=\\e(B ?\e$,1=]\e(B ?\e$,1=^\e(B ;; PALATALS
198 ?\e$,1=_\e(B ?\e$,1=`\e(B ?\e$,1=a\e(B ?\e$,1=b\e(B ?\e$,1=c\e(B ;; CEREBRALS
199 ?\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
200 ?\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
201 ?\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
202 ?\e$,1=v\e(B ?\e$,1=w\e(B ?\e$,1=x\e(B ?\e$,1=y\e(B ;; SIBILANTS
203 nil nil nil nil nil nil nil nil ;; NUKTAS
204 "\e$
,1=\
>-
=^
\e(B" "\e$
,1=U
>-
=w
\e(B")
206 ?\e$,1=A\e(B ?\e$,1=B\e(B ?\e$,1=C\e(B nil ?\e$,1>-\e(B nil nil)
208 ?\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)
209 (;; Inscript-extra (4) (#, $, ^, *, ])
210 "\e$
,1>-
=p
\e(B" "\e$
,1=p
>-
\e(B" "\e$
,1=d
>-
=p
\e(B" "\e$
,1=v
>-
=p
\e(B" nil)))
212 (defvar indian-knd-base-table
215 (?\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)
216 (?\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)
217 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))
219 ?\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
220 ?\e$,1>z\e(B ?\e$,1>{\e(B ?\e$,1>|\e(B ?\e$,1>}\e(B ?\e$,1>~\e(B ;; PALATALS
221 ?\e$,1>\x7f\e(B ?\e$,1? \e(B ?\e$,1?!\e(B ?\e$,1?"\e(B ?
\e$
,1?
#\e(B ;; CEREBRALS
222 ?
\e$
,1?$
\e(B ?
\e$
,1?%
\e(B ?
\e$
,1?
&\e(B ?
\e$
,1?
'\e(B ?
\e$
,1?
(\e(B nil
;; DENTALS
223 ?
\e$
,1?
*\e(B ?
\e$
,1?
+\e(B ?
\e$
,1?
,\e(B ?
\e$
,1?-
\e(B ?
\e$
,1?.
\e(B ;; LABIALS
224 ?
\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
225 ?
\e$
,1?
6\e(B ?
\e$
,1?
7\e(B ?
\e$
,1?
8\e(B ?
\e$
,1?
9\e(B ;; SIBILANTS
226 nil nil nil nil nil nil ?
\e$
,1?^
\e(B nil
;; NUKTAS
227 "\e$,1>|?M>~\e(B" "\e$,1>u?M?7\e(B")
229 nil ?
\e$
,1>b
\e(B ?
\e$
,1>c
\e(B nil ?
\e$
,1?M
\e(B nil nil
)
231 ?
\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)
232 (;; Inscript-extra (4) (#, $, ^, *, ])
233 "\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
)))
235 (defvar indian-mlm-base-table
238 (?
\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)
239 (?
\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)
240 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
)
242 ?
\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
243 ?
\e$
,1@:\e(B ?
\e$
,1@;\e(B ?\e$,1@<\e(B ?\e$,1@=\e(B ?\e$,1@>\e(B ;; PALATALS
244 ?
\e$
,1@?
\e(B ?
\e$
,1@@\e(B ?
\e$
,1@A
\e(B ?
\e$
,1@B
\e(B ?
\e$
,1@C
\e(B ;; CEREBRALS
245 ?
\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
246 ?
\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
247 ?
\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
248 ?
\e$
,1@V
\e(B ?
\e$
,1@W
\e(B ?
\e$
,1@X
\e(B ?
\e$
,1@Y
\e(B ;; SIBILANTS
249 nil nil nil nil nil nil nil nil
;; NUKTAS
250 "\e$,1@<@m@>\e(B" "\e$,1@5@m@W\e(B")
252 nil ?
\e$
,1@"\e(B ?\e$,1@#\e(B nil ?\e$,1@m\e(B nil nil)
254 ?\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)
255 (;; Inscript-extra (4) (#, $, ^, *, ])
256 "\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)))
258 (defvar indian-tml-base-table
261 (?\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)
262 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)
263 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)
265 ?\e$,1<5\e(B nil nil nil ?\e$,1<9\e(B ;; GUTTRULS
266 ?\e$,1<:\e(B nil ?\e$,1<<\e(B nil ?\e$,1<>\e(B ;; PALATALS
267 ?\e$,1<?\e(B nil nil nil ?\e$,1<C\e(B ;; CEREBRALS
268 ?\e$,1<D\e(B nil nil nil ?\e$,1<H\e(B ?\e$,1<I\e(B ;; DENTALS
269 ?\e$,1<J\e(B nil nil nil ?\e$,1<N\e(B ;; LABIALS
270 ?\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
271 nil ?\e$,1<W\e(B ?\e$,1<X\e(B ?\e$,1<Y\e(B ;; SIBILANTS
272 nil nil nil nil nil nil nil nil ;; NUKTAS
273 "\e$
,1<<<m
<>\e(B" "\e$
,1<5<m
<W
\e(B")
275 nil ?\e$,1<"\e(B ?
\e$
,1<#\e(B nil ?
\e$
,1<m
\e(B nil nil
)
277 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)
278 (;; Inscript-extra (4) (#, $, ^, *, ])
279 "\e$,1<m<P\e(B" "\e$,1<P<m\e(B" "\e$,1<D<m<P\e(B" nil nil
)))
281 (defvar indian-base-table-to-language-alist
282 '((indian-dev-base-table .
"Devanagari")
283 (indian-pnj-base-table .
"Punjabi")
284 (indian-ori-base-table .
"Oriya")
285 (indian-bng-base-table .
"Bengali")
286 (indian-asm-base-table .
"Assamese")
287 (indian-tlg-base-table .
"Telugu")
288 (indian-knd-base-table .
"Kannada")
289 (indian-mlm-base-table .
"Malayalam")
290 (indian-tml-base-table .
"Tamil")))
292 (defvar indian-itrans-v5-table
293 '(;; for encode/decode
295 "a" ("aa" "A") "i" ("ii" "I") "u" ("uu" "U")
296 ("RRi" "R^i") ("LLi" "L^i") (".c" "e.c") "E" "e" "ai"
297 "o.c" "O" "o" "au" ("RRI" "R^I") ("LLI" "L^I"))
299 "k" "kh" "g" "gh" ("~N" "N^")
300 "ch" ("Ch" "chh") "j" "jh" ("~n" "JN")
301 "T" "Th" "D" "Dh" "N"
302 "t" "th" "d" "dh" "n" "nh"
303 "p" "ph" "b" "bh" "m"
304 "y" "r" "rh" "l" ("L" "ld") nil
("v" "w")
305 "sh" ("Sh" "shh") "s" "h"
306 "q" "K" "G" ("J" "z") ".D" ".Dh" "f" ("Y" "yh")
309 ".N" (".n" "M") "H" ".a" ".h" ("AUM" "OM") "..")))
311 (defvar indian-kyoto-harvard-table
312 '(;; for encode/decode
314 "a" ("A" "aa") "i" ("I" "ii") "u" ("U" "uu")
315 "R" ("L" "lR") nil nil
"e" "ai"
316 nil nil
"o" "au" ("q" "RR" "Q") ("E" "LL" "lRR"))
318 "k" "kh" "g" "gh" "G"
319 "c" "ch" "j" "jh" "J"
320 "T" "Th" "D" "Dh" "N"
321 "t" "th" "d" "dh" "n" nil
322 "p" "ph" "b" "bh" "m"
323 "y" "r" nil
"l" "L" nil
"v"
324 ("z" "Z") "S" "s" "h"
325 nil nil nil nil nil nil nil nil
328 nil
"M" "H" "'" nil
"." nil
)))
330 (defvar indian-harvard-table
331 '(;; for encode/decode
333 "a" ("A" "aa") "i" ("I" "ii") "u" ("U" "uu")
334 "R" ("L" "lR") nil nil
"e" "ai"
335 nil nil
"o" "au" ("RR" "q" "Q") ("LL" "E" "lRR"))
337 "k" "kh" "g" "gh" "G"
338 "c" "ch" "j" "jh" "J"
339 "T" "Th" "D" "Dh" "N"
340 "t" "th" "d" "dh" "n" nil
341 "p" "ph" "b" "bh" "m"
342 "y" "r" nil
"l" "L" nil
"v"
343 ("z" "Z") "S" "s" "h"
344 nil nil nil nil nil nil nil nil
347 nil
"M" "H" "'" nil
"." nil
)))
349 (defvar indian-tokyo-table
350 '(;; for encode/decode
352 "a" ("A" "aa") "i" ("I" "ii") "u" ("U" "uu")
353 "R" ("L" "lR") nil nil
"e" "ai"
354 nil nil
"o" "au" ("Q" "RR" "q") ("E" "LL" "lRR"))
356 "k" "kh" "g" "gh" "G"
357 "c" "ch" "j" "jh" "J"
358 "T" "Th" "D" "Dh" "N"
359 "t" "th" "d" "dh" "n" nil
360 "p" "ph" "b" "bh" "m"
361 "y" "r" nil
"l" "L" nil
"v"
362 ("Z" "z") "S" "s" "h"
363 nil nil nil nil nil nil nil nil
366 nil
"M" "H" "'" nil
"." nil
)))
368 (defvar indian-aiba-table
369 '(;; for encode/decode
371 "a" "aa" "i" "ii" "u" "uu"
372 ".r" ".l" nil nil
"e" "ai"
373 nil nil
"o" "au" "~r" "~l")
375 "k" "kh" "g" "gh" "^n"
376 "c" "ch" "j" "jh" "~n"
377 ".t" ".th" ".d" ".dh" ".n"
378 "t" "th" "d" "dh" "n" nil
379 "p" "ph" "b" "bh" "m"
380 "y" "r" nil
"l" nil nil
"v"
382 nil nil nil nil nil nil nil nil
385 nil
".m" ".h" "'" nil
"." nil
)))
387 (defun mapthread (function seq1
&rest seqrest
)
388 "Apply FUNCTION to each element of SEQ1 and return result list.
389 If there are several SEQRESTs, FUNCTION is called with that many
390 arguments, with all possible combinations of these multiple SEQUENCES.
391 Thus, if SEQ1 contains 3 elements and SEQ2 contains 5 elements, then
392 FUNCTION will be called 15 times."
398 `(lambda (&rest y
) (apply ',function x y
))
401 (mapcar function seq1
)))
403 (defun indian--puthash-char (char trans-char hashtbls
)
404 (let ((encode-hash (car hashtbls
)) ;; char -> trans
405 (decode-hash (cdr hashtbls
)) ;; trans -> char
407 ;; char -- nil / char / string (/ list of vowel & matra)
408 ;; trans-char -- nil / string / list of strings
409 (when (and char trans-char
)
410 (if (stringp trans-char
) (setq trans-char
(list trans-char
)))
411 (if (char-valid-p char
) (setq char
(char-to-string char
)))
412 (puthash char
(car trans-char
) encode-hash
)
413 (dolist (trans trans-char
)
414 (puthash trans char decode-hash
)))))
416 (defun indian--map (f l1 l2
)
418 (funcall f
(pop l1
) (pop l2
))))
420 (defun indian--puthash-v (v trans-v hashtbls
)
423 (indian--puthash-char (car v
) trans-v hashtbls
))
426 (defun indian--puthash-c (c trans-c halant hashtbls
)
429 (if (char-valid-p c
) (setq c
(char-to-string c
)))
430 (indian--puthash-char (concat c halant
) trans-c hashtbls
))
433 (defun indian--puthash-m (m trans-m hashtbls
)
436 (indian--puthash-char m trans-m hashtbls
))
439 (defun indian--puthash-cv (c trans-c v trans-v hashtbls
)
444 (when (and c trans-c v trans-v
)
445 (if (char-valid-p c
) (setq c
(char-to-string c
)))
446 (setq v
(if (char-valid-p (cadr v
)) (char-to-string (cadr v
)) ""))
447 (if (stringp trans-c
) (setq trans-c
(list trans-c
)))
448 (if (stringp trans-v
) (setq trans-v
(list trans-v
)))
449 (indian--puthash-char
452 (mapthread 'concat trans-c trans-v
))
457 (defun indian-make-hash (table trans-table
)
458 "Indian Transliteration Hash for decode/encode"
459 (let* ((encode-hash (make-hash-table :test
'equal
))
460 (decode-hash (make-hash-table :test
'equal
))
461 (hashtbls (cons encode-hash decode-hash
))
462 (vowels (elt table
0))
463 (consonants (elt table
1))
465 (digits (elt table
3))
466 (halant (char-to-string (elt misc
4)))
467 (trans-vowels (elt trans-table
0))
468 (trans-consonants (elt trans-table
1))
469 (trans-misc (elt trans-table
2))
470 (trans-digits '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")))
471 (indian--puthash-v vowels trans-vowels hashtbls
)
472 (indian--puthash-c consonants trans-consonants halant hashtbls
)
473 (indian--puthash-cv consonants trans-consonants
474 vowels trans-vowels hashtbls
)
475 (indian--puthash-m misc trans-misc hashtbls
)
476 (indian--puthash-m digits trans-digits hashtbls
)
479 (defvar indian-dev-itrans-v5-hash
480 (indian-make-hash indian-dev-base-table
481 indian-itrans-v5-table
))
482 (defvar indian-dev-kyoto-harvard-hash
483 (indian-make-hash indian-dev-base-table
484 indian-kyoto-harvard-table
))
485 (defvar indian-dev-aiba-hash
486 (indian-make-hash indian-dev-base-table
489 (defvar indian-pnj-itrans-v5-hash
490 (indian-make-hash indian-pnj-base-table
491 indian-itrans-v5-table
))
493 (defvar indian-gjr-itrans-v5-hash
494 (indian-make-hash indian-gjr-base-table
495 indian-itrans-v5-table
))
497 (defvar indian-ori-itrans-v5-hash
498 (indian-make-hash indian-ori-base-table
499 indian-itrans-v5-table
))
501 (defvar indian-bng-itrans-v5-hash
502 (indian-make-hash indian-bng-base-table
503 indian-itrans-v5-table
))
505 (defvar indian-asm-itrans-v5-hash
506 (indian-make-hash indian-asm-base-table
507 indian-itrans-v5-table
))
509 (defvar indian-tlg-itrans-v5-hash
510 (indian-make-hash indian-tlg-base-table
511 indian-itrans-v5-table
))
513 (defvar indian-knd-itrans-v5-hash
514 (indian-make-hash indian-knd-base-table
515 indian-itrans-v5-table
))
517 (defvar indian-mlm-itrans-v5-hash
518 (indian-make-hash indian-mlm-base-table
519 indian-itrans-v5-table
))
521 (defvar indian-tml-itrans-v5-hash
522 (indian-make-hash indian-tml-base-table
523 indian-itrans-v5-table
))
526 (defmacro indian-translate-region
(from to hashtable encode-p
)
529 (let ((regexp ,(indian-regexp-of-hashtbl-keys
530 (if encode-p
(car (eval hashtable
))
531 (cdr (eval hashtable
))))))
532 (narrow-to-region from to
)
533 (goto-char (point-min))
534 (while (re-search-forward regexp nil t
)
535 (let ((matchstr (gethash (match-string 0)
539 (if matchstr
(replace-match matchstr
))))))))
543 (defun indian-dev-itrans-v5-encode-region (from to
)
545 (indian-translate-region
546 from to indian-dev-itrans-v5-hash t
))
548 (defun indian-dev-itrans-v5-decode-region (from to
)
550 (indian-translate-region
551 from to indian-dev-itrans-v5-hash nil
))
553 (defun indian-dev-kyoto-harvard-encode-region (from to
)
555 (indian-translate-region
556 from to indian-dev-kyoto-harvard-hash t
))
558 (defun indian-dev-kyoto-harvard-decode-region (from to
)
560 (indian-translate-region
561 from to indian-dev-kyoto-harvard-hash nil
))
563 (defun indian-dev-aiba-encode-region (from to
)
565 (indian-translate-region
566 from to indian-dev-aiba-hash t
))
568 (defun indian-dev-aiba-decode-region (from to
)
570 (indian-translate-region
571 from to indian-dev-aiba-hash nil
))
576 ;;; IS 13194 utilities
578 ;; The followings provide conversion between IS 13194 (ISCII) and UCS.
580 (defvar ucs-devanagari-to-is13194-alist
581 '(;;Unicode vs IS13194 ;; only Devanagari is supported now.
582 (?
\x0900 .
"[U+0900]")
583 (?
\x0901 .
"\e(5!\e(B")
584 (?
\x0902 .
"\e(5"\e(B")
585 (?\x0903 . "\e(5#\e(B")
586 (?\x0904 . "[U
+0904]")
587 (?\x0905 . "\e(5$
\e(B")
588 (?\x0906 . "\e(5%
\e(B")
589 (?\x0907 . "\e(5&\e(B")
590 (?\x0908 . "\e(5'\e(B")
591 (?\x0909 . "\e(5(\e(B")
592 (?\x090a . "\e(5)\e(B")
593 (?\x090b . "\e(5*\e(B")
594 (?\x090c . "\e(5&i
\e(B")
595 (?\x090d . "\e(5.
\e(B")
596 (?\x090e . "\e(5+\e(B")
597 (?\x090f . "\e(5,\e(B")
598 (?\x0910 . "\e(5-\e(B")
599 (?\x0911 . "\e(52\e(B")
600 (?\x0912 . "\e(5/\e(B")
601 (?\x0913 . "\e(50\e(B")
602 (?\x0914 . "\e(51\e(B")
603 (?\x0915 . "\e(53\e(B")
604 (?\x0916 . "\e(54\e(B")
605 (?\x0917 . "\e(55\e(B")
606 (?\x0918 . "\e(56\e(B")
607 (?\x0919 . "\e(57\e(B")
608 (?\x091a . "\e(58\e(B")
609 (?\x091b . "\e(59\e(B")
610 (?\x091c . "\e(5:\e(B")
611 (?\x091d . "\e(5;\e(B")
612 (?
\x091e .
"\e(5<\e(B")
613 (?
\x091f .
"\e(5=\e(B")
614 (?
\x0920 .
"\e(5>\e(B")
615 (?
\x0921 .
"\e(5?\e(B")
616 (?
\x0922 .
"\e(5@\e(B")
617 (?
\x0923 .
"\e(5A\e(B")
618 (?
\x0924 .
"\e(5B\e(B")
619 (?
\x0925 .
"\e(5C\e(B")
620 (?
\x0926 .
"\e(5D\e(B")
621 (?
\x0927 .
"\e(5E\e(B")
622 (?
\x0928 .
"\e(5F\e(B")
623 (?
\x0929 .
"\e(5G\e(B")
624 (?
\x092a .
"\e(5H\e(B")
625 (?
\x092b .
"\e(5I\e(B")
626 (?
\x092c .
"\e(5J\e(B")
627 (?
\x092d .
"\e(5K\e(B")
628 (?
\x092e .
"\e(5L\e(B")
629 (?
\x092f .
"\e(5M\e(B")
630 (?
\x0930 .
"\e(5O\e(B")
631 (?
\x0931 .
"\e(5P\e(B")
632 (?
\x0932 .
"\e(5Q\e(B")
633 (?
\x0933 .
"\e(5R\e(B")
634 (?
\x0934 .
"\e(5S\e(B")
635 (?
\x0935 .
"\e(5T\e(B")
636 (?
\x0936 .
"\e(5U\e(B")
637 (?
\x0937 .
"\e(5V\e(B")
638 (?
\x0938 .
"\e(5W\e(B")
639 (?
\x0939 .
"\e(5X\e(B")
640 (?
\x093a .
"[U+093a]")
641 (?
\x093b .
"[U+093b]")
642 (?
\x093c .
"\e(5i\e(B")
643 (?
\x093d .
"\e(5ji\e(B")
644 (?
\x093e .
"\e(5Z\e(B")
645 (?
\x093f .
"\e(5[\e(B")
646 (?
\x0940 .
"\e(5\\e(B")
647 (?
\x0941 .
"\e(5]\e(B")
648 (?
\x0942 .
"\e(5^\e(B")
649 (?
\x0943 .
"\e(5_\e(B")
650 (?
\x0944 .
"\e(5_i\e(B")
651 (?
\x0945 .
"\e(5c\e(B")
652 (?
\x0946 .
"\e(5`\e(B")
653 (?
\x0947 .
"\e(5a\e(B")
654 (?
\x0948 .
"\e(5b\e(B")
655 (?
\x0949 .
"\e(5g\e(B")
656 (?
\x094a .
"\e(5d\e(B")
657 (?
\x094b .
"\e(5e\e(B")
658 (?
\x094c .
"\e(5f\e(B")
659 (?
\x094d .
"\e(5h\e(B")
660 (?
\x094e .
"[U+094e]")
661 (?
\x094f .
"[U+094f]")
662 (?
\x0950 .
"\e(5!i\e(B")
663 (?
\x0951 .
"\e(5p5\e(B")
664 (?
\x0952 .
"\e(5p8\e(B")
665 (?
\x0953 .
"[DEVANAGARI GRAVE ACCENT]")
666 (?
\x0954 .
"[DEVANAGARI ACUTE ACCENT]")
667 (?
\x0955 .
"[U+0955]")
668 (?
\x0956 .
"[U+0956]")
669 (?
\x0957 .
"[U+0957]")
670 (?
\x0958 .
"\e(53i\e(B")
671 (?
\x0959 .
"\e(54i\e(B")
672 (?
\x095a .
"\e(55i\e(B")
673 (?
\x095b .
"\e(5:i\e(B")
674 (?
\x095c .
"\e(5?i\e(B")
675 (?
\x095d .
"\e(5@i\e(B")
676 (?
\x095e .
"\e(5Ii\e(B")
677 (?
\x095f .
"\e(5N\e(B")
678 (?
\x0960 .
"\e(5*i\e(B")
679 (?
\x0961 .
"\e(5'i\e(B")
680 (?
\x0962 .
"\e(5[i\e(B")
681 (?
\x0963 .
"\e(5ei\e(B")
682 (?
\x0964 .
"\e(5j\e(B")
683 (?
\x0965 .
"\e(5jj\e(B")
684 (?
\x0966 .
"\e(5q\e(B")
685 (?
\x0967 .
"\e(5r\e(B")
686 (?
\x0968 .
"\e(5s\e(B")
687 (?
\x0969 .
"\e(5t\e(B")
688 (?
\x096a .
"\e(5u\e(B")
689 (?
\x096b .
"\e(5v\e(B")
690 (?
\x096c .
"\e(5w\e(B")
691 (?
\x096d .
"\e(5x\e(B")
692 (?
\x096e .
"\e(5y\e(B")
693 (?
\x096f .
"\e(5z\e(B")
694 (?
\x0970 .
"[U+0970]")
695 (?
\x0971 .
"[U+0971]")
696 (?
\x0972 .
"[U+0972]")
697 (?
\x0973 .
"[U+0973]")
698 (?
\x0974 .
"[U+0974]")
699 (?
\x0975 .
"[U+0975]")
700 (?
\x0976 .
"[U+0976]")
701 (?
\x0977 .
"[U+0977]")
702 (?
\x0978 .
"[U+0978]")
703 (?
\x0979 .
"[U+0979]")
704 (?
\x097a .
"[U+097a]")
705 (?
\x097b .
"[U+097b]")
706 (?
\x097c .
"[U+097c]")
707 (?
\x097d .
"[U+097d]")
708 (?
\x097e .
"[U+097e]")
709 (?
\x097f .
"[U+097f]")))
711 (defvar ucs-bengali-to-is13194-alist nil
)
712 (defvar ucs-assamese-to-is13194-alist nil
)
713 (defvar ucs-gurmukhi-to-is13194-alist nil
)
714 (defvar ucs-gujarati-to-is13194-alist nil
)
715 (defvar ucs-oriya-to-is13194-alist nil
)
716 (defvar ucs-tamil-to-is13194-alist nil
)
717 (defvar ucs-telugu-to-is13194-alist nil
)
718 (defvar ucs-malayalam-to-is13194-alist nil
)
719 (defvar ucs-kannada-to-is13194-alist nil
)
721 (defvar is13194-default-repartory
'devanagari
)
723 (defvar is13194-repertory-to-ucs-script
724 `((DEF ?
\x40 ,is13194-default-repartory
)
725 (RMN ?
\x41 ,is13194-default-repartory
)
726 (DEV ?
\x42 devanagari
)
733 (MLM ?
\x49 malayalam
)
735 (PNJ ?
\x4b gurmukhi
)))
737 ;; for guiding find-variable function.
738 (defvar is13194-to-ucs-devanagari-hashtbl nil
)
739 (defvar is13194-to-ucs-devanagari-regexp nil
)
740 (defvar is13194-to-ucs-bengali-hashtbl nil
)
741 (defvar is13194-to-ucs-bengali-regexp nil
)
742 (defvar is13194-to-ucs-assamese-hashtbl nil
)
743 (defvar is13194-to-ucs-assamese-regexp nil
)
744 (defvar is13194-to-ucs-gurmukhi-hashtbl nil
)
745 (defvar is13194-to-ucs-gurmukhi-regexp nil
)
746 (defvar is13194-to-ucs-gujarati-hashtbl nil
)
747 (defvar is13194-to-ucs-gujarati-regexp nil
)
748 (defvar is13194-to-ucs-oriya-hashtbl nil
)
749 (defvar is13194-to-ucs-oriya-regexp nil
)
750 (defvar is13194-to-ucs-tamil-hashtbl nil
)
751 (defvar is13194-to-ucs-tamil-regexp nil
)
752 (defvar is13194-to-ucs-telugu-hashtbl nil
)
753 (defvar is13194-to-ucs-telugu-regexp nil
)
754 (defvar is13194-to-ucs-malayalam-hashtbl nil
)
755 (defvar is13194-to-ucs-malayalam-regexp nil
)
756 (defvar is13194-to-ucs-kannada-hashtbl nil
)
757 (defvar is13194-to-ucs-kannada-regexp nil
)
760 (function (lambda (script)
761 (let ((hashtable (intern (concat "is13194-to-ucs-"
762 (symbol-name script
) "-hashtbl" )))
763 (regexp (intern (concat "is13194-to-ucs-"
764 (symbol-name script
) "-regexp"))))
765 (set hashtable
(make-hash-table :test
'equal
:size
128))
767 (function (lambda (x)
768 (put-char-code-property (decode-char 'ucs
(car x
))
770 (put-char-code-property (decode-char 'ucs
(car x
))
772 (puthash (cdr x
) (char-to-string (decode-char 'ucs
(car x
)))
774 (eval (intern (concat "ucs-" (symbol-name script
)
775 "-to-is13194-alist"))))
776 (set regexp
(indian-regexp-of-hashtbl-keys (eval hashtable
))))))
777 '(devanagari bengali assamese gurmukhi gujarati
778 oriya tamil telugu malayalam kannada
))
780 (defvar ucs-to-is13194-regexp
781 ;; only Devanagari is supported now.
782 (concat "[" (char-to-string (decode-char 'ucs
#x0900
))
783 "-" (char-to-string (decode-char 'ucs
#x097f
)) "]")
784 "Regexp that matches to conversion")
786 (defun ucs-to-iscii-region (from to
)
787 "Converts the indian UCS characters in the region to ISCII.
788 Returns new end position."
790 ;; only Devanagari is supported now.
793 (narrow-to-region from to
)
794 (goto-char (point-min))
795 (let* ((current-repertory is13194-default-repartory
))
796 (while (re-search-forward ucs-to-is13194-regexp nil t
)
798 (get-char-code-property (string-to-char (match-string 0))
802 (defun iscii-to-ucs-region (from to
)
803 "Converts the ISCII characters in the region to UCS.
804 Returns new end position."
806 ;; only Devanagari is supported now.
809 (narrow-to-region from to
)
810 (goto-char (point-min))
811 (let* ((current-repertory is13194-default-repartory
)
813 (intern (concat "is13194-to-ucs-"
814 (symbol-name current-repertory
) "-hashtbl")))
816 (intern (concat "is13194-to-ucs-"
817 (symbol-name current-repertory
) "-regexp"))))
818 (while (re-search-forward (eval current-regexp
) nil t
)
820 (gethash (match-string 0) (eval current-hashtable
) ""))))
824 (defun indian-compose-region (from to
)
825 "Compose the region according to `composition-function-table'."
829 (let ((pos from
) chars
(max to
))
830 (narrow-to-region from to
)
832 (setq chars
(compose-chars-after pos
))
833 (if chars
(setq pos
(+ pos chars
)) (setq pos
(1+ pos
))))))))
836 (defun indian-compose-string (string)
839 (indian-compose-region (point-min) (point-max))
843 (defun in-is13194-post-read-conversion (len)
844 (let ((pos (point)) endpos
)
845 (setq endpos
(iscii-to-ucs-region pos
(+ pos len
)))
846 (indian-compose-region pos endpos
)
850 (defun in-is13194-pre-write-conversion (from to
)
851 (let ((buf (current-buffer)))
852 (set-buffer (generate-new-buffer " *temp*"))
855 (insert-buffer-substring buf from to
))
856 (ucs-to-iscii-region (point-min) (point-max))
862 ;;; Backward Compatibility support programs
864 ;; The followings provides the conversion from old-implementation of
865 ;; Emacs Devanagari script to UCS.
867 (defconst indian-2-colum-to-ucs
869 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
870 ;;2120 \e$(5!!!"!#!$!%!&!'!(!)!*!+!,!-!.!/\e(B
871 ("\e$(5!!\e(B" .
"\e$,15A\e(B")
872 ("\e$(5!"\e(B" . "\e$
,15B
\e(B")
873 ("\e$
(5!#\e(B" . "\e$
,15C
\e(B")
874 ("\e$
(5!$
\e(B" . "\e$
,15E
\e(B")
875 ("\e$
(5!%
\e(B" . "\e$
,15F
\e(B")
876 ("\e$
(5!&\e(B" . "\e$
,15G
\e(B")
877 ("\e$
(5!'\e(B" . "\e$
,15H
\e(B")
878 ("\e$
(5!(\e(B" . "\e$
,15I
\e(B")
879 ("\e$
(5!)\e(B" . "\e$
,15J
\e(B")
880 ("\e$
(5!*\e(B" . "\e$
,15K
\e(B")
881 ("\e$
(5!*"p\e(B" .
"\e$,15p6#\e(B")
882 ("\e$(5!+\e(B" .
"\e$,15N\e(B")
883 ("\e$(5!,\e(B" .
"\e$,15O\e(B")
884 ("\e$(5!-\e(B" .
"\e$,15P\e(B")
885 ("\e$(5!.\e(B" .
"\e$,15M\e(B")
886 ("\e$(5!/\e(B" .
"\e$,15R\e(B")
887 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
888 ;;2130 \e$(5!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?\e(B
889 ("\e$(5!0\e(B" .
"\e$,15S\e(B")
890 ("\e$(5!1\e(B" .
"\e$,15T\e(B")
891 ("\e$(5!2\e(B" .
"\e$,15Q\e(B")
892 ("\e$(5!3\e(B" .
"\e$,15U\e(B")
893 ("\e$(5!4\e(B" .
"\e$,15V\e(B")
894 ("\e$(5!5\e(B" .
"\e$,15W\e(B")
895 ("\e$(5!6\e(B" .
"\e$,15X\e(B")
896 ("\e$(5!7\e(B" .
"\e$,15Y\e(B")
897 ("\e$(5!8\e(B" .
"\e$,15Z\e(B")
898 ("\e$(5!9\e(B" .
"\e$,15[\e(B")
899 ("\e$(5!:\e(B" .
"\e$,15\\e(B")
900 ("\e$(5!;\e(B" .
"\e$,15]\e(B")
901 ("\e$(5!<\e(B" .
"\e$,15^\e(B")
902 ("\e$(5!=\e(B" .
"\e$,15_\e(B")
903 ("\e$(5!>\e(B" .
"\e$,15`\e(B")
904 ("\e$(5!?\e(B" .
"\e$,15a\e(B")
905 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
906 ;;2140 \e$(5!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O\e(B
907 ("\e$(5!@\e(B" .
"\e$,15b\e(B")
908 ("\e$(5!A\e(B" .
"\e$,15c\e(B")
909 ("\e$(5!B\e(B" .
"\e$,15d\e(B")
910 ("\e$(5!C\e(B" .
"\e$,15e\e(B")
911 ("\e$(5!D\e(B" .
"\e$,15f\e(B")
912 ("\e$(5!E\e(B" .
"\e$,15g\e(B")
913 ("\e$(5!F\e(B" .
"\e$,15h\e(B")
914 ("\e$(5!G\e(B" .
"\e$,15i\e(B")
915 ("\e$(5!H\e(B" .
"\e$,15j\e(B")
916 ("\e$(5!I\e(B" .
"\e$,15k\e(B")
917 ("\e$(5!J\e(B" .
"\e$,15l\e(B")
918 ("\e$(5!K\e(B" .
"\e$,15m\e(B")
919 ("\e$(5!L\e(B" .
"\e$,15n\e(B")
920 ("\e$(5!M\e(B" .
"\e$,15o\e(B")
921 ("\e$(5!N\e(B" .
"\e$,16?\e(B")
922 ("\e$(5!O\e(B" .
"\e$,15p\e(B")
923 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
924 ;;2150 \e$(5!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_\e(B
925 ("\e$(5!P\e(B" .
"\e$,15q\e(B")
926 ("\e$(5!Q\e(B" .
"\e$,15r\e(B")
927 ("\e$(5!R\e(B" .
"\e$,15s\e(B")
928 ("\e$(5!S\e(B" .
"\e$,15t\e(B")
929 ("\e$(5!T\e(B" .
"\e$,15u\e(B")
930 ("\e$(5!U\e(B" .
"\e$,15v\e(B")
931 ("\e$(5!V\e(B" .
"\e$,15w\e(B")
932 ("\e$(5!W\e(B" .
"\e$,15x\e(B")
933 ("\e$(5!X\e(B" .
"\e$,15y\e(B")
934 ("\e$(5!Z\e(B" .
"\e$,15~\e(B")
935 ("\e$(5![\e(B" .
"\e$,15\x7f\e(B")
936 ("\e$(5!\\e(B" .
"\e$,16 \e(B")
937 ("\e$(5!]\e(B" .
"\e$,16!\e(B")
938 ("\e$(5!^\e(B" .
"\e$,16"\e(B")
939 ("\e$
(5!_
\e(B" . "\e$
,16#\e(B")
940 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
941 ;;2160 \e$(5!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o\e(B
942 ("\e$
(5!`\e(B" . "\e$
,16&\e(B")
943 ("\e$
(5!a
\e(B" . "\e$
,16'\e(B")
944 ("\e$
(5!b
\e(B" . "\e$
,16(\e(B")
945 ("\e$
(5!c
\e(B" . "\e$
,16%
\e(B")
946 ("\e$
(5!d
\e(B" . "\e$
,16*\e(B")
947 ("\e$
(5!e
\e(B" . "\e$
,16+\e(B")
948 ("\e$
(5!f
\e(B" . "\e$
,16,\e(B")
949 ("\e$
(5!g
\e(B" . "\e$
,16)\e(B")
950 ("\e$
(5!h
\e(B" . "\e$
,16-
\e(B")
951 ("\e$
(5!i
\e(B" . "\e$
,15|
\e(B")
952 ("\e$
(5!j
\e(B" . "\e$
,16D
\e(B")
953 ("\e$
(5!j
!j
\e(B" . "\e$
,16E
\e(B")
954 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
955 ;;2170 \e$(5!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~\e(B
956 ("\e$
(5!q
\e(B" . "\e$
,16F
\e(B")
957 ("\e$
(5!r
\e(B" . "\e$
,16G
\e(B")
958 ("\e$
(5!s
\e(B" . "\e$
,16H
\e(B")
959 ("\e$
(5!t
\e(B" . "\e$
,16I
\e(B")
960 ("\e$
(5!u
\e(B" . "\e$
,16J
\e(B")
961 ("\e$
(5!v
\e(B" . "\e$
,16K
\e(B")
962 ("\e$
(5!w
\e(B" . "\e$
,16L\e(B")
963 ("\e$
(5!x
\e(B" . "\e$
,16M
\e(B")
964 ("\e$
(5!y
\e(B" . "\e$
,16N
\e(B")
965 ("\e$
(5!z
\e(B" . "\e$
,16O
\e(B")
966 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
967 ;;2220 \e$(5"!"""#"$
"%"&"'"(")"*"+","-".
"/\e(B
968 ("\e$
(5"!\e(B" .
"\e$,16;6-5p\e(B")
969 ("\e$(5""\e(B" .
"\e$,16>6-5p\e(B")
970 ("\e$(5"#\e(B" . "\e$
,15U6-
5p
\e(B")
971 ("\e$
(5"$\e(B" .
"\e$,15W6-5p\e(B")
972 ("\e$(5"%
\e(B" . "\e$
,15d6-5p
\e(B")
973 ("\e$
(5"&\e(B" .
"\e$,15j6-5p\e(B")
974 ("\e$(5"'\e(B" . "\e$
,15k6-5p
\e(B")
975 ("\e$
(5")\e(B" .
"\e$,15v6-5p\e(B")
976 ("\e$(5",\e(B" . "\e$
,15p6
!\e(B")
977 ("\e$
(5"-\e(B" .
"\e$,15p6"\e(B")
978 ("\e$
(5".\e(B" .
"\e$,15q6!\e(B")
979 ("\e$(5"/\e(B" . "\e$
,15q6
"\e(B")
980 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
981 ;;2230 \e$(5"0"1"2"3"4"5"6"7"8"9":";"<"=">"?\e(B
982 ("\e$(5"3\e(B" . "\e$
,15U6-
\e(B")
983 ("\e$
(5"4\e(B" .
"\e$,15V6-\e(B")
984 ("\e$(5"5\e(B" . "\e$
,15W6-
\e(B")
985 ("\e$
(5"6\e(B" .
"\e$,15X6-\e(B")
986 ("\e$(5"8\e(B" . "\e$
,15Z6-
\e(B")
987 ("\e$
(5"8"q
\e(B" . "\e$
,15Z6-5p6-
\e(B")
988 ("\e$
(5":\e(B" .
"\e$,15\6-\e(B")
989 ("\e$(5";\e(B" . "\e$,15]6-\e(B")
990 ("\e$(5"<\e(B" . "\e$
,15^
6-
\e(B")
991 ("\e$
(5"<\e(B" .
"\e$,15^6-\e(B")
992 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
993 ;;2240 \e$(5"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O\e(B
994 ("\e$(5"A
\e(B" . "\e$
,15c6-
\e(B")
995 ("\e$
(5"B\e(B" .
"\e$,15d6-\e(B")
996 ("\e$(5"C
\e(B" . "\e$
,15e6-
\e(B")
997 ("\e$
(5"E\e(B" .
"\e$,15g6-\e(B")
998 ("\e$(5"F
\e(B" . "\e$
,15h6-
\e(B")
999 ("\e$
(5"G\e(B" .
"\e$,15i6-\e(B")
1000 ("\e$(5"H
\e(B" . "\e$
,15j6-
\e(B")
1001 ("\e$
(5"I\e(B" .
"\e$,15k6-\e(B")
1002 ("\e$(5"J
\e(B" . "\e$
,15l6-
\e(B")
1003 ("\e$
(5"J\e(B" .
"\e$,15l6-\e(B")
1004 ("\e$(5"K
\e(B" . "\e$
,15m6-
\e(B")
1005 ("\e$
(5"L\e(B" .
"\e$,15n6-\e(B")
1006 ("\e$(5"M
\e(B" . "\e$
,15o6-
\e(B")
1007 ("\e$
(5"N\e(B" .
"\e$,16?6-\e(B")
1008 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1009 ;;2250 \e$(5"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_\e(B
1010 ("\e$(5"Q
\e(B" . "\e$
,15r6-
\e(B")
1011 ("\e$
(5"R\e(B" .
"\e$,15s6-\e(B")
1012 ("\e$(5"S
\e(B" . "\e$
,15t6-
\e(B")
1013 ("\e$
(5"T\e(B" .
"\e$,15u6-\e(B")
1014 ("\e$(5"U
\e(B" . "\e$
,15v6-
\e(B")
1015 ("\e$
(5"V\e(B" .
"\e$,15w6-\e(B")
1016 ("\e$(5"W
\e(B" . "\e$
,15x6-
\e(B")
1017 ("\e$
(5"]\e(B" .
"\e$,16-5o\e(B")
1018 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1019 ;;2260 \e$(5"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o\e(B
1020 ("\e$(5"`\e(B" . "\e$
,15W6-5p6-
\e(B")
1021 ("\e$
(5"a\e(B" .
"\e$,15X6-5h6-\e(B")
1022 ("\e$(5"c
\e(B" . "\e$
,15d6-5d6-
\e(B")
1023 ("\e$
(5"d\e(B" .
"\e$,15d6-5p6-\e(B")
1024 ("\e$(5"e
\e(B" . "\e$
,15g6-5h6-
\e(B")
1025 ("\e$
(5"f\e(B" .
"\e$,15g6-5p6-\e(B")
1026 ("\e$(5"g
\e(B" . "\e$
,15j6-5d6-
\e(B")
1027 ("\e$
(5"h\e(B" .
"\e$,15v6-5Z6-\e(B")
1028 ("\e$(5"i
\e(B" . "\e$
,15v6-5p6-
\e(B")
1029 ("\e$
(5"j\e(B" .
"\e$,15v6-5u6-\e(B")
1030 ("\e$(5"k
\e(B" . "\e$
,15h6-5h6-
\e(B")
1031 ("\e$
(5"l\e(B" .
"\e$,15U6-5w6-\e(B")
1032 ("\e$(5"m
\e(B" . "\e$
,15\
6-
5^
6-
\e(B")
1033 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1034 ;;2270 \e$(5"p
"q"r
"s"t
"u"v
"w"x
"y"z
"{"|
"}"~
\e(B
1035 ("\e$(5"p
\e(B" . "\e$
,15p6-
\e(B")
1036 ("\e$
(5"q\e(B" .
"\e$,16-5p\e(B")
1037 ("\e$(5"r
\e(B" . "\e$
,16-
5p
\e(B")
1038 ("\e$
(5"s\e(B" .
"\e$,1686-\e(B")
1039 ("\e$(5"t
\e(B" . "\e$
,1696-
\e(B")
1040 ("\e$
(5"u\e(B" .
"\e$,16:6-\e(B")
1041 ("\e$(5"y
\e(B" . "\e$
,16>6-
\e(B")
1042 ("\e$
(5"z\e(B" .
"\e$,16;6-\e(B")
1043 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1044 ;;2320 \e$(5#!#"###$#%#&#'#(#)#*#+#,#-#.#/\e(B
1045 ("\e$(5#!\e(B" .
"\e$,160\e(B")
1046 ("\e$(5#&\e(B" .
"\e$,15L\e(B")
1047 ("\e$(5#&"p
\e(B" . "\e$
,15p6$
\e(B")
1048 ("\e$
(5#'\e(B" . "\e$
,16A
\e(B")
1049 ("\e$
(5#'"p\e(B" .
"\e$,15p6C\e(B")
1050 ("\e$(5#*\e(B" .
"\e$,16@\e(B")
1051 ("\e$(5#*"p
\e(B" . "\e$
,15p6B
\e(B")
1052 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1053 ;;2330 \e$(5#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?\e(B
1054 ("\e$
(5#3\e(B" . "\e$
,168\e(B")
1055 ("\e$
(5#4\e(B" . "\e$
,169\e(B")
1056 ("\e$
(5#5\e(B" . "\e$
,16:\e(B")
1057 ("\e$
(5#:\e(B" . "\e$
,16;\e(B")
1058 ("\e$(5#?\e(B" .
"\e$,16<\e(B")
1059 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1060 ;;2340 \e$(5#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O\e(B
1061 ("\e$(5#@\e(B" .
"\e$,16=\e(B")
1062 ("\e$(5#I\e(B" .
"\e$,16>\e(B")
1063 ("\e$(5#J\e(B" .
"\e$,15}\e(B")
1064 ("\e$(5#K\e(B" .
"\e$,16$\e(B")
1065 ("\e$(5#L\e(B" .
"\e$,16B\e(B")
1066 ("\e$(5#M\e(B" .
"\e$,16C\e(B")
1067 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1068 ;;2350 \e$(5#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_\e(B
1069 ("\e$(5#P\e(B" .
"\e$,15n6-5h\e(B")
1070 ("\e$(5#Q\e(B" .
"\e$,15n6-5r\e(B")
1071 ("\e$(5#R\e(B" .
"\e$,15y6#\e(B")
1072 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1073 ;;2360 \e$(5#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o\e(B
1074 ("\e$(5#`\e(B" .
"\e$,15r6-5r\e(B")
1075 ("\e$(5#a\e(B" .
"\e$,15u6-5h\e(B")
1076 ("\e$(5#b\e(B" .
"\e$,15u6-5u\e(B")
1077 ("\e$(5#c\e(B" .
"\e$,15v6-5Z\e(B")
1078 ("\e$(5#d\e(B" .
"\e$,15v6-5h\e(B")
1079 ("\e$(5#e\e(B" .
"\e$,15v6-5l\e(B")
1080 ("\e$(5#f\e(B" .
"\e$,15v6-5r\e(B")
1081 ("\e$(5#g\e(B" .
"\e$,15v6-5u\e(B")
1082 ("\e$(5#h\e(B" .
"\e$,15w6-5_6-5p6-5o\e(B")
1083 ("\e$(5#i\e(B" .
"\e$,15w6-5_6-5o\e(B")
1084 ("\e$(5#j\e(B" .
"\e$,15w6-5_6-5u\e(B")
1085 ("\e$(5#k\e(B" .
"\e$,15w6-5_\e(B")
1086 ("\e$(5#l\e(B" .
"\e$,15w6-5`\e(B")
1087 ("\e$(5#m\e(B" .
"\e$,15x6-5h\e(B")
1088 ("\e$(5#n\e(B" .
"\e$,15x6-5p\e(B")
1089 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1090 ;;2370 \e$(5#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~\e(B
1091 ("\e$(5#p\e(B" .
"\e$,15y6-5c\e(B")
1092 ("\e$(5#q\e(B" .
"\e$,15y6-5h\e(B")
1093 ("\e$(5#r\e(B" .
"\e$,15y6-5n\e(B")
1094 ("\e$(5#s\e(B" .
"\e$,15y6-5o\e(B")
1095 ("\e$(5#t\e(B" .
"\e$,15y6-5p\e(B")
1096 ("\e$(5#u\e(B" .
"\e$,15y6-5r\e(B")
1097 ("\e$(5#v\e(B" .
"\e$,15y6-5u\e(B")
1098 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1099 ;;2420 \e$(5$!$"$#$$$%$&$'$($)$*$+$,$-$.$/\e(B
1100 ("\e$(5$!\e(B" .
"\e$,15U6-5d6-5p6-5o\e(B")
1101 ("\e$(5$"\e(B" . "\e$
,15U6-
5d
6-
5u\e(B")
1102 ("\e$
(5$
#\e(B" . "\e$
,15U6-
5d
6-
5o
\e(B")
1103 ("\e$
(5$$
\e(B" . "\e$
,15U6-
5h
6-
5o
\e(B")
1104 ("\e$
(5$%
\e(B" . "\e$
,15U6-
5p
6-
5o
\e(B")
1105 ("\e$
(5$
&\e(B" . "\e$
,15U6-
5u6-
5o
\e(B")
1106 ("\e$
(5$
'\e(B" . "\e$
,15U6-
5U\e(B")
1107 ("\e$
(5$
(\e(B" . "\e$
,15U6-
5d
\e(B")
1108 ("\e$
(5$
)\e(B" . "\e$
,15U6-
5h
\e(B")
1109 ("\e$
(5$
*\e(B" . "\e$
,15U6-
5n
\e(B")
1110 ("\e$
(5$
+\e(B" . "\e$
,15U6-
5o
\e(B")
1111 ("\e$
(5$
,\e(B" . "\e$
,15U6-
5r
\e(B")
1112 ("\e$
(5$-
\e(B" . "\e$
,15U6-
5u\e(B")
1113 ("\e$
(5$.
\e(B" . "\e$
,15U6-
5w
\e(B")
1114 ("\e$
(5$
/\e(B" . "\e$
,15X6-5h
\e(B")
1115 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1116 ;;2430 \e$(5$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?\e(B
1117 ("\e$
(5$
0\e(B" . "\e$
,15Y6-5U6-5d6-5o
\e(B")
1118 ("\e$
(5$
1\e(B" . "\e$
,15Y6-5U6-5w6-5u
\e(B")
1119 ("\e$
(5$
2\e(B" . "\e$
,15Y6-5U6-5d
\e(B")
1120 ("\e$
(5$
3\e(B" . "\e$
,15Y6-5U6-5w
\e(B")
1121 ("\e$
(5$
4\e(B" . "\e$
,15Y6-5X6-5p
\e(B")
1122 ("\e$
(5$
5\e(B" . "\e$
,15Y6-5U6-5o
\e(B")
1123 ("\e$
(5$
6\e(B" . "\e$
,15Y6-5V6-5o
\e(B")
1124 ("\e$
(5$
7\e(B" . "\e$
,15Y6-5W6-5o
\e(B")
1125 ("\e$
(5$
8\e(B" . "\e$
,15Y6-5X6-5o
\e(B")
1126 ("\e$
(5$
9\e(B" . "\e$
,15Y6-5U
\e(B")
1127 ("\e$
(5$
:\e(B" . "\e$
,15Y6-5V
\e(B")
1128 ("\e$
(5$
;\e(B" . "\e$,15Y6-5W\e(B")
1129 ("\e$(5$<\e(B" .
"\e$,15Y6-5X\e(B")
1130 ("\e$(5$=\e(B" .
"\e$,15Y6-5Y\e(B")
1131 ("\e$(5$>\e(B" .
"\e$,15Y6-5h\e(B")
1132 ("\e$(5$?\e(B" .
"\e$,15Y6-5n\e(B")
1133 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1134 ;;2440 \e$(5$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O\e(B
1135 ("\e$(5$@\e(B" .
"\e$,15Y6-5o\e(B")
1136 ("\e$(5$A\e(B" .
"\e$,15Z6-5Z\e(B")
1137 ("\e$(5$B\e(B" .
"\e$,15Z6-5^\e(B")
1138 ("\e$(5$C\e(B" .
"\e$,15[6-5o\e(B")
1139 ("\e$(5$D\e(B" .
"\e$,15\6-5p\e(B")
1140 ("\e$(5$E\e(B" .
"\e$,15\6-5^\e(B")
1141 ("\e$(5$F\e(B" .
"\e$,15^6-5Z\e(B")
1142 ("\e$(5$G\e(B" .
"\e$,15^6-5\\e(B")
1143 ("\e$(5$H\e(B" .
"\e$,15_6-5U\e(B")
1144 ("\e$(5$I\e(B" .
"\e$,15_6-5_\e(B")
1145 ("\e$(5$J\e(B" .
"\e$,15_6-5`\e(B")
1146 ("\e$(5$K\e(B" .
"\e$,15_6-5o\e(B")
1147 ("\e$(5$L\e(B" .
"\e$,15`6-5o\e(B")
1148 ("\e$(5$M\e(B" .
"\e$,15a6-5W6-5o\e(B")
1149 ("\e$(5$N\e(B" .
"\e$,15a6-5X6-5p\e(B")
1150 ("\e$(5$O\e(B" .
"\e$,15a6-5p6-5o\e(B")
1151 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1152 ;;2450 \e$(5$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_\e(B
1153 ("\e$(5$P\e(B" .
"\e$,15a6-5W\e(B")
1154 ("\e$(5$Q\e(B" .
"\e$,15a6-5X\e(B")
1155 ("\e$(5$R\e(B" .
"\e$,15a6-5a\e(B")
1156 ("\e$(5$S\e(B" .
"\e$,15a6-5n\e(B")
1157 ("\e$(5$T\e(B" .
"\e$,15a6-5o\e(B")
1158 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1159 ;;2460 \e$(5$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o\e(B
1160 ("\e$(5$`\e(B" .
"\e$,15b6-5o\e(B")
1161 ("\e$(5$a\e(B" .
"\e$,15d6-5d\e(B")
1162 ("\e$(5$b\e(B" .
"\e$,15d6-5h\e(B")
1163 ("\e$(5$c\e(B" .
"\e$,15f6-5f6-5o\e(B")
1164 ("\e$(5$d\e(B" .
"\e$,15f6-5g6-5o\e(B")
1165 ("\e$(5$e\e(B" .
"\e$,15f6-5m6-5o\e(B")
1166 ("\e$(5$f\e(B" .
"\e$,15f6-5p6-5o\e(B")
1167 ("\e$(5$g\e(B" .
"\e$,15f6-5u6-5o\e(B")
1168 ("\e$(5$h\e(B" .
"\e$,15f6-5W6-5p\e(B")
1169 ("\e$(5$i\e(B" .
"\e$,15f6-5X6-5p\e(B")
1170 ("\e$(5$j\e(B" .
"\e$,15f6-5f6-5u\e(B")
1171 ("\e$(5$k\e(B" .
"\e$,15f6-5g6-5u\e(B")
1172 ("\e$(5$l\e(B" .
"\e$,15f6-5W\e(B")
1173 ("\e$(5$m\e(B" .
"\e$,15f6-5X\e(B")
1174 ("\e$(5$n\e(B" .
"\e$,15f6-5f\e(B")
1175 ("\e$(5$o\e(B" .
"\e$,15f6-5g\e(B")
1176 ;; 0 1 2 3 4 5 6 7 8 9 a b c d e f
1177 ;;2470 \e$(5$p$q$r$s$t$u$v$w$x$y$z${$|$}$~\e(B
1178 ("\e$(5$p\e(B" .
"\e$,15f6-5h\e(B")
1179 ("\e$(5$q\e(B" .
"\e$,15f6-5l\e(B")
1180 ("\e$(5$r\e(B" .
"\e$,15f6-5m\e(B")
1181 ("\e$(5$s\e(B" .
"\e$,15f6-5n\e(B")
1182 ("\e$(5$t\e(B" .
"\e$,15f6-5o\e(B")
1183 ("\e$(5$u\e(B" .
"\e$,15f6-5u\e(B")
1184 ("\e$(5$v\e(B" .
"\e$,15g6-5h\e(B")
1185 ("\e$(5$w\e(B" .
"\e$,15h6-5h\e(B")
1186 ("\e$(5$x\e(B" .
"\e$,15j6-5d\e(B")
1187 ("\e$(5$y\e(B" .
"\e$,15j6-5h\e(B")
1188 ("\e$(5$z\e(B" .
"\e$,15j6-5r\e(B")
1189 ("\e$(5${\e(B" .
"\e$,15l6-5h\e(B")
1190 ("\e$(5$|\e(B" .
"\e$,15l6-5l\e(B")
1191 ("\e$(5$}\e(B" .
"\e$,15l6-5u\e(B")
1192 ("\e$(5$~\e(B" .
"\e$,15m6-5h\e(B")))
1194 (defconst indian-2-column-to-ucs-regexp
1195 "\e$(5!j!j\e(B\\|\e$(5"8"q\e(B\\|[\e$(5#&#'!*#*\e(B]\e$(5"p
\e(B\\|
[\e$
(5!!\e(B-\e$
(5$~
\e(B]")
1197 (put 'indian-2-column-to-ucs-chartable 'char-table-extra-slots 1)
1198 (defconst indian-2-column-to-ucs-chartable
1199 (let ((table (make-char-table 'indian-2-column-to-ucs-chartable))
1201 (dolist (elt indian-2-colum-to-ucs)
1202 (if (= (length (car elt)) 1)
1203 (aset table (aref (car elt) 0) (cdr elt))
1204 (setq alist (cons elt alist))))
1205 (set-char-table-extra-slot table 0 alist)
1208 (defun indian-2-column-to-ucs-region (from to)
1209 "Convert old Emacs Devanagari characters to UCS.
"
1214 (alist (char-table-extra-slot indian-2-column-to-ucs-chartable 0)))
1215 (narrow-to-region from to)
1216 (decompose-region from to)
1217 (goto-char (point-min))
1218 (while (re-search-forward indian-2-column-to-ucs-regexp nil t)
1219 (let ((len (- (match-end 0) (match-beginning 0)))
1222 (setq subst (aref indian-2-column-to-ucs-chartable
1223 (char-after (match-beginning 0))))
1224 (setq subst (cdr (assoc (match-string 0) alist))))
1225 (replace-match (if subst subst "?
"))))
1226 (indian-compose-region (point-min) (point-max))))))
1229 (defun indian-glyph-char (index &optional script)
1230 "Return character of charset
`indian-glyph
' made from glyph index INDEX.
1231 The variable
`indian-default-script
' specifies the script of the glyph.
1232 Optional argument SCRIPT
, if non-nil
, overrides
`indian-default-script
'.
1233 See also the function
`indian-char-glyph
'.
"
1235 (setq script indian-default-script))
1236 (let ((offset (get script 'indian-glyph-code-offset)))
1237 (or (integerp offset)
1238 (error "Invalid script name
: %s
" script))
1239 (or (and (>= index 0) (< index 256))
1240 (error "Invalid glyph index
: %d
" index))
1241 (setq index (+ offset index))
1242 (make-char 'indian-glyph (+ (/ index 96) 32) (+ (% index 96) 32))))
1244 (defvar indian-glyph-max-char
1246 255 (aref indian-script-table (1- (length indian-script-table))))
1247 "The maximum valid code of characters in the charset
`indian-glyph
'.
")
1250 (defun indian-char-glyph (char)
1251 "Return information about the glyph code for CHAR of
`indian-glyph
' charset.
1252 The value is
(INDEX . SCRIPT
), where INDEX is the glyph index
1253 in the font that Indian script name SCRIPT specifies.
1254 See also the function
`indian-glyph-char
'.
"
1255 (let ((split (split-char char))
1257 (or (eq (car split) 'indian-glyph)
1258 (error "Charset of
`%c
' is not indian-glyph
" char))
1259 (or (<= char indian-glyph-max-char)
1260 (error "Invalid indian-glyph char
: %d
" char))
1261 (setq code (+ (* (- (nth 1 split) 32) 96) (nth 2 split) -32))
1262 (cons (% code 256) (aref indian-script-table (/ code 256)))))
1266 ;;; arch-tag: 59aacd71-46c2-4cb3-bb26-e12bbad55545
1267 ;;; ind-util.el ends here