anchor.diff:                            begin
                               Inc(TextPos.Y, LineHeight);
                               TextPos.X := ARect.Left;
  -                            LineHeight := 0;
  +                            MustResetLineHeight := True;
                             end
                             else if Escape = 'pard' then
                             begin
                               Inc(TextPos.Y, LineHeight);
                               TextPos.X := ARect.Left;
  -                            LineHeight := 0;
  +                            MustResetLineHeight := True;
                               LevelSets[Level].Alignment := MetaTextAlignmentLeft;
                             end
                             else if Escape = 'f' then
  
positive.code:                             TextOut(TextPos.X, TextPos.Y, Copy(TokenText, 1, TextCut));
                              Inc(TextPos.X, TextWidth);
                              ASize.X := Max(ASize.X, TextPos.X);
                              LineHeight := Max(LineHeight, GetTextHeight(TokenText));
                              while (TextCut < Length(TokenText)) and CharInSet(TokenText[TextCut + 1], SPACESET) do
                                Inc(TextCut);
  
negative.code:   end;
    {/@class}
    
  function RichTextBounds(const ARichText: String; ARect: TRect; AWordWrap: Boolean): TPoint;
  procedure RichTextDraw(const ARichText: String; ACanvas: TObject; ARect: TRect; AWordWrap: Boolean);
  
  {/@unit}
  
  implementation
  