anchor.diff:        (make-text-style family face size))))
   
   (defmacro with-text-style ((medium text-style) &body body)
  -  (declare (type symbol medium))
     (when (eq medium t)
       (setq medium '*standard-output*))
  -  `(flet ((continuation ()
  +  (check-type medium symbol)
  +  `(flet ((continuation (,medium)
  +            (declare (ignorable ,medium))
   	    ,@body))
  -     #-clisp (declare (dynamic-extent #'continuation))
  -     (invoke-with-text-style ,medium #'continuation (parse-text-style ,text-style))))
  +     (declare (dynamic-extent #'continuation))
  +     (invoke-with-text-style ,medium #'continuation
  +                             (parse-text-style ,text-style))))
  +
  +(defmethod invoke-with-text-style ((sheet sheet) continuation text-style)
  +  (let ((medium (sheet-medium sheet))) ; FIXME: WITH-SHEET-MEDIUM
  +    (with-text-style (medium text-style)
  +      (funcall continuation sheet))))
  +
  +(defmethod invoke-with-text-style ((medium medium) continuation text-style)
  +  (letf (((medium-text-style medium)
  +          (merge-text-styles text-style (medium-merged-text-style medium))))
  +    (funcall continuation medium)))
   
   (defmacro with-text-family ((medium family) &body body)
     (declare (type symbol medium))
     (when (eq medium t)
       (setq medium '*standard-output*))
  -  `(flet ((continuation ()
  +  `(flet ((continuation (,medium)
   	    ,@body))
  -     #-clisp (declare (dynamic-extent #'continuation))
  -     (invoke-with-text-style ,medium #'continuation (make-text-style ,family nil nil))))
  +     (declare (dynamic-extent #'continuation))
  +     (invoke-with-text-style ,medium #'continuation
  +                             (make-text-style ,family nil nil))))
   
   (defmacro with-text-face ((medium face) &body body)
     (declare (type symbol medium))
     (when (eq medium t)
       (setq medium '*standard-output*))
  -  `(flet ((continuation ()
  +  `(flet ((continuation (,medium)
   	    ,@body))
  -     #-clisp (declare (dynamic-extent #'continuation))
  -     (invoke-with-text-style ,medium
  -                             #'continuation (make-text-style nil ,face nil))))
  +     (declare (dynamic-extent #'continuation))
  +     (invoke-with-text-style ,medium #'continuation
  +                             (make-text-style nil ,face nil))))
   
   (defmacro with-text-size ((medium size) &body body)
     (declare (type symbol medium))
  -  (when (eq medium t)
  -    (setq medium '*standard-output*))
  -  `(flet ((continuation ()
  +  (when (eq medium t) (setq medium '*standard-output*))
  +  `(flet ((continuation (,medium)
   	    ,@body))
  -     #-clisp (declare (dynamic-extent #'continuation))
  -     (invoke-with-text-style ,medium #'continuation (make-text-style nil nil ,size))))
  +     (declare (dynamic-extent #'continuation))
  +     (invoke-with-text-style ,medium #'continuation
  +                             (make-text-style nil nil ,size))))
   
    
  
positive.code: (defmethod medium-draw-point* :around ((medium basic-medium) x y)
    (let ((tr (medium-transformation medium)))
      (with-transformed-position (tr x y)
                                 (call-next-method medium x y))))
  
  (defmethod medium-draw-points* :around ((medium basic-medium) coord-seq)
    (let ((tr (medium-transformation medium)))
      (with-transformed-positions (tr coord-seq)
                                  (call-next-method medium coord-seq))))
  
  (defmethod medium-draw-line* :around ((medium basic-medium) x1 y1 x2 y2)
    (let ((tr (medium-transformation medium)))
      (with-transformed-position (tr x1 y1)
                                 (with-transformed-position (tr x2 y2)
                                                            (call-next-method medium x1 y1 x2 y2)))))
  
  (defmethod medium-draw-lines* :around ((medium basic-medium) coord-seq)
    (let ((tr (medium-transformation medium)))
      (with-transformed-positions (tr coord-seq)
                                  (call-next-method medium coord-seq))))
  
  (defmethod medium-draw-polygon* :around ((medium basic-medium) coord-seq closed filled)
    (let ((tr (medium-transformation medium)))
      (with-transformed-positions (tr coord-seq)
                                  (call-next-method medium coord-seq closed filled))))
  
  (defmethod medium-draw-rectangle* :around ((medium basic-medium) left top right bottom filled)
    (let ((tr (medium-transformation medium)))
  
negative.code:   (setq s2 (parse-text-style s2))
    (if (and (not (device-font-text-style-p s1))
  	   (not (device-font-text-style-p s2)))
        (let* ((family (or (text-style-family s1) (text-style-family s2)))
               (face (or (text-style-face s1) (text-style-face s2)))
               (size1 (text-style-size s1))
               (size2 (text-style-size s2))
               (size (case size1
                       ((nil) size2)
                       (:smaller (find-smaller-size size2))
                       (:larger (find-larger-size size2))
                       (t size1))))
          (make-text-style family face size))
        s1))
  
  (defun parse-text-style (style)
    (if (text-style-p style)
  