freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Git][freetype/freetype][master] * src/pfr/pfrsbit.c (pfr_lookup_bitmap_


From: Alexei Podtelezhnikov (@apodtele)
Subject: [Git][freetype/freetype][master] * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Accelerate the search.
Date: Tue, 08 Nov 2022 02:39:05 +0000

Alexei Podtelezhnikov pushed to branch master at FreeType / FreeType

Commits:

  • e00afdb3
    by Alexei Podtelezhnikov at 2022-11-07T21:36:32-05:00
    * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Accelerate the search.
    
    This is mostly for consistency because PFR fonts with bitmap strikes
    do not seem to exist.
    

1 changed file:

Changes:

  • src/pfr/pfrsbit.c
    ... ... @@ -282,7 +282,7 @@
    282 282
                               FT_ULong*  found_offset,
    
    283 283
                               FT_ULong*  found_size )
    
    284 284
       {
    
    285
    -    FT_UInt   min, max, char_len;
    
    285
    +    FT_UInt   min, max, mid, char_len;
    
    286 286
         FT_Bool   two = FT_BOOL( *flags & PFR_BITMAP_2BYTE_CHARCODE );
    
    287 287
         FT_Byte*  buff;
    
    288 288
     
    
    ... ... @@ -349,14 +349,14 @@
    349 349
     
    
    350 350
         min = 0;
    
    351 351
         max = count;
    
    352
    +    mid = min + ( max - min ) / 2;
    
    352 353
     
    
    353 354
         /* binary search */
    
    354 355
         while ( min < max )
    
    355 356
         {
    
    356
    -      FT_UInt  mid, code;
    
    357
    +      FT_UInt  code;
    
    357 358
     
    
    358 359
     
    
    359
    -      mid  = ( min + max ) >> 1;
    
    360 360
           buff = base + mid * char_len;
    
    361 361
     
    
    362 362
           if ( two )
    
    ... ... @@ -370,6 +370,11 @@
    370 370
             min = mid + 1;
    
    371 371
           else
    
    372 372
             goto Found_It;
    
    373
    +
    
    374
    +      /* reasonable prediction in a continuous block */
    
    375
    +      mid += char_code - code;
    
    376
    +      if ( mid >= max || mid < min )
    
    377
    +        mid = min + ( max - min ) / 2;
    
    373 378
         }
    
    374 379
     
    
    375 380
       Fail:
    


  • reply via email to

    [Prev in Thread] Current Thread [Next in Thread]