changeset 98122:e3d5c2e9ec89

(compose-gstring-for-graphic): Fix previous change.
author Kenichi Handa <handa@m17n.org>
date Wed, 10 Sep 2008 05:48:37 +0000
parents 4ef95817eae2
children c674ed7591e1
files lisp/composite.el
diffstat 1 files changed, 58 insertions(+), 50 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/composite.el	Wed Sep 10 04:03:15 2008 +0000
+++ b/lisp/composite.el	Wed Sep 10 05:48:37 2008 +0000
@@ -579,56 +579,64 @@
 		       (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))