emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/language/devan-util.el


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/lisp/language/devan-util.el
Date: Wed, 17 Sep 2003 02:41:37 -0400

Index: emacs/lisp/language/devan-util.el
diff -c emacs/lisp/language/devan-util.el:1.43 
emacs/lisp/language/devan-util.el:1.44
*** emacs/lisp/language/devan-util.el:1.43      Mon Sep  1 11:45:29 2003
--- emacs/lisp/language/devan-util.el   Wed Sep 17 02:41:36 2003
***************
*** 75,80 ****
--- 75,81 ----
      (devanagari-compose-region (point-min) (point-max))
      (buffer-string)))
  
+ ;;;###autoload
  (defun devanagari-post-read-conversion (len)
    (save-excursion
      (save-restriction
***************
*** 564,647 ****
  (defun devanagari-compose-syllable-region (from to)
    "Compose devanagari syllable in region FROM to TO."
    (let ((glyph-str nil) (cons-num 0) glyph-str-list
!         (last-halant nil) (preceding-r nil) (last-modifier nil)
!         (last-char (char-before to)) match-str
!         glyph-block split-pos)
      (save-excursion
        (save-restriction
!           ;;; *** char-to-glyph conversion ***
!         ;; Special rule 1. -- Last halant must be preserved.
!         (if (eq last-char ?$,16-(B)
!             (progn
!               (setq last-halant t)
!               (narrow-to-region from (1- to)))
!           (narrow-to-region from to)
!           ;; note if the last char is modifier.
!           (if (or (eq last-char ?$,15A(B) (eq last-char ?$,15B(B))
!               (setq last-modifier t)))
!         (goto-char (point-min))
!         ;; Special rule 2. -- preceding "r halant" must be modifier.
!         (when (looking-at "$,15p6-(B.")
!           (setq preceding-r t)
!           (goto-char (+ 2 (point))))
!         ;; translate the rest characters into glyphs
!         (while (re-search-forward dev-char-glyph-regexp nil t)
!           (setq match-str (match-string 0))
!           (setq glyph-str
!                 (concat glyph-str
!                         (gethash match-str dev-char-glyph-hash)))
!           ;; count the number of consonant-glyhs.
!           (if (string-match devanagari-consonant match-str)
!               (setq cons-num (1+ cons-num))))
!         ;; preceding-r must be attached before the anuswar if exists.
!         (if preceding-r
!             (if last-modifier
!                 (setq glyph-str (concat (substring glyph-str 0 -1)
!                                         "$,4"'(B" (substring glyph-str -1)))
!               (setq glyph-str (concat glyph-str "$,4"'(B"))))
!         (if last-halant (setq glyph-str (concat glyph-str "$,4""(B")))
!           ;;; *** glyph-to-glyph conversion ***
!         (when (string-match dev-glyph-glyph-regexp glyph-str)
!           (setq glyph-str
!                 (replace-match (gethash (match-string 0 glyph-str)
!                                         dev-glyph-glyph-hash)
!                                nil t glyph-str))
!           (if (and (> cons-num 1)
!                    (string-match dev-glyph-glyph-2-regexp glyph-str))
!               (setq glyph-str
!                     (replace-match (gethash (match-string 0 glyph-str)
!                                             dev-glyph-glyph-2-hash)
!                                    nil t glyph-str))))
!           ;;; *** glyph reordering ***
!         (while (setq split-pos (string-match "$,4""(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
!            (if (string-match dev-glyph-right-modifier-regexp 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)))))
!              (sort (string-to-list glyph-block)
!                    (function (lambda (x y)
!                       (let ((xo (get-char-code-property x 'composition-order))
!                             (yo (get-char-code-property y 
'composition-order)))
!                         (if (= xo 2) nil (if (= yo 2) t (< xo yo)))))))))
!           (setq glyph-str-list (nconc glyph-str-list glyph-block)))
!           ;; 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 'devan-util)
--- 565,648 ----
  (defun devanagari-compose-syllable-region (from to)
    "Compose devanagari syllable in region FROM to TO."
    (let ((glyph-str nil) (cons-num 0) glyph-str-list
!       (last-halant nil) (preceding-r nil) (last-modifier nil)
!       (last-char (char-before to)) match-str
!       glyph-block split-pos)
      (save-excursion
        (save-restriction
!         ;;; *** char-to-glyph conversion ***
!       ;; Special rule 1. -- Last halant must be preserved.
!       (if (eq last-char ?$,16-(B)
!           (progn
!             (setq last-halant t)
!             (narrow-to-region from (1- to)))
!         (narrow-to-region from to)
!         ;; note if the last char is modifier.
!         (if (or (eq last-char ?$,15A(B) (eq last-char ?$,15B(B))
!             (setq last-modifier t)))
!       (goto-char (point-min))
!       ;; Special rule 2. -- preceding "r halant" must be modifier.
!       (when (looking-at "$,15p6-(B.")
!         (setq preceding-r t)
!         (goto-char (+ 2 (point))))
!       ;; translate the rest characters into glyphs
!       (while (re-search-forward dev-char-glyph-regexp nil t)
!         (setq match-str (match-string 0))
!         (setq glyph-str
!               (concat glyph-str
!                       (gethash match-str dev-char-glyph-hash)))
!         ;; count the number of consonant-glyhs.
!         (if (string-match devanagari-consonant match-str)
!             (setq cons-num (1+ cons-num))))
!       ;; preceding-r must be attached before the anuswar if exists.
!       (if preceding-r
!           (if last-modifier
!               (setq glyph-str (concat (substring glyph-str 0 -1)
!                                       "$,4"'(B" (substring glyph-str -1)))
!             (setq glyph-str (concat glyph-str "$,4"'(B"))))
!       (if last-halant (setq glyph-str (concat glyph-str "$,4""(B")))
!         ;;; *** glyph-to-glyph conversion ***
!       (when (string-match dev-glyph-glyph-regexp glyph-str)
!         (setq glyph-str
!               (replace-match (gethash (match-string 0 glyph-str)
!                                       dev-glyph-glyph-hash)
!                              nil t glyph-str))
!         (if (and (> cons-num 1)
!                  (string-match dev-glyph-glyph-2-regexp glyph-str))
!             (setq glyph-str
!                   (replace-match (gethash (match-string 0 glyph-str)
!                                           dev-glyph-glyph-2-hash)
!                                  nil t glyph-str))))
!         ;;; *** glyph reordering ***
!       (while (setq split-pos (string-match "$,4""(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
!          (if (string-match dev-glyph-right-modifier-regexp 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)))))
!            (sort (string-to-list glyph-block)
!                  (function (lambda (x y)
!                     (let ((xo (get-char-code-property x 'composition-order))
!                           (yo (get-char-code-property y 'composition-order)))
!                       (if (= xo 2) nil (if (= yo 2) t (< xo yo)))))))))
!         (setq glyph-str-list (nconc glyph-str-list glyph-block)))
!         ;; 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 'devan-util)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]