anchor.diff:     Begin
         first := Cardinal(ttUSHORT( index_map + 6));
         count := Cardinal(ttUSHORT( index_map + 8));
  -      if (Cardinal(unicode_codepoint) >= first) and (PtrUInt(unicode_codepoint) < first+count) then
  +      if (Cardinal(unicode_codepoint) >= first) and (unicode_codepoint < first+count) then
         begin
  -         Result := Integer(ttUSHORT( PtrUInt(index_map) + 10 + (PtrUInt(unicode_codepoint) - first)*2));
  +         Result := Integer(ttUSHORT( PtrUInt(index_map) + 10 + (unicode_codepoint - first)*2));
            Exit;
         end;
         Result := 0;
  
positive.code:          mid := low + ((high-low) shr 1); // rounds down, so low <= mid < high
           start_char := ttULONG( index_map+16+mid*12);
           end_char := ttULONG( index_map+16+mid*12+4);
           if PtrUInt(unicode_codepoint) < start_char then
              high := mid-1
           else
           if PtrUInt(unicode_codepoint) > end_char then
              low := mid+1
           else
           Begin
              start_glyph := ttULONG( index_map+16+mid*12+8);
              Result := PtrUInt(start_glyph + PtrUInt(unicode_codepoint) - start_char);
              Exit;
           End;
        end;
  
negative.code: 
     E.Fix(N, (off_y + resultBitmap.Height) * vsubsample + 1);
  
     If (Length(_Scanline)<=resultBitmap.Width) Then
      SetLength(_Scanline, Succ(resultBitmap.Width));
  
     while (j < resultBitmap.Height) do
     begin
  