freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] master e00afdb35: * src/pfr/pfrsbit.c (pfr_lookup_bitmap_dat


From: Werner Lemberg
Subject: [freetype2] master e00afdb35: * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Accelerate the search.
Date: Mon, 7 Nov 2022 21:39:15 -0500 (EST)

branch: master
commit e00afdb35b1ec8427fc80eb6949882a24e60f2fa
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    * 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.
---
 src/pfr/pfrsbit.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/pfr/pfrsbit.c b/src/pfr/pfrsbit.c
index d9bf6997a..cc935d603 100644
--- a/src/pfr/pfrsbit.c
+++ b/src/pfr/pfrsbit.c
@@ -282,7 +282,7 @@
                           FT_ULong*  found_offset,
                           FT_ULong*  found_size )
   {
-    FT_UInt   min, max, char_len;
+    FT_UInt   min, max, mid, char_len;
     FT_Bool   two = FT_BOOL( *flags & PFR_BITMAP_2BYTE_CHARCODE );
     FT_Byte*  buff;
 
@@ -349,14 +349,14 @@
 
     min = 0;
     max = count;
+    mid = min + ( max - min ) / 2;
 
     /* binary search */
     while ( min < max )
     {
-      FT_UInt  mid, code;
+      FT_UInt  code;
 
 
-      mid  = ( min + max ) >> 1;
       buff = base + mid * char_len;
 
       if ( two )
@@ -370,6 +370,11 @@
         min = mid + 1;
       else
         goto Found_It;
+
+      /* reasonable prediction in a continuous block */
+      mid += char_code - code;
+      if ( mid >= max || mid < min )
+        mid = min + ( max - min ) / 2;
     }
 
   Fail:



reply via email to

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