anchor.diff:    (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)))
  +             (face1 (text-style-face s1))
  +             (face2 (text-style-face s2))
  +             (face (if (subsetp '(:bold :italic) (list face1 face2))
  +                       '(:bold :italic)
  +                       (or face1 face2)))
                (size1 (text-style-size s1))
                (size2 (text-style-size s2))
                (size (case size1
  
positive.code: ;; - Why is (EQ (MAKE-TEXT-STYLE NIL NIL 10) (MAKE-TEXT-STYLE NIL NIL 10.0005)) = T?
  ;;   Does it matter?
  ;; - Don't we want a weak hash-table for *TEXT-STYLE-HASH-TABLE*
  ;; - we need more macro hygiene in WITH-TEXT-STYLE
  ;;
  ;; --GB 2002-02-26
  
  ;;; Media
  
  ;; - MEDIUM-DRAW-POINTS*, MEDIUM-DRAW-LINES*, MEDIUM-DRAW-RECTANGLES*
  ;; - MEDIUM-DRAW-RECTANGLES*: POSITION-SEQ argument can be a
  ;;   vector. Use MAP-REPEATED-SEQUENCE.
  ;;
  ;; --GB 2002-02-26
  
  
negative.code:       s1))
  
  (defun parse-text-style (style)
    (cond ((text-style-p style) style)
          ((null style) (make-text-style nil nil nil)) ; ?
          ((and (listp style) (= 3 (length style)))
           (apply #'make-text-style style))
          (t (error "Invalid text style specification ~S." style))))
  
  (defmacro with-text-style ((medium text-style) &body body)
    (when (eq medium t)
      (setq medium '*standard-output*))
    (check-type medium symbol)
    (with-gensyms (cont)
      `(flet ((,cont (,medium)
                (declare (ignorable ,medium))
                ,@body))
         (declare (dynamic-extent #',cont))
         (invoke-with-text-style ,medium #',cont
                                 (parse-text-style ,text-style)))))
  
  (defmethod invoke-with-text-style ((sheet sheet) continuation text-style)
    (let ((medium (sheet-medium sheet))) ; FIXME: WITH-SHEET-MEDIUM
  