(compose-gstring-for-graphic): Fix previous change.
authorKenichi Handa <handa@m17n.org>
Wed, 10 Sep 2008 05:49:38 +0000 (05:49 +0000)
committerKenichi Handa <handa@m17n.org>
Wed, 10 Sep 2008 05:49:38 +0000 (05:49 +0000)
lisp/ChangeLog
lisp/composite.el

index 027adaf..90aa1e1 100644 (file)
@@ -1,3 +1,7 @@
+2008-09-10  Kenichi Handa  <handa@m17n.org>
+
+       * composite.el (compose-gstring-for-graphic): Fix previous change.
+
 2008-09-10  Glenn Morris  <rgm@gnu.org>
 
        * info.el (Info-try-follow-nearest-node): Fix doc typo.
 
        * composite.el (find-composition): Mention about the automatic
        composition in the docstring.
+       (compose-gstring-for-graphic): Fix handling "above" marks.
 
        * descr-text.el (describe-char): Fix handling of automatic composition.
 
index fdf8dcd..6d1a2f0 100644 (file)
@@ -579,56 +579,64 @@ All non-spacing characters has this function in
                       (de (lglyph-descent glyph))
                       (ce (/ (+ lb rb) 2))
                       xoff yoff)
-                 (if (and
-                      class (>= class 200) (<= class 240)
-                      (cond
-                       ((= class 200)
-                        (setq xoff (- lbearing ce)
-                              yoff (if (> as 0) 0 (+ descent as))))
-                       ((= class 202)
-                        (if (> as 0) (setq as 0))
-                        (setq xoff (- center ce)
-                              yoff (if (> as 0) 0 (+ descent as))))
-                       ((= class 204)
-                        (if (> as 0) (setq as 0))
-                        (setq xoff (- rbearing ce)
-                              yoff (if (> as 0) 0 (+ descent as))))
-                       ((= class 208)
-                        (setq xoff (- lbearing rb)))
-                       ((= class 210)
-                        (setq xoff (- rbearing lb)))
-                       ((= class 212)
-                        (setq xoff (- lbearing ce)
-                              yoff (if (>= de 0) 0 (- ascent (- de)))))
-                       ((= class 214)
-                        (setq xoff (- center ce)
-                              yoff (if (>= de 0) 0 (- ascent (- de)))))
-                       ((= class 216)
-                        (setq xoff (- rbearing ce)
-                              yoff (if (>= de 0) 0 (- ascent (- de)))))
-                       ((= class 218)
-                        (setq xoff (- lbearing ce)
-                              yoff (if (> as 0) 0 (+ descent as gap))))
-                       ((= class 220)
-                        (setq xoff (- center ce)
-                              yoff (if (> as 0) 0 (+ descent as gap))))
-                       ((= class 222)
-                        (setq xoff (- rbearing ce)
-                              yoff (if (> as 0) 0 (+ descent as gap))))
-                       ((= class 224)
-                        (setq xoff (- lbearing rb)))
-                       ((= class 226)
-                        (setq xoff (- rbearing lb)))
-                       ((= class 228)
-                        (setq xoff (- lbearing ce)
-                              yoff (if (>= de 0) 0 (- ascent (- de) gap))))
-                       ((= class 230)
-                        (setq xoff (- center ce)
-                              yoff (if (>= de 0) 0 (- ascent (- de) gap))))
-                       ((= class 232)
-                        (setq xoff (- rbearing ce)
-                              yoff (if (>= de 0) 0 (- ascent (- de) gap))))))
-                     (lglyph-set-adjustment glyph (- xoff width) yoff))))))
+                 (when (and class (>= class 200) (<= class 240))
+                   (setq xoff 0 yoff 0)
+                   (cond
+                    ((= class 200)
+                     (setq xoff (- lbearing ce)
+                           yoff (if (> as 0) 0 (+ descent as))))
+                    ((= class 202)
+                     (if (> as 0) (setq as 0))
+                     (setq xoff (- center ce)
+                           yoff (if (> as 0) 0 (+ descent as))))
+                    ((= class 204)
+                     (if (> as 0) (setq as 0))
+                     (setq xoff (- rbearing ce)
+                           yoff (if (> as 0) 0 (+ descent as))))
+                    ((= class 208)
+                     (setq xoff (- lbearing rb)))
+                    ((= class 210)
+                     (setq xoff (- rbearing lb)))
+                    ((= class 212)
+                     (setq xoff (- lbearing ce)
+                           yoff (if (>= de 0) 0 (- (- ascent) de))))
+                    ((= class 214)
+                     (setq xoff (- center ce)
+                           yoff (if (>= de 0) 0 (- (- ascent) de))))
+                    ((= class 216)
+                     (setq xoff (- rbearing ce)
+                           yoff (if (>= de 0) 0 (- (- ascent) de))))
+                    ((= class 218)
+                     (setq xoff (- lbearing ce)
+                           yoff (if (> as 0) 0 (+ descent as gap))))
+                    ((= class 220)
+                     (setq xoff (- center ce)
+                           yoff (if (> as 0) 0 (+ descent as gap))))
+                    ((= class 222)
+                     (setq xoff (- rbearing ce)
+                           yoff (if (> as 0) 0 (+ descent as gap))))
+                    ((= class 224)
+                     (setq xoff (- lbearing rb)))
+                    ((= class 226)
+                     (setq xoff (- rbearing lb)))
+                    ((= class 228)
+                     (setq xoff (- lbearing ce)
+                           yoff (if (>= de 0) 0 (- (- ascent) de gap))))
+                    ((= class 230)
+                     (setq xoff (- center ce)
+                           yoff (if (>= de 0) 0 (- (- ascent) de gap))))
+                    ((= class 232)
+                     (setq xoff (- rbearing ce)
+                           yoff (if (>= de 0) 0 (- (+ ascent de) gap)))))
+                   (lglyph-set-adjustment glyph (- xoff width) yoff)
+                   (setq lb (+ lb xoff)
+                         rb (+ lb xoff)
+                         as (- as yoff)
+                         de (+ de yoff)))
+                 (if (< ascent as)
+                     (setq ascent as))
+                 (if (< descent de)
+                     (setq descent de))))))
          (let ((i 0))
            (while (and (< i nglyphs) (setq glyph (lgstring-glyph gstring i)))
              (lglyph-set-from-to glyph 0 (1- nchars))