anchor.diff:        (let ((font (font-of medium)))
           (if font
             (setf (gfg:font gc) font))
  -        (let ((h (gfg:height (gfg:metrics gc font)))
  +        (let ((ascent (gfg:ascent (gfg:metrics gc font)))
   	      (x (round-coordinate x))
   	      (y (round-coordinate y)))
   	  (gfg:draw-text gc
   			 (subseq string start (or end (length string)))
  -			 (gfs:make-point :x x :y (- y h))))))
  +			 (gfs:make-point :x x :y (- y ascent))))))
       (add-medium-to-render medium)))
   
   (defmethod medium-buffering-output-p ((medium graphic-forms-medium))
  
positive.code:   (setf string (normalize-text-data string))
    (setf text-style (or text-style (make-text-style nil nil nil)))
    (setf text-style
  	(merge-text-styles text-style (medium-default-text-style medium)))
    (gfw:with-graphics-context (gc (target-of medium))
      (let* ((font (text-style-to-font gc text-style nil))
  	   (metrics (gfg:metrics gc font))
  	   (width (gfs:size-width (gfg:text-extent gc (subseq string
  							      start
  							      (or end (length string)))))))
        (values width
  	      (gfg:height metrics)
  	      width
  	      (gfg:height metrics)
  	      (gfg:ascent metrics)))))
  
  (defmethod climi::text-bounding-rectangle*
      ((medium graphic-forms-medium) string &key text-style (start 0) end)
  
negative.code:     ;; have better control over them
      ;;
      (let ((face-name (if (stringp family)
                           family
                           (ecase family
                             ((:fix :fixed) "Lucida Console")
                             (:serif        "Times New Roman")
                             (:sans-serif    "Arial"))))
            (pnt-size (case size
                        (:tiny       6)
                        (:very-small 7)
                        (:small      8)
                        (:normal     10)
                        (:large      12)
                        (:very-large 14)
                        (:huge       16)
                        (otherwise   10)))
            (style nil))
        (pushnew (case face
                   ((:bold :bold-italic :bold-oblique :italic-bold :oblique-bold)
                    :bold)
                   (otherwise
                    :normal))
                 style)
        (pushnew (case face
                   ((:bold-italic :italic :italic-bold)
                    :italic)
                   (otherwise
                    :normal))
                 style)
        (pushnew (case family
                   ((:fix :fixed) :fixed)
                   (otherwise     :normal))
                 style)
        (if (or (null old-data)
                (not (eql pnt-size (gfg:font-data-point-size old-data)))
                (string-not-equal face-name (gfg:font-data-face-name old-data))
                (/= (length style)
                    (length (intersection style (gfg:font-data-style old-data)))))
            (let ((new-data (gfg:make-font-data :face-name face-name
                                                :point-size pnt-size
                                                :style style)))
              (make-instance 'gfg:font :gc gc :data new-data))
            (make-instance 'gfg:font :gc gc :data old-data)))))
  
  (defmethod (setf medium-text-style) :before (text-style (medium graphic-forms-medium))
    (sync-text-style medium
  