anchor.diff:    S, STemp: UnicodeString;
     N, i: integer;
   begin
  -  if Mode=attcNone then exit(Text);
  -  if C.TextWidth(Text)<=Width then exit(Text);
  -
  -  S:= UTF8Decode(Text);
  +  if (Mode=attcNone) or
  +    (C.TextWidth(Text)<=Width) then
  +  begin
  +    Result:= Text;
  +    exit
  +  end;
  +
  +  S:= Text;
     STemp:= S;
   
     case Mode of
  
positive.code:         repeat
            Delete(STemp, 1, 1);
            S:= DotsString+STemp;
          until (Length(S)<=cMinLen) or (C.TextWidth(UTF8Encode(S))<=Width);
        end;
  
      attcDotsMiddle:
  
negative.code:         begin
            N:= (Length(STemp)+1) div 2 - i div 2;
            S:= Copy(STemp, 1, N)+DotsString+Copy(STemp, N+i, MaxInt);
            if (Length(S)<=cMinLen) or (C.TextWidth(S)<=Width) then Break;
          end;
        end;
  
  