anchor.diff:      while P^ <> #0 do
       {find the next string of chars that can't be wrapped}
       begin
  -      if WrapChar(P1^) and (Brk[I] = 'y') then
  +      if CanWrap(P1^) and (Brk[I] = 'y') then
         begin
           Inc(P1);
           Inc(I);
  
positive.code: 
      NewWidth := FindWidth(Canvas, AWidth, AHeight, AutoCount);
  
      if Positioning <> posAbsolute then
        MyCell.IMgr := IMgr as TIndentManager
      else
      begin
        RefIMgr := IMgr as TIndentManager;
        IMgr := MyCell.IMgr;
        IMgr.Clear;
        IMgr.Reset(0, NewWidth);
        IMgr.Width := NewWidth;
      end;
  
      SaveID := IMgr.CurrentID;
      IMgr.CurrentID := Self;
  
      MiscWidths :=
        MargArray[MarginLeft] + MargArray[PaddingLeft] + MargArray[BorderLeftWidth] +
        MargArray[MarginRight] + MargArray[PaddingRight] + MargArray[BorderRightWidth];
      TotalWidth := MiscWidths + NewWidth;
  
      YClear := Y + ClearAddon;
      case FloatLR of
        ALeft:
          Indent := IMgr.GetNextLeftXY(YClear, X, NewWidth, AWidth, 0) + MargArray[MarginLeft] + MargArray[PaddingLeft] + MargArray[BorderLeftWidth] - X;
  
        ARight:
          Indent := Min(AWidth, IMgr.RightSide(YClear)) - (MargArray[MarginRight] + MargArray[PaddingRight] + MargArray[BorderRightWidth]) - NewWidth;
      else
        Indent := MargArray[MarginLeft] + MargArray[PaddingLeft] + MargArray[BorderLeftWidth];
      end;
      if MargArray[MarginTop] > 0 then
        DrawTop := YClear
  
negative.code:     Inc(Result);
  end;
  
  function WrapChar(C: WideChar): Boolean;
  begin
    Result := Ord(C) >= $3000;
  end;
  
  //BG, 20.09.2010:
  function CanWrap(C: WideChar): Boolean;
  begin
    if C in [WideChar(' '), WideChar('-'), WideChar('?'), ImgPan, FmCtl, BrkCh] then
      Result := True
    else
      Result := WrapChar(C);
  end;
  
  {----------------TSection.MinMaxWidth}
  