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