anchor.diff:  				      :align-y :top))))
   	  (record-stroke stroke stroke-parts part-widths cursor-x cursor-y
   			 (+ width cursor-x) (+ text-style-height cursor-y)
  -			 baseline))))))
  +			 t baseline))))))
   
   (defun draw-stroke (stream view stroke cursor-x cursor-y)
     "Draw `stroke' on `stream' at (`cursor-x', `cursor-y'). Nothing
  
positive.code:            (text-style-descent (text-style-descent roman-text-style (sheet-medium stream)))
             (text-style-height (+ text-style-ascent text-style-descent)))
        (with-accessors ((x1 x1) (x2 x2) (center center)) dimensions
          (multiple-value-bind (stroke-parts width baseline part-widths)
  	    (if (stroke-modified stroke)
  		(loop with parts = (analyse-stroke-string stroke-string)
  		      with width = 0
  		      with baseline = 0
  		      with widths = (make-array 1 :adjustable t :fill-pointer t)
  		      with tab-width
  		      for (start end object) in parts
  		      do (cond ((and object (eql object #\Tab))
  				(incf width 
  				      (- (or tab-width (setf tab-width (tab-width stream view)))
  					 (mod (+ width cursor-x) tab-width)))
  				(vector-push-extend width widths))
  			       (object
  				(multiple-value-bind (w ignore1 ignore2 ignore3 b)
  				    (text-size stream object
  					       :text-style merged-text-style)
  				  (declare (ignore ignore1 ignore2 ignore3))
  				  (incf width w)
  				  (setf baseline (max baseline b))
  				  (vector-push-extend width widths)))
  			       (t
  				(multiple-value-bind (w ignore1 ignore2 ignore3 b)
  				    (text-size stream stroke-string
  					       :start start :end end
  					       :text-style merged-text-style)
  				  (declare (ignore ignore1 ignore2 ignore3))
  				  (incf width w)
  				  (setf baseline (max baseline b))
  				  (vector-push-extend width widths))))
  		      finally (return (values parts width baseline widths)))
  		(values parts (- x2 x1) center widths))
  	  (clear-rectangle* stream cursor-x cursor-y
  			    (+ cursor-x width) (+ cursor-y text-style-height
  						  (stream-vertical-spacing stream)))
  
negative.code:       (setf (line-end-offset line) (stroke-end-offset stroke)))))
  
  (defun record-stroke (stroke parts widths x1 y1 x2 y2
                        &optional (drawn t) (center (/ (- y2 y1) 2)))
    "Record the fact that `stroke' has been drawn (if `drawn' is
  true), that it consists of parts `parts' with the widths
  `widths', and that it covers the specified area on screen. Sets
  the dirty-bit of `stroke' to false if `drawn' is true, and always
  sets the modified-bit of `stroke' to false, as it updates the
  dimensions."
    (let ((dimensions (stroke-dimensions stroke)))
      (setf (stroke-dirty stroke) (and (stroke-dirty stroke)
                                       (not drawn))
            (stroke-modified stroke) nil
  	  (stroke-parts stroke) parts
            (stroke-widths stroke) widths
  