anchor.diff:    (gl:stencil-func :always 0 1)
     (gl:stencil-op :keep :invert :invert)
     (gl:color-mask nil nil nil nil)
  -  (fill-inner glyph)
  +  (fill-vertex glyph)
     (gl:stencil-func :notequal 0 1)
     (gl:stencil-op :keep :keep :keep)
     (gl:color-mask t t t t)
  
positive.code:       (gl:vertex bx2 by2)
        (gl:vertex bx1 by2))))
  
  (defun draw-string (str font size spacing)
    (gl:with-pushed-matrix
      (let* ((bbox (zpb-ttf:bounding-box font))
             ;(bx1 (aref bbox 0))
             ;(by1 (aref bbox 1))
             ;(bx2 (aref bbox 2))
             ;(by2 (aref bbox 3))
             (scaling (/ size (zpb-ttf:units/em font))))
        (gl:scale scaling scaling 1)
        (render-string str font (* spacing scaling)))))
  
  
negative.code:                    (zpb-ttf:x next) (zpb-ttf:y next))))
      (values curve control)))
  
  (defun fill-vertex (glyph)
    (zpb-ttf:do-contours (contour glyph)
      (multiple-value-bind (curve control) (separate-contour contour)
        (declare (ignorable control))
        (gl:with-primitives :triangle-fan
          (gl:vertex (aref curve 0) (aref curve 1))
          (loop for i from 2 below (- (length curve) 2) by 2
                do (gl:vertex (aref curve    i   ) (aref curve (+ i 1)))
                   (gl:vertex (aref curve (+ i 2)) (aref curve (+ i 3))))))))
  
  
  ;; !! :stencil is required !!
  (defclass main-window (glut:window)
  