anchor.diff:                  | (true, v) -> v
                   | _ -> 0.0
   
  +        let getGlyphSize (c : char) =
  +            sizes.GetOrAdd(c, fun c ->
  +                use g = Graphics.FromHwnd(0n)
  +                let s = g.MeasureString(String(c,1), f)
  +                V2d(s.Width, s.Height)
  +            )
  +
           let getGlyph (c : char) =
               glyphs.GetOrAdd(c, fun c ->
                   let path = Path.ofChar f c
  -                let bounds = path.bounds
                   let geometry = Path.toGeometry path
  -                (bounds, geometry)
  +                geometry
               )
   
           member x.GetOrCreateCache(r : IRuntime) =
  
positive.code: 
      and Font private(f : System.Drawing.Font) =
          let kerning = GDI.pairs f
          let glyphs = ConcurrentDictionary<char, Box2d * IndexedGeometry>()
  
          let cache = ConcurrentDictionary<IRuntime, FontCache>()
  
  
  
          let getKerning (l : char) (r : char) =
  
negative.code:             getKerning l r
  
          member x.GetGlyph(c : char) =
              getGlyph c
  
          member x.GetSize(c : char) =
              getGlyphSize c 
  
          member x.Dispose() =
              cache.Values |> Seq.toList |> List.iter (fun c -> c.Dispose())
  