anchor.diff:        and TryStrToInt(Copy(aText, I+1, 7), TmpColor) then
           Inc(I,8) //Skip past this markup
         else
  -        if aText[I]=#32 then Inc(AdvX, fFontData[aFont].WordSpacing)
  -                        else Inc(AdvX, fFontData[aFont].Letters[Ord(aText[I])].Width + CharSpacing);
  +        Inc(AdvX, GetCharWidth(aText[I], aFont));
   
       if (aText[I]=#32) or (aText[I]=#124) then
       begin
  
positive.code:     property FontData[aIndex: TKMFont]: TKMFontData read GetFontData;
      class function GuessPalette(aFileName: string): TKMPal;
  
      function WordWrap(aText: UnicodeString; aFont: TKMFont; aMaxPxWidth: Integer; aForced: Boolean; aIndentAfterNL: Boolean): UnicodeString;
      function CharsThatFit(const aText: UnicodeString; aFont: TKMFont; aMaxPxWidth: integer): integer;
      function GetTextSize(const aText: UnicodeString; Fnt: TKMFont; aCountMarkup: Boolean = False): TKMPoint;
  
negative.code:   begin
      if aCountMarkup then
        //Count all characters including markup
        Inc(LineWidth[LineCount], GetCharWidth(aText[I], Fnt))
      else
        //Ignore color markups [$FFFFFF][]
        if (aText[I]='[') and (I+1 <= Length(aText)) and (aText[I+1]=']') then
  