]> git.eshelyaron.com Git - emacs.git/commitdiff
Delete it
authorKenichi Handa <handa@m17n.org>
Fri, 22 Feb 2008 02:48:41 +0000 (02:48 +0000)
committerKenichi Handa <handa@m17n.org>
Fri, 22 Feb 2008 02:48:41 +0000 (02:48 +0000)
lisp/language/devanagari.el [deleted file]
lisp/language/kannada.el [deleted file]
lisp/language/knd-util.el [deleted file]
lisp/language/malayalam.el [deleted file]
lisp/language/mlm-util.el [deleted file]
lisp/language/tamil.el [deleted file]
lisp/language/tml-util.el [deleted file]

diff --git a/lisp/language/devanagari.el b/lisp/language/devanagari.el
deleted file mode 100644 (file)
index 4cf95fd..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-;;; devanagari.el --- Support for Devanagari -*- coding: iso-2022-7bit; no-byte-compile: t -*-
-
-;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-;;   Free Software Foundation, Inc.
-
-;; Maintainer:  KAWABATA, Taichi <kawabata@m17n.org>
-;; Keywords: multilingual, Indian, Devanagari
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; This file defines language-info of Devanagari script, and provides
-;; compatibility support of old implementation of Devanagari script.
-
-;;; Code:
-
-(set-language-info-alist
- "Devanagari" '((charset unicode)
-               (coding-system utf-8)
-               (coding-priority utf-8)
-               (input-method . "dev-aiba")
-               (documentation . "\
-Such languages using Devanagari script as Hindi and Marathi
-are supported in this language environment."))
- '("Indian"))
-
-(provide 'devanagari)
-
-;;; arch-tag: fd13667d-868b-41e8-81ef-79dd28bbfed2
-;;; devanagari.el ends here
diff --git a/lisp/language/kannada.el b/lisp/language/kannada.el
deleted file mode 100644 (file)
index f174e6e..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-;;; kannada.el --- Support for Kannada -*- coding: iso-2022-7bit; no-byte-compile: t -*-
-
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
-;;   Free Software Foundation, Inc.
-
-;; Maintainer:  CHOWKSEY, Kailash C. <klchxbec@m-net.arbornet.org>
-;; Keywords: multilingual, Indian, Kannada
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; This file defines language-info of Kannada script.
-
-;;; Code:
-
-(set-language-info-alist
- "Kannada" '((charset mule-unicode-0100-24ff indian-is13194
-                         indian-2-column indian-glyph ;; comment out later
-                         )
-               (coding-system mule-utf-8)
-               (coding-priority mule-utf-8)
-               (input-method . "kannada-itrans")
-               (features knd-util)
-               (sample-text
-                . (kannada-compose-string
-                   (copy-sequence "Kannada (\e$,1>u?(?M?(?!\e(B) \e$,1?(?.?8?M>u?>?0\e(B")))
-               (documentation . "\
-Kannada language and script is supported in this language
-environment.")) 
- '("Indian"))
-
-;; For automatic composition.
-(set-char-table-range composition-function-table '(#x0c80 . #x0cff)
-                     '(("[\x0c80-\x0CFF]+" . font-shape-text)))
-
-(provide 'kannada)
-
-;;; arch-tag: 880ba90b-f6f5-4131-bc1d-930705b78416
-;;; kannada.el ends here
diff --git a/lisp/language/knd-util.el b/lisp/language/knd-util.el
deleted file mode 100644 (file)
index 25bbad7..0000000
+++ /dev/null
@@ -1,542 +0,0 @@
-;;; knd-util.el --- Support for composing Kannada characters
-
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
-;;   Free Software Foundation, Inc.
-
-;; Maintainer:  Maintainer:  CHOWKSEY, Kailash C. <klchxbec@m-net.arbornet.org>
-;; Keywords: multilingual, Kannada
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;; Created: Jul. 14. 2003
-
-;;; Commentary:
-
-;; This file provides character(Unicode) to glyph(CDAC) conversion and
-;; composition of Kannada script characters.
-
-;;; Code:
-
-;;;###autoload
-
-;; Kannada Composable Pattern
-;;    C .. Consonants
-;;    V .. Vowel
-;;    H .. Virama
-;;    M .. Matra
-;;    V .. Vowel
-;;    (N .. Zerowidth Non Joiner)
-;;    (J .. Zerowidth Joiner.  )
-;; 1. vowel
-;;  V(A)?
-;; 2. syllable : maximum of 5 consecutive consonants.  (e.g. kartsnya)
-;;  ((CH)?(CH)?(CH)?CH)?C(H|M?)?
-
-(defconst kannada-consonant
-  "[\e$,1>u\e(B-\e$,1?9\e(B]")
-
-(defconst kannada-consonant-needs-twirl
-  "[\e$,1>u>w\e(B-\e$,1>{>}\e(B-\e$,1>~? \e(B-\e$,1?"?$\e(B-\e$,1?+?-?0?3\e(B-\e$,1?9\e(B]\\(\e$,1?M\e(B[\e$,1>u\e(B-\e$,1?9\e(B]\\)*[\e$,1?A?B?C?D>b\e(B]?$")
-
-(defconst kannada-composable-pattern
-  (concat
-   "\\([\e$,1>b\e(B-\e$,1>t?`>l\e(B]\\)\\|[\e$,1>c\e(B]"
-   "\\|\\("
-   "\\(?:\\(?:[\e$,1>u\e(B-\e$,1?9\e(B]\e$,1?M\e(B\\)?\\(?:[\e$,1>u\e(B-\e$,1?9\e(B]\e$,1?M\e(B\\)?\\(?:[\e$,1>u\e(B-\e$,1?9\e(B]\e$,1?M\e(B\\)?[\e$,1>u\e(B-\e$,1?9\e(B]\e$,1?M\e(B\\)?"
-   "[\e$,1>u\e(B-\e$,1?9\e(B]\\(?:\e$,1?M\e(B\\|[\e$,1?>\e(B-\e$,1?M?U?C\e(B]?\\)?"
-   "\\)")
-  "Regexp matching a composable sequence of Kannada characters.")
-
-;;;###autoload
-(defun kannada-compose-region (from to)
-  (interactive "r")
-  (save-excursion
-    (save-restriction
-      (narrow-to-region from to)
-      (goto-char (point-min))
-      (while (re-search-forward kannada-composable-pattern nil t)
-        (kannada-compose-syllable-region (match-beginning 0)
-                                            (match-end 0))))))
-;;;###autoload
-(defun kannada-compose-string (string)
-  (with-temp-buffer
-    (insert (decompose-string string))
-    (kannada-compose-region (point-min) (point-max))
-    (buffer-string)))
-
-;;;###autoload
-(defun kannada-post-read-conversion (len)
-  (save-excursion
-    (save-restriction
-      (let ((buffer-modified-p (buffer-modified-p)))
-       (narrow-to-region (point) (+ (point) len))
-       (kannada-compose-region (point-min) (point-max))
-       (set-buffer-modified-p buffer-modified-p)
-       (- (point-max) (point-min))))))
-
-(defun kannada-range (from to)
-  "Make the list of the integers of range FROM to TO."
-  (let (result)
-    (while (<= from to) (setq result (cons to result) to (1- to))) result))
-
-(defun kannada-regexp-of-hashtbl-keys (hashtbl)
-  "Return a regular expression that matches all keys in hashtable HASHTBL."
-  (let ((max-specpdl-size 1000))
-    (regexp-opt
-     (sort
-      (let (dummy)
-       (maphash (function (lambda (key val) (setq dummy (cons key dummy)))) hashtbl)
-       dummy)
-      (function (lambda (x y) (> (length x) (length y))))))))
-
-(defun kannada-regexp-of-hashtbl-vals (hashtbl)
-  "Return a regular expression that matches all values in hashtable HASHTBL."
-  (let ((max-specpdl-size 1000))
-    (regexp-opt
-     (sort
-      (let (dummy)
-       (maphash (function (lambda (key val) (setq dummy (cons val dummy)))) hashtbl)
-       dummy)
-      (function (lambda (x y) (> (length x) (length y))))))))
-
-;;;###autoload
-(defun kannada-composition-function (pos &optional string)
-  "Compose Kannada characters after the position POS.
-If STRING is not nil, it is a string, and POS is an index to the string.
-In this case, compose characters after POS of the string."
-  (if string
-      ;; Not yet implemented.
-      nil
-    (goto-char pos)
-    (if (looking-at kannada-composable-pattern)
-       (prog1 (match-end 0)
-         (kannada-compose-syllable-region pos (match-end 0))))))
-
-;; Notes on conversion steps.
-
-;; 1. chars to glyphs
-;;
-;; Rules will not be applied to the virama appeared at the end of the
-;; text.  Also, the preceding/following "r" will be treated as special case.
-
-;; 2. glyphs reordering.
-;;
-;; The glyphs are split by virama, and each glyph groups are
-;; re-ordered in the following order.
-;;
-;; Note that `consonant-glyph' mentioned here does not contain the
-;; vertical bar (right modifier) attached at the right of the
-;; consonant.
-;;
-;; If the glyph-group contains right modifier,
-;;  (1) consonant-glyphs/vowels
-;;  (2) spacing
-;;  (3) right modifier (may be matra)
-;;  (4) top matra
-;;  (5) preceding "r"
-;;  (7) following "r"
-;;  (8) bottom matra or virama.
-;;
-;; Otherwise,
-;;  (1) consonant-glyph/vowels, with nukta sign
-;;  (3) left matra
-;;  (4) top matra
-;;  (5) preceding "r"
-;;  (7) following "r"
-;;  (8) bottom matra or virama.
-;;  (2) spacing
-
-;; 3. glyph to glyph
-;;
-;; For better display, some glyph display would be tuned.
-
-;; 4. Composition.
-;;
-;; left modifiers will be attached at the left.
-;; others will be attached right.
-
-;; Problem::
-;;  Can we generalize this methods to other Indian scripts?
-
-(defvar knd-char-glyph
-  '(("\e$,1>e\e(B" . "\e$,43@\e(B")
-    ("\e$,1>f\e(B" . "\e$,43A\e(B")
-    ("\e$,1?>\e(B" . "\e$,44{\e(B")
-    ("\e$,1>g\e(B" . "\e$,43B\e(B")
-    ("\e$,1??\e(B" . nil)
-    ("\e$,1>h\e(B" . "\e$,43C\e(B")
-    ("\e$,1?@\e(B" . nil)
-    ("\e$,1>i\e(B" . "\e$,43D\e(B")
-    ("\e$,1?A\e(B" . "\\e$,44\7f\e(B")
-    ("\e$,1>j\e(B" . "\e$,43E\e(B")
-    ("\e$,1?B\e(B" . "\\e$,45 \e(B")
-    ("\e$,1>k\e(B" . "\e$,43F4\7f\e(B")
-    ("\e$,1?C\e(B" . "\\e$,45$\e(B")
-    ("\e$,1?`\e(B" . "\e$,43F5 \e(B")
-    ("\e$,1?D\e(B" . "\\e$,45%\e(B")
-    ;;("\e$,1>l\e(B" . nil) ; not implemented.
-    ;;("\e$,1?a\e(B" . nil)
-    ("\e$,1>n\e(B" . "\e$,43G\e(B")
-    ("\e$,1>o\e(B" . "\e$,43H\e(B")
-    ("\e$,1>p\e(B" . "\e$,43I\e(B")
-    ("\e$,1?F\e(B" . "\\e$,45&\e(B")
-    ("\e$,1?G\e(B" . "\\e$,45&4~\e(B")
-    ("\e$,1?H\e(B" . "\\e$,45&5'\e(B")
-    ("\e$,1>r\e(B" . "\e$,43J\e(B")
-    ("\e$,1?J\e(B" . "\e$,45&5 \e(B")
-    ("\e$,1>s\e(B" . "\e$,43K\e(B")
-    ("\e$,1?K\e(B" . "\\e$,45&5 4~\e(B")
-    ("\e$,1>t\e(B" . "\e$,43L\e(B")
-    ("\e$,1?L\e(B" . "\\e$,45(\e(B")
-    ("\e$,1>b\e(B" . "\e$,43M\e(B")
-    ("\e$,1>c\e(B" . "\e$,43N\e(B")
-    ("\e$,1>u?M\e(B" . "\e$,43O5)\e(B") ("\e$,1>u\e(B" . "\e$,43O\e(B") ("\e$,1>u??\e(B" . "\e$,43P\e(B") ("\e$,1>u?@\e(B" . "\e$,43P4~\e(B")
-    ("\e$,1>v?M\e(B" . "\e$,43S5)\e(B") ("\e$,1>v\e(B" .  "\e$,43S\e(B") ("\e$,1>v??\e(B" . "\e$,43T\e(B") ("\e$,1>v?@\e(B" . "\e$,43T4~\e(B") ("\e$,1>v?F\e(B" . "\e$,43S5&\e(B") ("\e$,1>v?G\e(B" . "\e$,43S5&4~\e(B") ("\e$,1>v?H\e(B" . "\e$,43S5&5'\e(B") ("\e$,1>v?J\e(B" .  "\e$,43S5&5&5 \e(B") ("\e$,1>v?K\e(B" . "\e$,43S5&5&5 4~\e(B") ("\e$,1>v?L\e(B" . "\e$,43S5(\e(B")
-    ("\e$,1>w?M\e(B" . "\e$,43V5)\e(B") ("\e$,1>w\e(B" . "\e$,43V\e(B") ("\e$,1>w??\e(B" . "\e$,43W\e(B") ("\e$,1>w?@\e(B" . "\e$,43W4~\e(B")
-    ("\e$,1>x?M\e(B" . "\e$,43Y5)\e(B") ("\e$,1>x\e(B" . "\e$,43Y\e(B") ("\e$,1>x??\e(B" . "\e$,43Z\e(B") ("\e$,1>x?@\e(B" . "\e$,43Z4~\e(B")
-    ("\e$,1>y?M\e(B" . "\e$,43\5)\e(B") ("\e$,1>y\e(B" . "\e$,43\\e(B")
-    ("\e$,1>z?M\e(B" . "\e$,43^5)\e(B") ("\e$,1>z\e(B" . "\e$,43^\e(B") ("\e$,1>z??\e(B" . "\e$,43_\e(B") ("\e$,1>z?@\e(B" . "\e$,43_4~\e(B")
-    ("\e$,1>{?M\e(B" . "\e$,43a5)\e(B") ("\e$,1>{\e(B" . "\e$,43a\e(B") ("\e$,1>{??\e(B" . "\e$,43b\e(B") ("\e$,1>{?@\e(B" . "\e$,43b4~\e(B")
-    ("\e$,1>|?M\e(B" . "\e$,43d5)\e(B") ("\e$,1>|\e(B" . "\e$,43d\e(B") ("\e$,1>|??\e(B" . "\e$,43f\e(B") ("\e$,1>|?@\e(B" . "\e$,43f4~\e(B") ("\e$,1>|?F\e(B" . "\e$,43e5&\e(B") ("\e$,1>|?G\e(B" . "\e$,43e5&4~\e(B") ("\e$,1>|?H\e(B" . "\e$,43e5&5'\e(B") ("\e$,1>|?J\e(B" .  "\e$,43e5&5&5 \e(B") ("\e$,1>|?K\e(B" . "\e$,43e5&5&5 4~\e(B") ("\e$,1>|?L\e(B" . "\e$,43e5(\e(B")
-    ("\e$,1>}?M\e(B" . "\e$,44a4z3h4\7f5)\e(B") ("\e$,1>}\e(B" . "\e$,44a4z3h4\7f\e(B") ("\e$,1>}??\e(B" . "\e$,44b3h4\7f\e(B") ("\e$,1>}?@\e(B" . "\e$,44b3h4\7f4~\e(B") ("\e$,1>}?B\e(B". "\e$,44a4z3h5 \e(B") ("\e$,1>}?J\e(B". "\e$,44a5&3h5 \e(B") ("\e$,1>}?K\e(B". "\e$,44a5&3h5 4~\e(B")
-    ("\e$,1>~?M\e(B" . "\e$,43j5)\e(B") ("\e$,1>~\e(B" . "\e$,43j\e(B")
-    ("\e$,1>\7f?M\e(B" . "\e$,43m5)\e(B") ("\e$,1>\7f\e(B" . "\e$,43l\e(B") ("\e$,1?#?>\e(B" . "\e$,43m4{\e(B") ("\e$,1>\7f??\e(B" . "\e$,43n\e(B") ("\e$,1>\7f?@\e(B" . "\e$,43n4~\e(B") ("\e$,1>\7f?F\e(B" . "\e$,43m5&\e(B") ("\e$,1>\7f?G\e(B" . "\e$,43m5&4~\e(B") ("\e$,1>\7f?H\e(B" . "\e$,43m5&5'\e(B") ("\e$,1>\7f?J\e(B" .  "\e$,43m5&5&5 \e(B") ("\e$,1>\7f?K\e(B" . "\e$,43m5&5&5 4~\e(B") ("\e$,1>\7f?L\e(B" . "\e$,43m5(\e(B")
-    ("\e$,1? ?M\e(B" . "\e$,43p5)\e(B") ("\e$,1? \e(B" . "\e$,43p\e(B") ("\e$,1? ??\e(B" . "\e$,43q\e(B") ("\e$,1? ?@\e(B" . "\e$,43q4~\e(B")
-    ("\e$,1?!?M\e(B" . "\e$,43s5)\e(B") ("\e$,1?!\e(B" . "\e$,43s\e(B") ("\e$,1?!??\e(B" . "\e$,43t\e(B") ("\e$,1?!?@\e(B" . "\e$,43t4~\e(B")
-    ("\e$,1?"?M\e(B" . "\e$,43v5)\e(B") ("\e$,1?"\e(B" . "\e$,43v\e(B") ("\e$,1?"??\e(B" . "\e$,43w\e(B") ("\e$,1?"?@\e(B" . "\e$,43w4~\e(B")
-    ("\e$,1?#?M\e(B" . "\e$,43z5)\e(B") ("\e$,1?#\e(B" . "\e$,43y\e(B") ("\e$,1?#?>\e(B" . "\e$,43z4{\e(B") ("\e$,1?#??\e(B" . "\e$,43{\e(B") ("\e$,1?#?@\e(B" . "\e$,43{4~\e(B") ("\e$,1?#?F\e(B" . "\e$,43z5&\e(B") ("\e$,1?#?G\e(B" . "\e$,43z5&4~\e(B") ("\e$,1?#?H\e(B" . "\e$,43z5&5'\e(B") ("\e$,1?#?J\e(B" .  "\e$,43z5&5&5 \e(B") ("\e$,1?#?K\e(B" . "\e$,43z5&5&5 4~\e(B") ("\e$,1?#?L\e(B" . "\e$,43z5(\e(B")
-    ("\e$,1?$?M\e(B" . "\e$,43}5)\e(B") ("\e$,1?$\e(B" . "\e$,43}\e(B") ("\e$,1?$??\e(B" . "\e$,43~\e(B") ("\e$,1?$?@\e(B" . "\e$,43~4~\e(B")
-    ("\e$,1?%?M\e(B" . "\e$,44B5)\e(B") ("\e$,1?%\e(B" . "\e$,44B\e(B") ("\e$,1?%??\e(B" . "\e$,44C\e(B") ("\e$,1?%?@\e(B" . "\e$,44C4~\e(B")
-    ("\e$,1?&?M\e(B" . "\e$,44E5)\e(B") ("\e$,1?&\e(B" . "\e$,44E\e(B") ("\e$,1?&??\e(B" . "\e$,44F\e(B") ("\e$,1?&?@\e(B" . "\e$,44F4~\e(B")
-    ("\e$,1?'?M\e(B" . "\e$,44H5)\e(B") ("\e$,1?'\e(B" . "\e$,44H\e(B") ("\e$,1?'??\e(B" . "\e$,44I\e(B") ("\e$,1?'?@\e(B" . "\e$,44I4~\e(B")
-    ("\e$,1?(?M\e(B" . "\e$,44K5)\e(B") ("\e$,1?(\e(B" . "\e$,44K\e(B") ("\e$,1?(??\e(B" . "\e$,44L\e(B") ("\e$,1?(?@\e(B" . "\e$,44L4~\e(B")
-    ("\e$,1?*?M\e(B" . "\e$,44N5)\e(B") ("\e$,1?*\e(B" . "\e$,44N\e(B") ("\e$,1?*??\e(B" . "\e$,44O\e(B") ("\e$,1?*?@\e(B" . "\e$,44O4~\e(B") ("\e$,1?*?A\e(B" . "\e$,44N5"\e(B") ("\e$,1?*?B\e(B" . "\e$,44N5#\e(B") ("\e$,1?*?J\e(B" . "\e$,44N5&5#\e(B") ("\e$,1?*?K\e(B" . "\e$,44N5&5#4~\e(B")
-    ("\e$,1?+?M\e(B" . "\e$,44Q5)\e(B") ("\e$,1?+\e(B" . "\e$,44Q\e(B") ("\e$,1?+??\e(B" . "\e$,44R\e(B") ("\e$,1?+?@\e(B" . "\e$,44R4~\e(B") ("\e$,1?+?A\e(B" . "\e$,44Q5"\e(B") ("\e$,1?+?B\e(B" . "\e$,44Q5#\e(B") ("\e$,1?+?J\e(B" . "\e$,44Q5&5#\e(B") ("\e$,1?+?K\e(B" . "\e$,44Q5&5#4~\e(B")
-    ("\e$,1?,?M\e(B" . "\e$,44W5)\e(B") ("\e$,1?,\e(B" . "\e$,44V\e(B") ("\e$,1?,?>\e(B". "\e$,44W4{\e(B") ("\e$,1?,??\e(B" . "\e$,44X\e(B") ("\e$,1?,?@\e(B" . "\e$,44X4~\e(B") ("\e$,1?,?F\e(B" . "\e$,44W5&\e(B") ("\e$,1?,?G\e(B" . "\e$,44W5&4~\e(B") ("\e$,1?,?H\e(B" . "\e$,44W5&5'\e(B") ("\e$,1?,?J\e(B" .  "\e$,44W5&5&5 \e(B") ("\e$,1?,?K\e(B" . "\e$,44W5&5&5 4~\e(B") ("\e$,1?,?L\e(B" . "\e$,44W5(\e(B")
-    ("\e$,1?-?M\e(B" . "\e$,44Z5)\e(B") ("\e$,1?-\e(B" . "\e$,44Z\e(B") ("\e$,1?-??\e(B" . "\e$,44[\e(B") ("\e$,1?-?@\e(B" . "\e$,44[4~\e(B")
-    ("\e$,1?.?M\e(B" . "\e$,44h5!5)\e(B") ("\e$,1?.\e(B" . "\e$,44h4z4\7f\e(B") ("\e$,1?.?>\e(B" . "\e$,44h4z5!4{\e(B") ("\e$,1?.??\e(B" . "\e$,44i4\7f\e(B") ("\e$,1?.?@\e(B" . "\e$,44i4\7f4~\e(B") ("\e$,1?.?J\e(B". "\e$,44h5&5 \e(B") ("\e$,1?.?K\e(B". "\e$,44h5&5 4~\e(B")
-    ("\e$,1?/?M\e(B" . "\e$,44^4z5!5)\e(B") ("\e$,1?/\e(B" . "\e$,44^4z4\7f\e(B") ("\e$,1?/?>\e(B" . "\e$,44^4z5!4{\e(B")("\e$,1?/??\e(B" . "\e$,44_4\7f\e(B") ("\e$,1?/?@\e(B" . "\e$,44_4\7f4~\e(B") ("\e$,1?/?J\e(B" . "\e$,44^5&5 \e(B") ("\e$,1?/?K\e(B" . "\e$,44^5&5 4~\e(B")
-    ("\e$,1?0?M\e(B" . "\e$,44a5)\e(B") ("\e$,1?0\e(B" . "\e$,44a\e(B") ("\e$,1?0??\e(B" . "\e$,44b\e(B") ("\e$,1?0?@\e(B" . "\e$,44b4~\e(B")
-    ("\e$,1?0?M\e(B" . "\e$,44a5)\e(B") ("\e$,1?0\e(B" . "\e$,44a\e(B") ("\e$,1?0??\e(B" . "\e$,44b\e(B") ("\e$,1?0?@\e(B" . "\e$,44b4~\e(B")
-    ("\e$,1?2?M\e(B" . "\e$,44e5)\e(B") ("\e$,1?2\e(B" . "\e$,44d\e(B") ("\e$,1?2?>\e(B" . "\e$,44e4{\e(B") ("\e$,1?2??\e(B" . "\e$,44f\e(B") ("\e$,1?2?@\e(B" . "\e$,44f4~\e(B") ("\e$,1?2?F\e(B" . "\e$,44e5&\e(B") ("\e$,1?2?G\e(B" . "\e$,44e5&4~\e(B") ("\e$,1?2?H\e(B" . "\e$,44e5&5'\e(B") ("\e$,1?2?J\e(B" .  "\e$,44e5&5&5 \e(B") ("\e$,1?2?K\e(B" . "\e$,44e5&5&5 4~\e(B") ("\e$,1?2?L\e(B" . "\e$,44e5(\e(B")
-    ("\e$,1?5?M\e(B" . "\e$,44h5)\e(B") ("\e$,1?5\e(B" . "\e$,44h\e(B") ("\e$,1?5??\e(B" . "\e$,44i\e(B") ("\e$,1?5?@\e(B" . "\e$,44i4~\e(B") ("\e$,1?5?A\e(B" . "\e$,44h5"\e(B") ("\e$,1?5?B\e(B" . "\e$,44h5#\e(B") ("\e$,1?5?J\e(B" . "\e$,44h5&5#\e(B") ("\e$,1?5?K\e(B" . "\e$,44h5&5#4~\e(B")
-    ("\e$,1?6?M\e(B" . "\e$,44k5)\e(B") ("\e$,1?6\e(B" . "\e$,44k\e(B") ("\e$,1?6??\e(B" . "\e$,44l\e(B") ("\e$,1?6?@\e(B" . "\e$,44l4~\e(B")
-    ("\e$,1?7?M\e(B" . "\e$,44n5)\e(B") ("\e$,1?7\e(B" . "\e$,44n\e(B") ("\e$,1?7??\e(B" . "\e$,44o\e(B") ("\e$,1?7?@\e(B" . "\e$,44o4~\e(B")
-    ("\e$,1?8?M\e(B" . "\e$,44q5)\e(B") ("\e$,1?8\e(B" . "\e$,44q\e(B") ("\e$,1?8??\e(B" . "\e$,44r\e(B") ("\e$,1?8?@\e(B" . "\e$,44r4~\e(B")
-    ("\e$,1?9?M\e(B" . "\e$,44t5)\e(B") ("\e$,1?9\e(B" . "\e$,44t\e(B") ("\e$,1?9??\e(B" . "\e$,44u\e(B") ("\e$,1?9?@\e(B" . "\e$,44u4~\e(B")
-    ("\e$,1?3?M\e(B" . "\e$,44w5)\e(B") ("\e$,1?3\e(B" . "\e$,44w\e(B") ("\e$,1?3??\e(B" . "\e$,44x\e(B") ("\e$,1?3?@\e(B" . "\e$,44x4~\e(B"))
-"Kannada characters to glyphs conversion table.
-Default value contains only the basic rules.")
-
-(defvar knd-char-glyph-hash
-  (let* ((hash (make-hash-table :test 'equal)))
-    (mapc (function (lambda (x) (puthash (car x) (cdr x) hash)))
-         knd-char-glyph)
-    hash))
-
-(defvar knd-char-glyph-regexp
-  (kannada-regexp-of-hashtbl-keys knd-char-glyph-hash))
-
-(defvar knd-conjunct-glyph
-  '(("\e$,1>u\e(B" . "\e$,43Q\e(B") ("\e$,1>v\e(B" . "\e$,43U\e(B") ("\e$,1>w\e(B" . "\e$,43X\e(B") ("\e$,1>x\e(B" . "\e$,43[\e(B") ("\e$,1>y\e(B" . "\e$,43]\e(B")
-    ("\e$,1>z\e(B" . "\e$,43`\e(B") ("\e$,1>{\e(B" . "\e$,43c\e(B") ("\e$,1>|\e(B" . "\e$,43g\e(B") ("\e$,1>}\e(B" . "\e$,43i\e(B") ("\e$,1>~\e(B" . "\e$,43k\e(B")
-    ("\e$,1>\7f\e(B" . "\e$,43o\e(B") ("\e$,1? \e(B" . "\e$,43r\e(B") ("\e$,1?!\e(B" . "\e$,43u\e(B") ("\e$,1?"\e(B" . "\e$,43x\e(B") ("\e$,1?#\e(B" . "\e$,43|\e(B")
-    ("\e$,1?$\e(B" . "\e$,44A\e(B") ("\e$,1?%\e(B" . "\e$,44D\e(B") ("\e$,1?&\e(B" . "\e$,44G\e(B") ("\e$,1?'\e(B" . "\e$,44J\e(B") ("\e$,1?(\e(B" . "\e$,44M\e(B")
-    ("\e$,1?*\e(B" . "\e$,44P\e(B") ("\e$,1?+\e(B" . "\e$,44U\e(B") ("\e$,1?,\e(B" . "\e$,44Y\e(B") ("\e$,1?-\e(B" . "\e$,44\\e(B") ("\e$,1?.\e(B" . "\e$,44]\e(B")
-    ("\e$,1?/\e(B" . "\e$,44`\e(B") ("\e$,1?0\e(B" . "\e$,44c\e(B") ("\e$,1?2\e(B" . "\e$,44g\e(B") ("\e$,1?3\e(B" . "\e$,44y\e(B") ("\e$,1?5\e(B" . "\e$,44j\e(B")
-    ("\e$,1?6\e(B" . "\e$,44m\e(B") ("\e$,1?7\e(B" . "\e$,44p\e(B") ("\e$,1?8\e(B" . "\e$,44s\e(B") ("\e$,1?9\e(B" . "\e$,44v\e(B"))
-"Kannada characters to conjunct glyphs conversion table.")
-
-(defvar knd-conjunct-glyph-hash
-  (let* ((hash (make-hash-table :test 'equal)))
-    (mapc (function (lambda (x) (puthash (car x) (cdr x) hash)))
-         knd-conjunct-glyph)
-    hash))
-    
-(defvar knd-conjunct-glyph-regexp
-  (kannada-regexp-of-hashtbl-vals knd-conjunct-glyph-hash))
-
-(mapc
-  (function (lambda (x)
-    (put-char-code-property (aref (cdr x) 0) 'reference-point '(5 . 3))))
-  knd-conjunct-glyph)
-
-;; glyph-to-glyph conversion table.
-;; it is supposed that glyphs are ordered in
-;;   [consonant/nukta] - [matra/virama] - [preceding-r] - [anuswar].
-
-(defvar knd-glyph-glyph
-  '(("\e$,45$4A\e(B" . "\e$,45*\e(B")
-    ("\e$,45'4A\e(B" . "\e$,45+\e(B")
-    ("\e$,44A3g\e(B" . "\e$,45,\e(B")
-    ("\e$,45$3Q\e(B" . "\e$,45-\e(B")))
-
-(defvar knd-glyph-glyph-hash
-  (let* ((hash (make-hash-table :test 'equal)))
-    (mapc (function (lambda (x) (puthash (car x) (cdr x) hash)))
-         knd-glyph-glyph)
-    hash))
-(defvar knd-glyph-glyph-regexp
-  (kannada-regexp-of-hashtbl-keys knd-glyph-glyph-hash))
-
-(defun knd-charseq (from &optional to)
-  (if (null to) (setq to from))
-  (number-sequence (decode-char 'kannada-cdac from)
-                  (decode-char 'kannada-cdac to)))
-
-(defvar knd-glyph-cv
-  (append
-   (knd-charseq #x40 #x50)
-   (knd-charseq #x52 #x54)
-   (knd-charseq #x56 #x57)
-   (knd-charseq #x59 #x5a)
-   (knd-charseq #x5c)
-   (knd-charseq #x5e #x5f)
-   (knd-charseq #x61 #x62)
-   (knd-charseq #x64 #x66)
-   (knd-charseq #x6a)
-   (knd-charseq #x6c #x6e)
-   (knd-charseq #x70 #x71)
-   (knd-charseq #x73 #x74)
-   (knd-charseq #x76 #x77)
-   (knd-charseq #x79 #x7b)
-   (knd-charseq #x7d #x7e)
-   (knd-charseq #xa2 #xa3)
-   (knd-charseq #xa5 #xa6)
-   (knd-charseq #xa8 #xa9)
-   (knd-charseq #xab #xac)
-   (knd-charseq #xae #xaf)
-   (knd-charseq #xb1 #xb2)
-   (knd-charseq #xb6 #xb8)
-   (knd-charseq #xb6 #xb8)
-   (knd-charseq #xba #xbb)
-   (knd-charseq #xbe #xbf)
-   (knd-charseq #xc1 #xc2)
-   (knd-charseq #xc4 #xc6)
-   (knd-charseq #xc8 #xc9)
-   (knd-charseq #xcb #xcc)
-   (knd-charseq #xce #xcf)
-   (knd-charseq #xd1 #xd2)
-   (knd-charseq #xd4 #xd5)
-   (knd-charseq #xd7 #xd8)
-   (knd-charseq #xc3))
-  "Kannada Consonants/Vowels/Nukta Glyphs")
-
-(defvar knd-glyph-space
-  (knd-charseq #xb3 #xb4)
-  "Kannada Spacing Glyphs")
-
-(defvar knd-glyph-right-modifier
-  (append
-   (knd-charseq #xdb #xdd)
-   (knd-charseq #xdf)
-   (knd-charseq #xe0 #xe3)
-   (knd-charseq #xe9))
-  "Kannada Modifiers attached at the right side.")
-
-(defvar knd-glyph-right-modifier-regexp
-  (concat "[" knd-glyph-right-modifier "]"))
-
-(defvar knd-glyph-jha-tail
-   (knd-charseq #x68)
-  "Kannada tail for jha.")
-
-(defvar knd-glyph-top-matra
-  (append
-   (knd-charseq #xda)
-   (knd-charseq #xdd)
-   (knd-charseq #xe6)
-   (knd-charseq #xe8))
-  "Kannada Matras attached at the top side.")
-
-(defvar knd-glyph-bottom-matra
-  (append
-   (knd-charseq #xe4 #xe5)
-   (knd-charseq #xe7))
-  "Kannada Matras attached at the bottom.")
-
-(defvar knd-glyph-end-marks
-  (append
-   (knd-charseq #x25)
-   (knd-charseq #x4d #x4e)
-   (knd-charseq #xde))
-  "Kannada end marks: arkavattu, virama, au and diirghaa.")
-
-(defvar knd-glyph-bottom-modifier
-  (append
-   (knd-charseq #x51)
-   (knd-charseq #x55)
-   (knd-charseq #x58)
-   (knd-charseq #x5b)
-   (knd-charseq #x5d)
-   (knd-charseq #x60)
-   (knd-charseq #x63)
-   (knd-charseq #x67)
-   (knd-charseq #x69)
-   (knd-charseq #x6b)
-   (knd-charseq #x6f)
-   (knd-charseq #x72)
-   (knd-charseq #x75)
-   (knd-charseq #x78)
-   (knd-charseq #x7c)
-   (knd-charseq #xa1)
-   (knd-charseq #xa4)
-   (knd-charseq #xa7)
-   (knd-charseq #xaa)
-   (knd-charseq #xad)
-   (knd-charseq #xb0)
-   (knd-charseq #xb5)
-   (knd-charseq #xb9)
-   (knd-charseq #xbc #xbd)
-   (knd-charseq #xc0)
-   (knd-charseq #xc3)
-   (knd-charseq #xc7)
-   (knd-charseq #xca)
-   (knd-charseq #xcd)
-   (knd-charseq #xd0)
-   (knd-charseq #xd3)
-   (knd-charseq #xd6)
-   (knd-charseq #xd9)
-   (knd-charseq #xea #xef))
-  "Kannada Modifiers attached at the bottom.")
-
-(defvar knd-glyph-order
-  `((,knd-glyph-cv . 1)
-    (,knd-glyph-top-matra . 2)
-    (,knd-glyph-jha-tail . 3)
-    (,knd-glyph-right-modifier . 4)
-    (,knd-glyph-space . 5)
-    (,knd-glyph-bottom-modifier . 5)
-    (,knd-glyph-bottom-matra . 6)
-    (,knd-glyph-end-marks . 7)
-    ))
-
-(mapc
- (function (lambda (x)
-   (mapc
-     (function (lambda (y)
-       (put-char-code-property y 'composition-order (cdr x))))
-     (car x))))
-  knd-glyph-order)
-
-(defun kannada-compose-syllable-string (string)
-  (with-temp-buffer
-    (insert (decompose-string string))
-    (kannada-compose-syllable-region (point-min) (point-max))
-    (buffer-string)))
-
-;; kch
-(defun kannada-compose-syllable-region (from to)
-  "Compose kannada syllable in region FROM to TO."
-  (let ((glyph-str nil) (cons-num 0) (glyph-str-list nil)
-        (last-virama nil) (preceding-r nil) (last-modifier nil)
-        (last-char (char-before to)) match-str pos
-        glyph-block split-pos (conj nil) (rest nil))
-    (save-excursion
-      (save-restriction
-          ;;; *** char-to-glyph conversion ***
-        ;; Special rule 1. -- Last virama must be preserved.
-        (if (eq last-char ?\e$,1?M\e(B)
-            (progn
-              (setq last-virama t)
-              (narrow-to-region from (1- to)))
-          (narrow-to-region from to))
-        (goto-char (point-min))
-        ;; Special rule 2. -- preceding "r virama" must be modifier.
-        (when (looking-at "\e$,1?0?M\e(B.")
-          (setq preceding-r t)
-          (goto-char (+ 2 (point))))
-       ;; remove conjunct consonants
-        (while (re-search-forward knd-char-glyph-regexp nil t)
-          (setq match-str (match-string 0))
-         (if (and (string-match kannada-consonant match-str)
-                  (> cons-num 0))
-             (progn
-               (setq conj (concat conj (gethash (match-string 0 match-str)
-                                                knd-conjunct-glyph-hash)))
-               (setq match-str (replace-match "" t nil match-str))
-               (if (string-match "\e$,1?M\e(B" rest)
-                   (setq rest (replace-match "" t nil rest)))))
-         (setq rest (concat rest match-str))
-         ;; count the number of consonant-glyhs.
-         (if (string-match kannada-consonant match-str)
-             (setq cons-num (1+ cons-num))))
-        ;; translate the rest characters into glyphs
-       (setq pos 0)
-        (while (string-match knd-char-glyph-regexp rest pos)
-          (setq match-str (match-string 0 rest))
-         (setq pos (match-end 0))
-         (setq glyph-str
-               (concat glyph-str (gethash match-str knd-char-glyph-hash))))
-
-       (if conj (setq glyph-str (concat glyph-str conj)))
-        (if last-virama (setq glyph-str (concat glyph-str "\e$,45)\e(B"))
-         (goto-char (point-min))
-         (if (re-search-forward kannada-consonant-needs-twirl nil t)
-             (progn
-               (setq match-str (match-string 0))
-               (setq glyph-str (concat glyph-str "\e$,44z\e(B")))))
-        ;; preceding-r must be attached
-        (if preceding-r
-              (setq glyph-str (concat glyph-str "\e$,43%\e(B")))
-          ;;; *** glyph-to-glyph conversion ***
-        (when (string-match knd-glyph-glyph-regexp glyph-str)
-          (setq glyph-str
-                (replace-match (gethash (match-string 0 glyph-str)
-                                        knd-glyph-glyph-hash)
-                               nil t glyph-str)))
-          ;;; *** glyph reordering ***
-        (while (setq split-pos (string-match "\e$,45)\e(B\\|.$" glyph-str))
-          (setq glyph-block (substring glyph-str 0 (1+ split-pos)))
-          (setq glyph-str (substring glyph-str (1+ split-pos)))
-          (setq
-           glyph-block
-               (sort (string-to-list glyph-block)
-                     (function (lambda (x y)
-                        (< (get-char-code-property x 'composition-order)
-                           (get-char-code-property y 'composition-order))))))
-          (setq glyph-str-list (nconc glyph-str-list glyph-block)))
-         ;;; *** insert space glyphs for kerning ***
-       (if (> cons-num 0)
-           (let ((curr glyph-str-list) (prev nil) (last-bott nil) bott co)
-             (while curr
-               (setq co (get-char-code-property 
-                               (car curr) 'composition-order)
-                     bott (or (eq co 5) (eq co 6)))
-               (if (and bott last-bott)
-                   (setcdr prev (cons ?\e$,44T\e(B curr)))
-               (setq last-bott bott prev curr curr (cdr curr)))))
-          ;; concatenate and attach reference-points.
-        (setq glyph-str
-              (cdr
-               (apply
-                'nconc
-                (mapcar
-                 (function (lambda (x)
-                   (list
-                    (or (get-char-code-property x 'reference-point)
-                    '(5 . 3) ;; default reference point.
-                     )
-                    x)))
-                 glyph-str-list))))))
-      (compose-region from to glyph-str)))
-
-(provide 'knd-util)
-
-;;; arch-tag: 78d32230-a960-46a5-b622-61ed6ffcf8fc
-;;; knd-util.el ends here
diff --git a/lisp/language/malayalam.el b/lisp/language/malayalam.el
deleted file mode 100644 (file)
index bb6312b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-;;; malayalam.el --- Support for Malayalam -*- coding: iso-2022-7bit; no-byte-compile: t -*-
-
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
-;    Free Software Foundation, Inc.
-
-;; Maintainer:  KAWABATA, Taichi <kawabata@m17n.org>
-;; Keywords: multilingual, Indian, Malayalam
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; This file defines language-info of Malayalam script.
-
-;;; Code:
-
-(set-language-info-alist
- "Malayalam" '((charset mule-unicode-0100-24ff indian-glyph )
-               ;;          indian-2-column 
-               ;; comment out later
-               ;;          )
-               (coding-system utf-8)
-               (coding-priority utf-8)
-               (input-method . "malayalam-itrans")
-               (features mlm-util)
-               (documentation . "\
-South Indian language Malayalam is supported in this language environment."))
- '("Indian"))
-
-;; For automatic composition.
-(set-char-table-range composition-function-table '(#x0d00 . #x0d7f)
-                     '(("[\x0D00-\x0D7F]+" . font-shape-text)))
-
-(provide 'malayalam)
-
-;;; arch-tag: 5f500e53-1e4f-4bb2-aa93-ad8736f0349f
-;;; malayalam.el ends here
diff --git a/lisp/language/mlm-util.el b/lisp/language/mlm-util.el
deleted file mode 100644 (file)
index c8944ee..0000000
+++ /dev/null
@@ -1,422 +0,0 @@
-;;; mlm-util.el --- support for composing malayalam characters  -*-coding: iso-2022-7bit;-*-
-
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
-;;   Free Software Foundation, Inc.
-
-;; Maintainer:  KAWABATA, Taichi <kawabata@m17n.org>
-;; Keywords: multilingual, Malayalam
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;; Created: Feb. 11. 2003
-
-;;; Commentary:
-
-;; This file provides character(Unicode) to glyph(CDAC) conversion and
-;; composition of Malayalam script characters.
-
-;;; Code:
-
-;; Malayalam Composable Pattern
-;;    C .. Consonants
-;;    V .. Vowel
-;;    H .. Halant
-;;    M .. Matra
-;;    V .. Vowel
-;;    A .. Anuswar
-;;    D .. Chandrabindu
-;;    (N .. Zerowidth Non Joiner)
-;;    (J .. Zerowidth Joiner.  )
-;; 1. vowel
-;;  V(A|visargam)?
-;; 2. syllable : maximum of 5 consecutive consonants.  (e.g. kartsnya)
-;;  ((CH)?(CH)?(CH)?CH)?C(H|M?(A|D)?)?
-
-(defconst malayalam-consonant
-  "[\e$,1@5\e(B-\e$,1@Y\e(B]")
-
-(defconst malayalam-composable-pattern
-  (concat
-   "\\([\e$,1@%\e(B-\e$,1@4\e(B][\e$,1@"\e(B]?\\)\\|\e$,1@#\e(B"
-   "\\|\\("
-   "\\(?:\\(?:[\e$,1@5\e(B-\e$,1@Y\e(B]\e$,1@m\e(B\\)?\\(?:[\e$,1@5\e(B-\e$,1@Y\e(B]\e$,1@m\e(B\\)?\\(?:[\e$,1@5\e(B-\e$,1@Y\e(B]\e$,1@m\e(B\\)?[\e$,1@5\e(B-\e$,1@Y\e(B]\e$,1@m\e(B\\)?"
-   "[\e$,1@5\e(B-\e$,1@Y\e(B]\\(?:\e$,1@m\e(B\\|[\e$,1@^\e(B-\e$,1@c@f@g@h@j@j@k@l\e(B]?[\e$,1@"@m\e(B]?\\)?"
-   "\\)")
-  "Regexp matching a composable sequence of Malayalam characters.")
-
-;;;###autoload
-(defun malayalam-compose-region (from to)
-  (interactive "r")
-  (save-excursion
-    (save-restriction
-      (narrow-to-region from to)
-      (goto-char (point-min))
-      (while (re-search-forward malayalam-composable-pattern nil t)
-       (malayalam-compose-syllable-region (match-beginning 0)
-                                           (match-end 0))))))
-(defun malayalam-compose-string (string)
-  (with-temp-buffer
-    (insert (decompose-string string))
-    (malayalam-compose-region (point-min) (point-max))
-    (buffer-string)))
-
-;;;###autoload
-(defun malayalam-post-read-conversion (len)
-  (save-excursion
-    (save-restriction
-      (let ((buffer-modified-p (buffer-modified-p)))
-       (narrow-to-region (point) (+ (point) len))
-       (malayalam-compose-region (point-min) (point-max))
-       (set-buffer-modified-p buffer-modified-p)
-       (- (point-max) (point-min))))))
-
-(defun malayalam-range (from to)
-  "Make the list of the integers of range FROM to TO."
-  (let (result)
-    (while (<= from to) (setq result (cons to result) to (1- to))) result))
-
-(defun malayalam-regexp-of-hashtbl-keys (hashtbl)
-  "Return a regular expression that matches all keys in hashtable HASHTBL."
-  (let ((max-specpdl-size 1000))
-    (regexp-opt
-     (sort
-      (let (dummy)
-       (maphash (function (lambda (key val) (setq dummy (cons key dummy)))) hashtbl)
-       dummy)
-      (function (lambda (x y) (> (length x) (length y))))))))
-
-
-;;;###autoload
-(defun malayalam-composition-function (pos  &optional string)
-  "Compose Malayalam characters after the position POS.
-If STRING is not nil, it is a string, and POS is an index to the string.
-In this case, compose characters after POS of the string."
-  (if string
-      (if auto-compose-current-font
-         (if (eq (string-match "[\e$,1@ \e(B-\e$,1A?\e(B]+" pos) pos)
-             (or (font-shape-text 0 (match-end 0) auto-compose-current-font
-                                  string)
-                 pos)))
-    (goto-char pos)
-    (if auto-compose-current-font
-       (if (looking-at  "[\e$,1@ \e(B-\e$,1A?\e(B]+")
-           (or (font-shape-text pos (match-end 0) auto-compose-current-font)
-               pos)
-         (if (looking-at malayalam-composable-pattern)
-             (prog1 (match-end 0)
-               (malayalam-compose-syllable-region pos (match-end 0))))))))
-
-;; Notes on conversion steps.
-
-;; 1. chars to glyphs
-;;
-;; Simple replacement of characters to glyphs is done.
-
-;; 2. glyphs reordering.
-;;
-;; Two special reordering rule takes place.
-;; a. following "\e$,46[\e(B" goes to the front.
-;; b. following "\e$,46S6S\e(B", "\e$,46S\e(B" or "\e$,46T\e(B" goes to the front.
-;; This reordering occurs only to the last cluster of consonants.
-;; Preceding consonants with halant characters are not affected.
-
-;; 3. Composition.
-;;
-;; left modifiers will be attached at the left.
-;; others will be attached right.
-
-(defvar mlm-char-glyph
-  '(;; various signs
-    ("\e$,1@"\e(B" . "\e$,46W\e(B")
-    ("\e$,1@#\e(B" . "\e$,46X\e(B")
-    ;; Independent Vowels
-    ("\e$,1@%\e(B" . "\e$,46!\e(B")
-    ("\e$,1@&\e(B" . "\e$,46"\e(B")
-    ("\e$,1@'\e(B" . "\e$,46#\e(B")
-    ("\e$,1@(\e(B" . "\e$,46#6U\e(B")
-    ("\e$,1@)\e(B" . "\e$,46$\e(B")
-    ("\e$,1@*\e(B" . "\e$,46$6U\e(B")
-    ("\e$,1@+\e(B" . "\e$,46%\e(B")
-    ("\e$,1@,\e(B" . "nil") ;; not in present use, not supported.
-    ("\e$,1@.\e(B" . "\e$,46&\e(B")
-    ("\e$,1@/\e(B" . "\e$,46'\e(B")
-    ("\e$,1@0\e(B" . "\e$,46S6&\e(B")
-    ("\e$,1@2\e(B" . "\e$,46(\e(B")
-    ("\e$,1@3\e(B" . "\e$,46(6M\e(B")
-    ("\e$,1@4\e(B" . "\e$,46(6U\e(B")
-    ;; Consonants
-    ("\e$,1@5\e(B" . "\e$,46)\e(B")
-    ("\e$,1@5@m@5\e(B" . "\e$,47!\e(B")
-    ("\e$,1@5@m@S\e(B" . "\e$,47"\e(B")
-    ("\e$,1@5@m@W\e(B" . "\e$,47#\e(B")
-    ("\e$,1@5@m@?\e(B" . "\e$,47N\e(B")
-    ("\e$,1@5@m@D\e(B" . "\e$,47`\e(B")
-    ("\e$,1@5@a\e(B" . "\e$,47f\e(B")
-    ("\e$,1@5@m@5@a\e(B" . "\e$,47g\e(B")
-    ("\e$,1@5@a\e(B" . "\e$,47f\e(B")
-    ("\e$,1@5@m@5@a\e(B" . "\e$,47g\e(B")
-
-    ("\e$,1@6\e(B" . "\e$,46*\e(B")
-
-    ("\e$,1@7\e(B" . "\e$,46+\e(B")
-    ("\e$,1@7@m@7\e(B" . "\e$,47$\e(B")
-    ("\e$,1@7@m@R\e(B" . "\e$,47%\e(B")
-    ("\e$,1@7@m@N\e(B" . "\e$,47\\e(B")
-    ("\e$,1@7@m@H\e(B" . "\e$,47a\e(B")
-
-    ("\e$,1@8\e(B" . "\e$,46,\e(B")
-
-    ("\e$,1@9\e(B" . "\e$,46-\e(B")
-    ("\e$,1@9@m@5\e(B" . "\e$,47&\e(B")
-    ("\e$,1@9@m@9\e(B" . "\e$,47'\e(B")
-    ("\e$,1@9@m@5@a\e(B" . "\e$,47h\e(B")
-
-    ("\e$,1@:\e(B" . "\e$,46.\e(B")
-    ("\e$,1@:@m@:\e(B" . "\e$,47(\e(B") ;; duplicate
-    ("\e$,1@:@m@;\e(B" . "\e$,47Q\e(B")
-
-    ("\e$,1@;\e(B" . "\e$,46/\e(B")
-
-    ("\e$,1@<\e(B" . "\e$,460\e(B")
-    ("\e$,1@<@m@<\e(B" . "\e$,47V\e(B")
-    ("\e$,1@<@m@>\e(B" . "\e$,47Z\e(B")
-
-    ("\e$,1@=\e(B" . "\e$,461\e(B")
-
-    ("\e$,1@>\e(B" . "\e$,462\e(B")
-    ("\e$,1@>@m@:\e(B" . "\e$,47)\e(B")
-    ("\e$,1@>@m@>\e(B" . "\e$,47*\e(B")
-
-    ("\e$,1@?\e(B" . "\e$,463\e(B")
-    ("\e$,1@?@m@?\e(B" . "\e$,47+\e(B")
-
-    ("\e$,1@@\e(B" . "\e$,464\e(B")
-    ("\e$,1@A\e(B" . "\e$,465\e(B")
-    ("\e$,1@A@m@A\e(B" . "\e$,47M\e(B")
-    ("\e$,1@B\e(B" . "\e$,466\e(B")
-
-    ("\e$,1@C\e(B" . "\e$,467\e(B")
-    ("\e$,1@C@a@m\e(B" . "\e$,47,\e(B") ;; half consonant
-    ("\e$,1@C@m@?\e(B" . "\e$,47-\e(B")
-    ("\e$,1@C@m@C\e(B" . "\e$,47.\e(B")
-    ("\e$,1@C@m@N\e(B" . "\e$,47W\e(B")
-    ("\e$,1@C@m@A\e(B" . "\e$,47^\e(B")
-    ("\e$,1@C@a\e(B" . "\e$,47i\e(B")
-
-    ("\e$,1@D\e(B" . "\e$,468\e(B")
-    ("\e$,1@D@m@D\e(B" . "\e$,47/\e(B")
-    ("\e$,1@D@m@E\e(B" . "\e$,470\e(B")
-    ("\e$,1@D@m@X\e(B" . "\e$,47U\e(B")
-    ("\e$,1@D@m@M\e(B" . "\e$,47[\e(B")
-    ("\e$,1@D@m@N\e(B" . "\e$,47_\e(B")
-
-    ("\e$,1@E\e(B" . "\e$,469\e(B")
-
-    ("\e$,1@F\e(B" . "\e$,46:\e(B")
-    ("\e$,1@F@m@F\e(B" . "\e$,471\e(B")
-    ("\e$,1@F@m@G\e(B" . "\e$,472\e(B")
-
-    ("\e$,1@G\e(B" . "\e$,46;\e(B")
-
-    ("\e$,1@H\e(B" . "\e$,46<\e(B")
-    ("\e$,1@H@a@m\e(B" . "\e$,473\e(B") ;; half consonant
-    ("\e$,1@H@m@D\e(B" . "\e$,474\e(B")
-    ("\e$,1@H@m@F\e(B" . "\e$,475\e(B")
-    ("\e$,1@H@m@H\e(B" . "\e$,476\e(B")
-    ("\e$,1@H@m@N\e(B" . "\e$,477\e(B")
-    ("\e$,1@H@m@G\e(B" . "\e$,47T\e(B")
-    ("\e$,1@H@m@E\e(B" . "\e$,47Y\e(B")
-    ("\e$,1@H@m@Q\e(B" . "\e$,47b\e(B")
-    ("\e$,1@H@a\e(B" . "\e$,47k\e(B")
-    ("\e$,1@H@m@H@a\e(B" . "\e$,47l\e(B")
-
-    ("\e$,1@J\e(B" . "\e$,46=\e(B")
-    ("\e$,1@J@m@J\e(B" . "\e$,478\e(B") ;; duplicate
-    ("\e$,1@J@m@R\e(B" . "\e$,479\e(B") ;; lakar
-
-    ("\e$,1@K\e(B" . "\e$,46>\e(B")
-
-    ("\e$,1@L\e(B" . "\e$,46?\e(B")
-    ("\e$,1@L@m@L\e(B" . "\e$,47:\e(B") ;; duplicate
-    ("\e$,1@L@m@R\e(B" . "\e$,47;\e(B") ;; lakar
-    ("\e$,1@L@m@G\e(B" . "\e$,47O\e(B")
-    ("\e$,1@L@m@F\e(B" . "\e$,47P\e(B")
-
-    ("\e$,1@M\e(B" . "\e$,46@\e(B")
-
-    ("\e$,1@N\e(B" . "\e$,46A\e(B")
-    ("\e$,1@N@m@J\e(B" . "\e$,47<\e(B")
-    ("\e$,1@N@m@N\e(B" . "\e$,47=\e(B")
-    ("\e$,1@N@m@R\e(B" . "\e$,47>\e(B") ;; lakar
-
-    ("\e$,1@O\e(B" . "\e$,46B\e(B")
-    ("\e$,1@O@m@O\e(B" . "\e$,47?\e(B") ;; duplicate
-    ("\e$,1@O@m@5@m@5\e(B" . "\e$,47m\e(B")
-
-    ("\e$,1@P\e(B" . "\e$,46C\e(B")
-    ("\e$,1@P@a@m\e(B" . "\e$,47@\e(B")
-    ("\e$,1@P@a\e(B" . "\e$,47j\e(B")
-
-    ("\e$,1@Q\e(B" . "\e$,46D\e(B")
-    ("\e$,1@Q@m\e(B" . "\e$,47@\e(B") ;; same glyph as "\e$,1@P@m\e(B"
-    ("\e$,1@Q@a@m\e(B" . "\e$,47@\e(B") ;; same glyph as "\e$,1@P@m\e(B"
-    ;;("\e$,1@Q@m@Q\e(B" . "\e$,47A\e(B")
-    ("\e$,1@Q@m@Q\e(B" . "\e$,47d\e(B")
-
-    ("\e$,1@R\e(B" . "\e$,46E\e(B")
-    ("\e$,1@R@a@m\e(B" . "\e$,47B\e(B")
-    ("\e$,1@R@m@R\e(B" . "\e$,47C\e(B") ;; lakar
-    ("\e$,1@R@m@J\e(B" . "\e$,47e\e(B")
-
-    ("\e$,1@S\e(B" . "\e$,46F\e(B")
-    ("\e$,1@S@a@m\e(B" . "\e$,47D\e(B")
-    ("\e$,1@S@m@S\e(B" . "\e$,47E\e(B")
-
-    ("\e$,1@T\e(B" . "\e$,46G\e(B")
-
-    ("\e$,1@U\e(B" . "\e$,46H\e(B")
-    ("\e$,1@U@m@U\e(B" . "\e$,47F\e(B")
-
-    ("\e$,1@V\e(B" . "\e$,46I\e(B")
-    ("\e$,1@V@m@R\e(B" . "\e$,47G\e(B")
-    ("\e$,1@V@m@V\e(B" . "\e$,47H\e(B")
-    ("\e$,1@V@m@:\e(B" . "\e$,47]\e(B")
-
-    ("\e$,1@W\e(B" . "\e$,46J\e(B")
-    ("\e$,1@W@m@?\e(B" . "\e$,47c\e(B")
-
-    ("\e$,1@X\e(B" . "\e$,46K\e(B")
-    ("\e$,1@X@m@R\e(B" . "\e$,47I\e(B")
-    ("\e$,1@X@m@X\e(B" . "\e$,47J\e(B")
-    ("\e$,1@X@m@Q@m@Q\e(B" . "\e$,47L\e(B")
-    ("\e$,1@X@m@E\e(B" . "\e$,47X\e(B")
-
-    ("\e$,1@Y\e(B" . "\e$,46L\e(B")
-    ("\e$,1@Y@m@R\e(B" . "\e$,47K\e(B")
-    ("\e$,1@Y@m@N\e(B" . "\e$,47R\e(B")
-    ("\e$,1@Y@m@H\e(B" . "\e$,47S\e(B")
-
-    ;; Dependent vowel signs
-    ("\e$,1@^\e(B" . "\e$,46M\e(B")
-    ("\e$,1@_\e(B" . "\e$,46N\e(B")
-    ("\e$,1@`\e(B" . "\e$,46O\e(B")
-    ("\e$,1@a\e(B" . "\e$,46P\e(B")
-    ("\e$,1@b\e(B" . "\e$,46Q\e(B")
-    ("\e$,1@c\e(B" . "\e$,46R\e(B")
-    ("\e$,1@f\e(B" . "\e$,46S\e(B")
-    ("\e$,1@g\e(B" . "\e$,46T\e(B")
-    ("\e$,1@h\e(B" . "\e$,46S6S\e(B")
-    ("\e$,1@j\e(B" . "\e$,46S6M\e(B")
-    ("\e$,1@k\e(B" . "\e$,46T6M\e(B")
-    ("\e$,1@l\e(B" . "\e$,46U\e(B")
-    ;; Various signs
-    ("\e$,1@m\e(B" . "\e$,46V\e(B")
-    ("\e$,1@m@O\e(B" . "\e$,46Y\e(B") ;; yakar
-    ("\e$,1@m@O@a\e(B" . "\e$,46\\e(B") ;; yakar + u
-    ("\e$,1@m@O@b\e(B" . "\e$,46]\e(B") ;; yakar + uu
-    ("\e$,1@m@U\e(B" . "\e$,46Z\e(B") ;; vakar modifier
-    ("\e$,1@m@P\e(B" . "\e$,46[\e(B") ;; rakar modifier is the same to rra modifier.
-    ("\e$,1@m@P@m\e(B" . "\e$,46R\e(B") ;; halant + rakar + halant
-    ("\e$,1@m@Q\e(B" . "\e$,46[\e(B") ;; rrakar modifier
-    ("\e$,1@m@Q@m\e(B" . "\e$,46R\e(B") ;; halant + rrakar + halant
-    ("\e$,1@m@m\e(B" . "\e$,46V\e(B") ;; double omission sign to stop forming half consonant.
-    ("\e$,1@w\e(B" . "\e$,46U\e(B") ;; not in present use, already at 0D4C.
-    ))
-
-(defvar mlm-char-glyph-hash
-  (let* ((hash (make-hash-table :test 'equal)))
-    (mapc (function (lambda (x) (puthash (car x) (cdr x) hash)))
-         mlm-char-glyph)
-    hash))
-
-(defvar mlm-char-glyph-regexp
-  (malayalam-regexp-of-hashtbl-keys mlm-char-glyph-hash))
-
-;; Malayalam languages needed to be reordered in a complex mannar.
-
-(defvar mlm-consonants
-  (concat
-  "\e$,46)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L\e(B"
-  "\e$,47!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e\e(B"
-  ))
-
-(defvar mlm-consonants-regexp
-  (concat "\\(\e$,46[\e(B?[" mlm-consonants "][\e$,46Y6Z\e(B]?\\)"))
-
-(defvar mlm-glyph-reorder-key-glyphs "[\e$,46[6S6T\e(B]")
-
-(defvar mlm-glyph-reordering-regexp-list
-  `((,(concat "\\([" mlm-consonants "][\e$,46Y6Z\e(B]?\\)\e$,46[\e(B") . "\e$,46[\e(B\\1")
-    (,(concat mlm-consonants-regexp "\e$,46S6S\e(B") . "\e$,46S6S\e(B\\1")
-    (,(concat mlm-consonants-regexp "\e$,46S\e(B") . "\e$,46S\e(B\\1")
-    (,(concat mlm-consonants-regexp "\e$,46T\e(B") . "\e$,46T\e(B\\1")))
-
-(defun malayalam-compose-syllable-string (string)
-  (with-temp-buffer
-    (insert (decompose-string string))
-    (malayalam-compose-syllable-region (point-min) (point-max))
-    (buffer-string)))
-
-(defun malayalam-compose-syllable-region (from to)
-  "Compose malayalam syllable in region FROM to TO."
-  (let (glyph-str
-       match-str
-       glyph-reorder-regexps
-       glyph-reorder-replace
-       glyph-reorder-regexp)
-    (save-excursion
-      (save-restriction
-        (narrow-to-region from to)
-        (goto-char (point-min))
-        ;; char-glyph-conversion
-        (while (not (eobp))
-         (if (looking-at mlm-char-glyph-regexp)
-             (progn
-               (setq match-str (match-string 0)
-                     glyph-str
-                     (concat glyph-str
-                             (gethash match-str mlm-char-glyph-hash)))
-               (goto-char (match-end 0)))
-           (setq glyph-str (concat glyph-str (string (following-char))))
-           (forward-char 1)))
-        (when (string-match mlm-glyph-reorder-key-glyphs glyph-str)
-          ;; glyph reordering
-          (setq glyph-reorder-regexps mlm-glyph-reordering-regexp-list)
-          (while glyph-reorder-regexps
-            (setq glyph-reorder-regexp (caar glyph-reorder-regexps))
-            (setq glyph-reorder-replace (cdar glyph-reorder-regexps))
-            (setq glyph-reorder-regexps (cdr glyph-reorder-regexps))
-            (if (string-match glyph-reorder-regexp glyph-str)
-                (setq glyph-str
-                      (replace-match glyph-reorder-replace nil nil
-                                     glyph-str)))))
-        ;; concatenate and attach reference-points.
-        (setq glyph-str
-              (cdr
-               (apply
-                'nconc
-                (mapcar
-                 (function
-                  (lambda (x) (list '(5 . 3) x))) ;; default ref. point.
-                 glyph-str))))
-        (compose-region from to glyph-str)))))
-
-(provide 'mlm-util)
-
-;;; arch-tag: 7f25ee67-8f9d-49f2-837b-35c412c00eba
-;;; devan-util.el ends here
diff --git a/lisp/language/tamil.el b/lisp/language/tamil.el
deleted file mode 100644 (file)
index c66f572..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-;;; tamil.el --- Support for Tamil -*- coding: iso-2022-7bit; no-byte-compile: t -*-
-
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
-;;   Free Software Foundation, Inc.
-
-;; Maintainer: KAWABATA, Taichi <batta@beige.ocn.ne.jp>
-;; Keywords: multilingual, Indian, Tamil
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; This file defines language-info of Tamil script.
-
-;;; Code:
-
-(set-language-info-alist
- "Tamil" '((charset mule-unicode-0100-24ff indian-glyph )
-               (coding-system utf-8)
-               (coding-priority utf-8)
-               (input-method . "tamil-itrans")
-               (features tml-util)
-               (documentation . "\
-South Indian Language Tamil supported in this language environment."))
- '("Indian"))
-
-;; For automatic composition.
-(set-char-table-range composition-function-table '(#x0b80 . #x0bff)
-                     '(("[\x0B80-\x0BFF]+" . font-shape-text)))
-(provide 'tamil)
-
-;;; arch-tag: 2201ac78-7d1e-4674-9bcb-9923c7a2bd9c
-;;; tamil.el ends here
diff --git a/lisp/language/tml-util.el b/lisp/language/tml-util.el
deleted file mode 100644 (file)
index 6232a44..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-;;; tml-util.el --- support for composing tamil characters  -*-coding: iso-2022-7bit;-*-
-
-;; Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007, 2008
-;;   Free Software Foundation, Inc.
-
-;; Maintainer: KAWABATA, Taichi <kawabata@m17n.org>
-;; Keywords: multilingual, Indian, Tamil
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;; Created: Nov. 08. 2002
-
-;;; Commentary:
-
-;; This file provides character(Unicode) to glyph(CDAC) conversion and
-;; composition of Tamil script characters.
-
-;;; Code:
-
-;; Tamil Composable Pattern
-;;    C .. Consonants
-;;    V .. Vowel
-;;    H .. Pulli
-;;    M .. Matra
-;;    V .. Vowel
-;;    A .. Anuswar
-;;    D .. Chandrabindu
-;; 1. vowel
-;;  V
-;; 2. syllable : only ligature-formed pattern forms composition.
-;;  (CkHCs|C)(H|M)?
-;; 3. sri special
-;;  (CsHCrVi)
-
-;;  oririnal
-;;  ((CH)?(CH)?(CH)?CH)?C(H|M?(A|D)?)?
-
-(defconst tamil-consonant
-  "[\e$,1<5\e(B-\e$,1<Y\e(B]")
-
-(defconst tamil-composable-pattern
-  (concat
-   "\\([\e$,1<%\e(B-\e$,1<4\e(B]\\)\\|"
-   "[\e$,1<"<#\e(B]\\|" ;; vowel modifier considered independent
-   "\\(\\(?:\\(?:\e$,1<5<m<W\e(B\\)\\|[\e$,1<5\e(B-\e$,1<Y\e(B]\\)[\e$,1<m<^\e(B-\e$,1<l\e(B]?\\)\\|"
-   "\\(\e$,1<W<m<P<`\e(B\\)")
-  "Regexp matching a composable sequence of Tamil characters.")
-
-;;;###autoload
-(defun tamil-compose-region (from to)
-  (interactive "r")
-  (save-excursion
-    (save-restriction
-      (narrow-to-region from to)
-      (goto-char (point-min))
-      (while (re-search-forward tamil-composable-pattern nil t)
-       (tamil-compose-syllable-region (match-beginning 0)
-                                           (match-end 0))))))
-(defun tamil-compose-string (string)
-  (with-temp-buffer
-    (insert (decompose-string string))
-    (tamil-compose-region (point-min) (point-max))
-    (buffer-string)))
-
-;;;###autoload
-(defun tamil-post-read-conversion (len)
-  (save-excursion
-    (save-restriction
-      (let ((buffer-modified-p (buffer-modified-p)))
-       (narrow-to-region (point) (+ (point) len))
-       (tamil-compose-region (point-min) (point-max))
-       (set-buffer-modified-p buffer-modified-p)
-       (- (point-max) (point-min))))))
-
-(defun tamil-range (from to)
-  "Make the list of the integers of range FROM to TO."
-  (let (result)
-    (while (<= from to) (setq result (cons to result) to (1- to))) result))
-
-(defun tamil-regexp-of-hashtbl-keys (hashtbl)
-  "Return a regular expression that matches all keys in hashtable HASHTBL."
-  (let ((max-specpdl-size 1000))
-    (regexp-opt
-     (sort
-      (let (dummy)
-       (maphash (function (lambda (key val) (setq dummy (cons key dummy)))) hashtbl)
-       dummy)
-      (function (lambda (x y) (> (length x) (length y))))))))
-
-
-;; Notes on conversion steps.
-
-;; 1. chars to glyphs
-;; Simple replacement of characters to glyphs is done.
-
-;; 2. glyphs reordering.
-;; following "\e$,4)j\e(B", "\e$,4)k\e(B", "\e$,4)l\e(B" goes to the front.
-
-;; 3. glyphs to glyphs
-;; reordered vowels are ligatured to consonants.
-
-;; 4. Composition.
-;; left modifiers will be attached at the left.
-;; others will be attached right.
-
-(defvar tml-char-glyph
-  '(;; various signs
-    ("\e$,1<"\e(B" . "\e$,4)b\e(B")        ;; not good
-    ("\e$,1<#\e(B" . "\e$,4*G\e(B")
-    ;; Independent Vowels
-    ("\e$,1<%\e(B" . "\e$,4*<\e(B")
-    ("\e$,1<&\e(B" . "\e$,4*=\e(B")
-    ("\e$,1<'\e(B" . "\e$,4*>\e(B")
-    ("\e$,1<(\e(B" . "\e$,4*?\e(B")
-    ("\e$,1<)\e(B" . "\e$,4*@\e(B")
-    ("\e$,1<*\e(B" . "\e$,4*A\e(B")
-    ("\e$,1<.\e(B" . "\e$,4*B\e(B")
-    ("\e$,1</\e(B" . "\e$,4*C\e(B")
-    ("\e$,1<0\e(B" . "\e$,4*D\e(B")
-    ("\e$,1<2\e(B" . "\e$,4*E\e(B")
-    ("\e$,1<3\e(B" . "\e$,4*F\e(B")
-    ("\e$,1<4\e(B" . "\e$,4*E*W\e(B")
-    ;; Consonants
-    ("\e$,1<5<m<W<m\e(B" . "\e$,4):\e(B")  ; ks.
-    ("\e$,1<5<m<W\e(B" . "\e$,4*^\e(B")    ; ks
-    ("\e$,1<5\e(B" . "\e$,4*H\e(B")
-
-    ("\e$,1<9\e(B" . "\e$,4*I\e(B")
-    ("\e$,1<:\e(B" . "\e$,4*J\e(B")
-    ("\e$,1<<\e(B" . "\e$,4*\\e(B")
-    ("\e$,1<<<m\e(B" . "\e$,4)8\e(B")
-    ("\e$,1<>\e(B" . "\e$,4*K\e(B")
-    ("\e$,1<?\e(B" . "\e$,4*L\e(B")
-    ("\e$,1<C\e(B" . "\e$,4*M\e(B")
-    ("\e$,1<D\e(B" . "\e$,4*N\e(B")
-    ("\e$,1<H\e(B" . "\e$,4*O\e(B")
-    ("\e$,1<I\e(B" . "\e$,4*Y\e(B")
-    ("\e$,1<I<m\e(B" . "\e$,4)a\e(B")
-    ("\e$,1<J\e(B" . "\e$,4*P\e(B")
-    ("\e$,1<N\e(B" . "\e$,4*Q\e(B")
-    ("\e$,1<O\e(B" . "\e$,4*R\e(B")
-    ("\e$,1<P\e(B" . "\e$,4*S\e(B")
-    ("\e$,1<Q\e(B" . "\e$,4*X\e(B")
-    ("\e$,1<R\e(B" . "\e$,4*T\e(B")
-    ("\e$,1<S\e(B" . "\e$,4*W\e(B")
-    ("\e$,1<T\e(B" . "\e$,4*V\e(B")
-    ("\e$,1<U\e(B" . "\e$,4*U\e(B")
-    ("\e$,1<W\e(B" . "\e$,4*[\e(B")
-    ("\e$,1<W<m\e(B" . "\e$,4)7\e(B")
-    ("\e$,1<W<m<P<`\e(B" . "\e$,4*_\e(B")
-    ("\e$,1<X\e(B" . "\e$,4*Z\e(B")
-    ("\e$,1<X<m\e(B" . "\e$,4)6\e(B")
-    ("\e$,1<Y\e(B" . "\e$,4*]\e(B")
-    ("\e$,1<Y<m\e(B" . "\e$,4)9\e(B")
-
-    ;; Dependent vowel signs
-    ("\e$,1<^\e(B" . "\e$,4)c\e(B")
-    ("\e$,1<_\e(B" . "\e$,4)d\e(B")
-    ("\e$,1<`\e(B" . "\e$,4)f\e(B")
-    ("\e$,1<a\e(B" . "\e$,4)g\e(B")
-    ("\e$,1<b\e(B" . "\e$,4)h\e(B")
-    ("\e$,1<f\e(B" . "\e$,4)j\e(B")
-    ("\e$,1<g\e(B" . "\e$,4)k\e(B")
-    ("\e$,1<h\e(B" . "\e$,4)l\e(B")
-    ("\e$,1<j\e(B" . "\e$,4)j)c\e(B")
-    ("\e$,1<k\e(B" . "\e$,4)k)c\e(B")
-    ("\e$,1<l\e(B" . "\e$,4)j*W\e(B")
-
-    ;; Various signs
-    ("\e$,1<m\e(B" . "\e$,4)b\e(B")
-    ("\e$,1<w\e(B" . "nil") ;; not supported?
-    ))
-
-(defvar tml-char-glyph-hash
-  (let* ((hash (make-hash-table :test 'equal)))
-    (mapc (function (lambda (x) (puthash (car x) (cdr x) hash)))
-         tml-char-glyph)
-    hash))
-
-(defvar tml-char-glyph-regexp
-  (tamil-regexp-of-hashtbl-keys tml-char-glyph-hash))
-
-;; Tamil languages needed to be reordered.
-
-(defvar tml-consonants-regexp
-  "[\e$,4*H*^*I*J*\*K*L*M*N*O*Y*P*Q*R*S*X*T*W*V*U*[*Z*]\e(B]")
-
-(defvar tml-glyph-reorder-key-glyphs "[\e$,4)j)k)l\e(B]")
-
-(defvar tml-glyph-reordering-regexp-list
-  (cons
-   (concat "\\(" tml-consonants-regexp "\\)\\([\e$,4)j)k)l\e(B]\\)") "\\2\\1"))
-
-;; Tamil vowel modifiers to be ligatured.
-(defvar tml-glyph-glyph
-  '(
-    ("\e$,4*H)d\e(B" . "\e$,4(a\e(B")      ; ki
-    ("\e$,4*^)d\e(B" . "\e$,4(v\e(B")      ; ksi
-    ("\e$,4*^)f\e(B" . "\e$,4)2\e(B")      ; ksi~
-    ("\e$,4*I)d\e(B" . "\e$,4(b\e(B")      ; n^i
-    ("\e$,4*J)d\e(B" . "\e$,4(c\e(B")      ; ci
-    ("\e$,4*K)d\e(B" . "\e$,4(d\e(B")      ; n~i
-    ("\e$,4*L)d\e(B" . "\e$,4)n\e(B")      ; t.i
-    ("\e$,4*M)d\e(B" . "\e$,4(e\e(B")      ; n.i
-    ("\e$,4*N)d\e(B" . "\e$,4(f\e(B")      ; ti
-    ("\e$,4*O)d\e(B" . "\e$,4(g\e(B")      ; ni
-    ("\e$,4*P)d\e(B" . "\e$,4(h\e(B")      ; pi
-    ("\e$,4*Q)d\e(B" . "\e$,4(i\e(B")      ; mi
-    ("\e$,4*R)d\e(B" . "\e$,4(j\e(B")      ; yi
-    ("\e$,4*S)d\e(B" . "\e$,4(k\e(B")      ; ri
-    ("\e$,4*T)d\e(B" . "\e$,4(l\e(B")      ; li
-    ("\e$,4*U)d\e(B" . "\e$,4(m\e(B")      ; vi
-    ("\e$,4*V)d\e(B" . "\e$,4(n\e(B")      ; l_i
-    ("\e$,4*W)d\e(B" . "\e$,4(o\e(B")      ; l.i
-    ("\e$,4*X)d\e(B" . "\e$,4(p\e(B")      ; r_i
-    ("\e$,4*Y)d\e(B" . "\e$,4(q\e(B")      ; n_i
-    ("\e$,4*Z)d\e(B" . "\e$,4(r\e(B")      ; si
-    ("\e$,4*[)d\e(B" . "\e$,4(s\e(B")      ; s'i
-    ("\e$,4*\)d\e(B" . "\e$,4(t\e(B")      ; ji
-    ("\e$,4*])d\e(B" . "\e$,4(u\e(B")      ; hi
-
-    ("\e$,4*H)f\e(B" . "\e$,4(w\e(B")      ; ki~
-    ("\e$,4*I)f\e(B" . "\e$,4(x\e(B")      ; n^i~
-    ("\e$,4*J)f\e(B" . "\e$,4(y\e(B")      ; ci~
-    ("\e$,4*K)f\e(B" . "\e$,4(z\e(B")      ; n~i~
-    ("\e$,4*L)f\e(B" . "\e$,4)o\e(B")      ; t.i~
-    ("\e$,4*M)f\e(B" . "\e$,4)!\e(B")      ; n.i~
-    ("\e$,4*N)f\e(B" . "\e$,4)"\e(B")      ; ti~
-    ("\e$,4*O)f\e(B" . "\e$,4)#\e(B")      ; ni~
-    ("\e$,4*P)f\e(B" . "\e$,4)$\e(B")      ; pi~
-    ("\e$,4*Q)f\e(B" . "\e$,4)%\e(B")      ; mi~
-    ("\e$,4*R)f\e(B" . "\e$,4)&\e(B")      ; yi~
-    ("\e$,4*S)f\e(B" . "\e$,4)'\e(B")      ; ri~
-    ("\e$,4*T)f\e(B" . "\e$,4)(\e(B")      ; li~
-    ("\e$,4*U)f\e(B" . "\e$,4))\e(B")      ; vi~
-    ("\e$,4*V)f\e(B" . "\e$,4)*\e(B")      ; l_i~
-    ("\e$,4*W)f\e(B" . "\e$,4)+\e(B")      ; l.i~
-    ("\e$,4*X)f\e(B" . "\e$,4),\e(B")      ; r_i~
-    ("\e$,4*Y)f\e(B" . "\e$,4)-\e(B")      ; n_i~
-    ("\e$,4*Z)f\e(B" . "\e$,4).\e(B")      ; si~
-    ("\e$,4*[)f\e(B" . "\e$,4)/\e(B")      ; s'i~
-    ("\e$,4*\)f\e(B" . "\e$,4)0\e(B")      ; ji~
-    ("\e$,4*])f\e(B" . "\e$,4)1\e(B")      ; hi~
-
-    ("\e$,4*H)g\e(B" . "\e$,4)p\e(B")      ; ku
-    ("\e$,4*I)g\e(B" . "\e$,4)q\e(B")      ; n^u
-    ("\e$,4*J)g\e(B" . "\e$,4)r\e(B")      ; cu
-    ("\e$,4*K)g\e(B" . "\e$,4)s\e(B")      ; n~u
-    ("\e$,4*L)g\e(B" . "\e$,4)t\e(B")      ; t.u
-    ("\e$,4*M)g\e(B" . "\e$,4)u\e(B")      ; n.u
-    ("\e$,4*N)g\e(B" . "\e$,4)v\e(B")      ; tu
-    ("\e$,4*O)g\e(B" . "\e$,4)x\e(B")      ; nu
-    ("\e$,4*P)g\e(B" . "\e$,4)y\e(B")      ; pu
-    ("\e$,4*Q)g\e(B" . "\e$,4)z\e(B")      ; mu
-    ("\e$,4*R)g\e(B" . "\e$,4){\e(B")      ; yu
-    ("\e$,4*S)g\e(B" . "\e$,4)|\e(B")      ; ru
-    ("\e$,4*T)g\e(B" . "\e$,4)}\e(B")      ; lu
-    ("\e$,4*U)g\e(B" . "\e$,4)~\e(B")      ; vu
-    ("\e$,4*V)g\e(B" . "\e$,4)\7f\e(B")      ; l_u
-    ("\e$,4*W)g\e(B" . "\e$,4* \e(B")      ; l.u
-    ("\e$,4*X)g\e(B" . "\e$,4*!\e(B")      ; r_u
-    ("\e$,4*Y)g\e(B" . "\e$,4*"\e(B")      ; n_u
-
-    ("\e$,4*H)h\e(B" . "\e$,4*#\e(B")      ; ku~
-    ("\e$,4*I)h\e(B" . "\e$,4*$\e(B")      ; n^u~
-    ("\e$,4*J)h\e(B" . "\e$,4*%\e(B")      ; cu~
-    ("\e$,4*K)h\e(B" . "\e$,4*&\e(B")      ; n~u~
-    ("\e$,4*L)h\e(B" . "\e$,4*'\e(B")      ; t.u~
-    ("\e$,4*M)h\e(B" . "\e$,4*(\e(B")      ; n.u~
-    ("\e$,4*N)h\e(B" . "\e$,4*)\e(B")      ; tu~
-    ("\e$,4*O)h\e(B" . "\e$,4*+\e(B")      ; nu~
-    ("\e$,4*P)h\e(B" . "\e$,4*,\e(B")      ; pu~
-    ("\e$,4*Q)h\e(B" . "\e$,4*-\e(B")      ; mu~
-    ("\e$,4*R)h\e(B" . "\e$,4*.\e(B")      ; yu~
-    ("\e$,4*S)h\e(B" . "\e$,4*/\e(B")      ; ru~
-    ("\e$,4*T)h\e(B" . "\e$,4*6\e(B")      ; lu~
-    ("\e$,4*U)h\e(B" . "\e$,4*7\e(B")      ; vu~
-    ("\e$,4*V)h\e(B" . "\e$,4*8\e(B")      ; l_u~
-    ("\e$,4*W)h\e(B" . "\e$,4*9\e(B")      ; l.u~
-    ("\e$,4*X)h\e(B" . "\e$,4*:\e(B")      ; r_u~
-    ("\e$,4*Y)h\e(B" . "\e$,4*;\e(B")      ; n_u~
-    ))
-
-(defvar tml-glyph-glyph-hash
-  (let* ((hash (make-hash-table :test 'equal)))
-    (mapc (function (lambda (x) (puthash (car x) (cdr x) hash)))
-         tml-glyph-glyph)
-    hash))
-
-(defvar tml-glyph-glyph-regexp
-  (tamil-regexp-of-hashtbl-keys tml-glyph-glyph-hash))
-
-(defun tamil-compose-syllable-string (string)
-  (with-temp-buffer
-    (insert (decompose-string string))
-    (tamil-compose-syllable-region (point-min) (point-max))
-    (buffer-string)))
-
-(defun tamil-compose-syllable-region (from to)
-  "Compose tamil syllable in region FROM to TO."
-  (let (glyph-str match-str glyph-reorder-regexps)
-    (save-excursion
-      (save-restriction
-        (narrow-to-region from to)
-        (goto-char (point-min))
-        ;; char-glyph-conversion
-        (while (not (eobp))
-         (if (looking-at tml-char-glyph-regexp)
-             (progn
-               (setq match-str (match-string 0)
-                     glyph-str
-                     (concat glyph-str
-                             (gethash match-str tml-char-glyph-hash)))
-               (goto-char (match-end 0)))
-           (setq glyph-str (concat glyph-str (string (following-char))))
-           (forward-char 1)))
-       (or glyph-str
-           (aset glyph-str 0 (following-char)))
-        ;; glyph reordering
-        (when (string-match tml-glyph-reorder-key-glyphs glyph-str)
-          (if (string-match (car tml-glyph-reordering-regexp-list)
-                            glyph-str)
-              (setq glyph-str
-                    (replace-match (cdr tml-glyph-reordering-regexp-list)
-                                   nil nil glyph-str))))
-        ;; glyph-glyph-conversion
-        (when (string-match tml-glyph-glyph-regexp glyph-str)
-          (setq match-str (match-string 0 glyph-str))
-          (setq glyph-str 
-                (replace-match (gethash match-str tml-glyph-glyph-hash)
-                               nil nil glyph-str)))
-        ;; concatenate and attach reference-points.
-        (setq glyph-str
-              (cdr
-               (apply
-                'nconc
-                (mapcar
-                 (function 
-                  (lambda (x) (list '(5 . 3) x))) ;; default ref. point.
-                 glyph-str))))
-        (compose-region from to glyph-str)))))
-
-;;;###autoload
-(defun tamil-composition-function (pos  &optional string)
-  "Compose Tamil characters after the position POS.
-If STRING is not nil, it is a string, and POS is an index to the string.
-In this case, compose characters after POS of the string."
-  (if string
-      (if auto-compose-current-font
-         (if (eq (string-match "[\e$,1< \e(B-\e$,1=?\e(B]+" pos) pos)
-             (or (font-shape-text 0 (match-end 0) auto-compose-current-font
-                                  string)
-                 pos)))
-    (goto-char pos)
-    (if auto-compose-current-font
-       (if (looking-at "[\e$,1< \e(B-\e$,1=?\e(B]+")
-           (or (font-shape-text pos (match-end 0) auto-compose-current-font))
-         (if (looking-at tamil-composable-pattern)
-             (prog1 (match-end 0)
-               (tamil-compose-syllable-region pos (match-end 0))))))))
-
-(provide 'tml-util)
-
-;;; arch-tag: 4d1c9737-e7b1-44cf-a040-4f64c50e773e
-;;; tml-util.el ends here