anchor.diff:           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
  +         if unicode_codepoint < start_char then
               high := mid-1
            else
  -         if PtrUInt(unicode_codepoint) > end_char then
  +         if 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);
  +            Result := start_glyph + unicode_codepoint - start_char;
               Exit;
            End;
         end;
  
positive.code:    ins,i,j,m,n,next_move,was_off,off: Integer;
     x,y,cx,cy,sx,sy,dx,dy: Smallint;
     more: Integer;
     comp2: PByteArray;
     points: PByteArray;
  
     gidx: Word;
  
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
  