anchor.diff:    for i := 0 to FLogicalFonts.Count - 1 do
     begin
       Font := TLogicalFont(FLogicalFonts[ i ]);
  -    //if not GpiDeleteSetID( FCanvas.Handle, Font.ID ) then
  -    //  rc := WinGetLastError( AppHandle );
       Font.Free;
     end;
  +  FLogicalFonts.Clear;
     FLogicalFonts.Free;
  +
  +  // TCanvasFontManager asked for FontFaces to be created, so lets take responsibility to destroy it.
  +  for i := 0 to FontFaces.Count-1 do
  +  begin
  +    face := TFontFace(Fontfaces[i]);
  +    face.Free;
  +  end;
  +  FontFaces.Clear;
  +  FontFaces.Free;
     inherited Destroy;
   end;
   
  
positive.code: var
    i: integer;
    Font: TLogicalFont;
  begin
    // select default font so none of our logical fonts are in use
    FCanvas.Font := fpgApplication.DefaultFont;
  
negative.code:   TPCharWidthArray = ^TCharWidthArray;
  
    // Used internally for storing full info on font
    TLogicalFont = class(TComponent)
    public
      FaceName: String; // user-selected name
      UseFaceName: String; // after substitutions.
  