anchor.diff:                                :y-advance dy)
         (let ((right (+ left (array-dimension arr 1)))
               (bottom (- top (array-dimension arr 0))))
  -        (glyph-info glyph-id width height left right top bottom dx dy)))))
  -
  -(defun font-generate-glyph* (font glyph-index transformation)
  -  (let* ((display (clx-truetype-font-display font))
  -         (glyph-id (display-draw-glyph-id display))
  -         (character (code-char (ldb (byte #.(ceiling (log char-code-limit 2)) 0) glyph-index)))
  -         (next-character (code-char (ldb (byte #.(ceiling (log char-code-limit 2))
  -                                               #.(ceiling (log char-code-limit 2)))
  -                                         glyph-index))))
  -    (multiple-value-bind (arr left top width height dx dy udx udy)
  -        (glyph-pixarray font character next-character; transformation
  -                        (compose-transformations #1=(make-scaling-transformation 1.0 -1.0)
  -                                                 (compose-transformations transformation #1#)))
  -      (when (= (array-dimension arr 0) 0)
  -        (setf arr (make-array (list 1 1)
  -                              :element-type '(unsigned-byte 8)
  -                              :initial-element 0)))
  -      (xlib::render-add-glyph (display-the-glyph-set display) glyph-id
  -                              :data arr
  -                              :x-origin (- left)
  -                              :y-origin top
  -                              :x-advance dx
  -                              :y-advance dy)
  -      ;; INV advance-width and advance-height are hacked here for transformed
  -      ;; glyph rendering. They are not transformed. See %RENDER-TRANSFORMED-GLYPHS.
  -      (let ((right (+ left (array-dimension arr 1)))
  -            (bottom (- top (array-dimension arr 0))))
  -        (glyph-info glyph-id width height left right top bottom udx udy)))))
  +        (if (identity-transformation-p transformation)
  +            (glyph-info glyph-id width height left right top bottom dx dy)
  +            ;; INV advance-width and advance-height are hacked here for transformed
  +            ;; glyph rendering. They are not transformed. See %RENDER-TRANSFORMED-GLYPHS.
  +            (glyph-info glyph-id width height left right top bottom udx udy))))))
   
   (defun drawable-picture (drawable)
     (or (getf (xlib:drawable-plist drawable) 'picture)
  
positive.code:      as code = (dpb next-char-code (byte #.(ceiling (log char-code-limit 2))
                                           #.(ceiling (log char-code-limit 2)))
                      (char-code char))
       as glyph-info = (font-generate-glyph* font code glyph-transformation)
       do
         (setf (aref (the (simple-array (unsigned-byte 32)) glyph-ids) i*)
               (the (unsigned-byte 32) (glyph-info-id glyph-info)))
  
negative.code:                                        (truncate (+ current-x 0.5))
                                         (truncate (+ current-y 0.5))
                                         glyph-ids :start i* :end (1+ i*)))
       ;; INV advance values are untransformed - see FONT-GENERATE-GLYPH.
         (incf current-x (glyph-info-advance-width glyph-info))
         (incf current-y (glyph-info-advance-height glyph-info))
       do
  