anchor.diff:      (let ((glyph (aref cell-cache cell)))
         (when (not glyph)
           ;; Glyph does not exist in the cache, rasterize it.
  -        (mezzanine.supervisor:with-mutex (*font-lock*)
  -          (cond ((zpb-ttf:glyph-exists-p code (font-loader font))
  -                 (let* ((ttf-glyph (zpb-ttf:find-glyph code (font-loader font)))
  -                        (scale (font-scale font))
  -                        (bb (scale-bb (zpb-ttf:bounding-box ttf-glyph) scale))
  -                        (advance (round (* (zpb-ttf:advance-width ttf-glyph) scale))))
  -                   (setf glyph (make-glyph :character (code-char code)
  -                                           :mask (rasterize-glyph ttf-glyph scale)
  -                                           :yoff (zpb-ttf:ymax bb)
  -                                           :xoff (zpb-ttf:xmin bb)
  -                                           :advance advance)
  -                         (aref cell-cache cell) glyph)))
  -                (t ;; Use Unifont fallback.
  -                 (let ((mask (or (sys.int::map-unifont-2d (code-char code))
  -                                 (sys.int::map-unifont-2d #\WHITE_VERTICAL_RECTANGLE))))
  -                   (setf glyph (make-glyph :character (code-char code)
  -                                           :mask (expand-bit-mask-to-ub8-mask mask)
  -                                           :yoff 14
  -                                           :xoff 0
  -                                           :advance (array-dimension mask 1))
  -                         (aref cell-cache cell) glyph))))))
  +        (mezzanine.supervisor:with-mutex ((glyph-cache-lock font))
  +          (mezzanine.supervisor:with-mutex ((typeface-lock (typeface font)))
  +            (cond ((zpb-ttf:glyph-exists-p code (font-loader font))
  +                   (let* ((ttf-glyph (zpb-ttf:find-glyph code (font-loader font)))
  +                          (scale (font-scale font))
  +                          (bb (scale-bb (zpb-ttf:bounding-box ttf-glyph) scale))
  +                          (advance (round (* (zpb-ttf:advance-width ttf-glyph) scale))))
  +                     (setf glyph (make-glyph :character (code-char code)
  +                                             :mask (rasterize-glyph ttf-glyph scale)
  +                                             :yoff (zpb-ttf:ymax bb)
  +                                             :xoff (zpb-ttf:xmin bb)
  +                                             :advance advance)
  +                           (aref cell-cache cell) glyph)))
  +                  (t ;; Use Unifont fallback.
  +                   (let ((mask (or (sys.int::map-unifont-2d (code-char code))
  +                                   (sys.int::map-unifont-2d #\WHITE_VERTICAL_RECTANGLE))))
  +                     (setf glyph (make-glyph :character (code-char code)
  +                                             :mask (expand-bit-mask-to-ub8-mask mask)
  +                                             :yoff 14
  +                                             :xoff 0
  +                                             :advance (array-dimension mask 1))
  +                           (aref cell-cache cell) glyph)))))))
         glyph)))
   
   (defmethod initialize-instance :after ((font font) &key typeface size &allow-other-keys)
  
positive.code: (defclass typeface ()
    ((%font-loader :initarg :font-loader :reader font-loader)
     (%name :initarg :name :reader name)
     (%refcount :initform 1)))
  
  (defclass font ()
    ((%typeface :initarg :typeface :reader typeface)
  
negative.code:    (%line-height :reader line-height)
     (%em-square-width :reader em-square-width)
     (%font-ascender :reader ascender)
     (%glyph-cache-lock :reader glyph-cache-lock)
     (%glyph-cache :reader glyph-cache)
     (%refcount :initform 1)))
  
  