freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] parthw-cleaned 96db629 1/2: [pk] Resolve failing of `PK_CMap


From: Parth Wazurkar
Subject: [freetype2] parthw-cleaned 96db629 1/2: [pk] Resolve failing of `PK_CMap'.
Date: Tue, 14 Aug 2018 16:32:23 -0400 (EDT)

branch: parthw-cleaned
commit 96db629b8e95bdbca51942f5ebade989505f1daf
Author: Parth Wazurkar <address@hidden>
Commit: Parth Wazurkar <address@hidden>

    [pk] Resolve failing of `PK_CMap'.
    
    * src/pk/pkdrivr.c(pk_cmap_char_{index, next}): Use `linear search'
    instead of `binary search' in the encoding table as it will always
    be unsorted.
    
    * src/pk/pklib.c: Resolve issues occurred in the previous commit
    which caused errors in glyph loading on `ft2-demos'.
---
 src/pk/pkdrivr.c | 54 +++++++++++-------------------------------------------
 src/pk/pklib.c   | 50 +++++++++++++-------------------------------------
 2 files changed, 24 insertions(+), 80 deletions(-)

diff --git a/src/pk/pkdrivr.c b/src/pk/pkdrivr.c
index 23a69bc..8560b04 100644
--- a/src/pk/pkdrivr.c
+++ b/src/pk/pkdrivr.c
@@ -80,33 +80,21 @@
   {
     PK_CMap       cmap      = (PK_CMap)pkcmap;
     PK_Encoding   encodings = cmap->encodings;
-    FT_ULong      min, max, mid;
-    FT_UInt       result    = 0;
+    FT_UInt       max, code, result    = 0, i;
 
-    min = 0;
     max = cmap->num_encodings;
 
-    while ( min < max )
+    for( i = 0; i < max; i++ )
     {
-      FT_ULong  code;
-
-
-      mid  = ( min + max ) >> 1;
-      code = (FT_ULong)encodings[mid].enc;
-
+      code = (FT_ULong)encodings[i].enc;
       if ( charcode == code )
       {
-        result = encodings[mid].glyph;
-        break;
+        result = encodings[i].glyph;
+        goto Exit;
       }
-
-      if ( charcode < code )
-        max = mid;
-      else
-        min = mid + 1;
     }
-
-    return result;
+    Exit:
+      return result;
   }
 
 
@@ -116,39 +104,19 @@
   {
     PK_CMap       cmap      = (PK_CMap)pkcmap;
     PK_Encoding   encodings = cmap->encodings;
-    FT_ULong      min, max, mid;
+    FT_UInt       result    = 0, i, code, max;
     FT_ULong      charcode  = *acharcode + 1;
-    FT_UInt       result    = 0;
-
 
-    min = 0;
     max = cmap->num_encodings;
 
-    while ( min < max )
+    for( i = 0; i < max; i++ )
     {
-      FT_ULong  code;
-
-
-      mid  = ( min + max ) >> 1;
-      code = (FT_ULong)encodings[mid].enc;
-
+      code = (FT_ULong)encodings[i].enc;
       if ( charcode == code )
       {
-        result = encodings[mid].glyph + 1;
+        result = encodings[i].glyph + 1;
         goto Exit;
       }
-
-      if ( charcode < code )
-        max = mid;
-      else
-        min = mid + 1;
-    }
-
-    charcode = 0;
-    if ( min < cmap->num_encodings )
-    {
-      charcode = (FT_ULong)encodings[min].enc;
-      result   = encodings[min].glyph ;
     }
 
   Exit:
diff --git a/src/pk/pklib.c b/src/pk/pklib.c
index 8ede289..6037569 100644
--- a/src/pk/pklib.c
+++ b/src/pk/pklib.c
@@ -196,7 +196,6 @@ FT_Byte  bits_table[] = {
     bm_ptr = bm->bitmap;
 
     bit16_buff = READ_UINT1( stream ) << 8;
-    FT_TRACE2(( "pk_read_14: bit16_buff is %ld\n",bit16_buff ));
     rest_bit16_buff = 8;
     --rs;
 
@@ -295,16 +294,16 @@ FT_Byte  bits_table[] = {
                FT_Memory       extmemory,
                PK_Glyph        *goptr )
   {
-    PK_Glyph    go;
-    FT_Byte     instr, pre, id;
-    FT_Long     ds, check_sum, hppp, vppp, k;
-    FT_Long     cc, tfm, dx, dy, dm, w, h, rs;
-    FT_Int      flag, dny_f, bw, ess, size;
-    FT_Long     hoff, voff, mv_x, mv_y, gptr;
-    FT_Int      bc, ec, nchars, index, i;
-    FT_Error    error  = FT_Err_Ok;
-    FT_Memory   memory = extmemory; /* needed for FT_NEW */
-    PK_Encoding encoding = NULL;
+    PK_Glyph   go;
+    FT_Byte    instr, pre, id;
+    FT_ULong   ds, check_sum, hppp, vppp, k;
+    FT_UInt    flag, dny_f, bw, ess, size;
+    FT_ULong   cc, tfm, dx, dy, dm, w, h, rs;
+    FT_Long    hoff, voff, mv_x, mv_y, gptr;
+    FT_Int     bc, ec, nchars, index, i;
+    FT_Error   error  = FT_Err_Ok;
+    FT_Memory  memory = extmemory; /* needed for FT_NEW */
+    PK_Encoding   encoding = NULL;
 
     go = NULL;
     nchars = -1;
@@ -326,8 +325,6 @@ FT_Byte  bits_table[] = {
       goto Exit;
     }
 
-    FT_TRACE2(( "pk_load_font: PK_ID(89) found\n" ));
-
     k = READ_UINT1( stream );
     if ( FT_STREAM_SKIP( k ) )
       goto Exit;
@@ -394,18 +391,12 @@ FT_Byte  bits_table[] = {
     if( FT_ALLOC(go, sizeof(PK_GlyphRec)) )
       goto Exit;
 
-    FT_TRACE2(( "pk_load_font: Allocated sufficient memory in go\n" ));
-
     if( FT_ALLOC_MULT(go->bm_table, sizeof(PK_BitmapRec), nchars) )
       goto Exit;
 
-    FT_TRACE2(( "pk_load_font: Allocated sufficient memory in go->bm_table\n" 
));
-
     if ( FT_NEW_ARRAY( encoding, nchars ) )
       return error;
 
-    FT_TRACE2(( "pk_load_font: Allocated sufficient memory in encoding\n" ));
-
     go->ds   = (FT_UInt)ds/(1<<20);
     go->hppp = (FT_UInt)hppp/(1<<16);
     go->vppp = (FT_UInt)vppp/(1<<16);
@@ -514,28 +505,13 @@ FT_Byte  bits_table[] = {
         go->bm_table[index].off_y  = voff;
         go->bm_table[index].mv_x   = mv_x;
         go->bm_table[index].mv_y   = mv_y;
-        go->bm_table[index].bitmap = (unsigned char*)malloc(h*( (w+7)>>3 ));
+        go->bm_table[index].bitmap = (unsigned char*)malloc(h*((w+7)/8));
         go->bm_table[index].code   = cc ; /* For backward compatibility */
         go->nglyphs               += 1;
 
         encoding[index].enc   = cc ;
         encoding[index].glyph = index;
 
-        FT_TRACE6(( "pk_load_font: go->bm_table values are :\n"
-                    "                       go->bm_table[%d].bbx_width  : 
%ld\n"
-                    "                       go->bm_table[%d].bbx_height : 
%ld\n"
-                    "                       go->bm_table[%d].raster     : %d\n"
-                    "                       go->bm_table[%d].off_x      : %d\n"
-                    "                       go->bm_table[%d].off_y      : %d\n"
-                    "                       go->bm_table[%d].mv_x       : %d\n"
-                    "                       go->bm_table[%d].mv_y       : 
%d\n", index, go->bm_table[index].bbx_width, index,
-                                                                               
  go->bm_table[index].bbx_height, index,
-                                                                               
  go->bm_table[index].raster, index,
-                                                                               
  go->bm_table[index].off_x, index,
-                                                                               
  go->bm_table[index].off_y, index,
-                                                                               
  go->bm_table[index].mv_x, index,
-                                                                               
  go->bm_table[index].mv_y, index ));
-
 
         if (go->bm_table[index].bitmap == NULL)
         {
@@ -547,7 +523,7 @@ FT_Byte  bits_table[] = {
 
         if (dny_f == 14)
         {
-          if (pk_read_14(stream, rs, &(go->bm_table[index])) < 0)
+          if ( pk_read_14(stream, rs, &(go->bm_table[index]) ) < 0)
           {
             FT_ERROR(( "pk_load_font: error in `pk_read_14'\n" ));
             error = FT_THROW( Unknown_File_Format );
@@ -556,7 +532,7 @@ FT_Byte  bits_table[] = {
         }
         else
         {
-          if (pk_read_n14(stream, dny_f, bw, rs, &(go->bm_table[index])) < 0)
+          if (pk_read_n14(stream, dny_f, bw, rs, &(go->bm_table[index]) ) < 0)
           {
             FT_ERROR(( "pk_load_font: error in `pk_read_n14'\n" ));
             error = FT_THROW( Unknown_File_Format );



reply via email to

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