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