anchor.diff:  begin
     {$ifdef WIDE}
     Str:= UTF8Decode(AText);
  -  ExtTextOut(C.Handle, AX, AY, ETO_CLIPPED, @AClipRect,
  +  ExtTextOutW(C.Handle, AX, AY, ETO_CLIPPED, @AClipRect,
       PWideChar(Str), Length(Str), nil);
     {$else}
     ExtTextOut(C.Handle, AX, AY, ETO_CLIPPED, @AClipRect,
  
positive.code: License: MPL 2.0 or LGPL
  }
  
  unit ATTabs;
  
  {$ifdef FPC}
    {$mode delphi}
  
negative.code:   end;
  end;
  
  procedure TATTabs.DoUpdateCaptionProps(C: TCanvas; const ACaption: TATTabString;
    out ALineHeight: integer; out ATextSize: TSize);
  var
    Ex: TSize;
    StrW: WideString;
    i: integer;
  begin
    ALineHeight:= 0;
    ATextSize.cx:= 0;
    ATextSize.cy:= 0;
    FCaptionList.Text:=
      {$ifdef WIDE}UTF8Encode{$endif}
      (ACaption);
  
    for i:= 0 to FCaptionList.Count-1 do
    begin
      {$ifdef WIDE}
      StrW:= UTF8Decode(FCaptionList[i]);
      Windows.GetTextExtentPoint32W(C.Handle, PWideChar(StrW), Length(StrW), Ex);
      {$else}
      Ex:= C.TextExtent(FCaptionList[i]);
      {$endif}
  
      Inc(ATextSize.CY, Ex.CY);
      ALineHeight:= Max(ALineHeight, Ex.CY);
      ATextSize.CX:= Max(ATextSize.CX, Ex.CX);
  