[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] parthw-cleaned 08a8e43 2/2: [gf] Resolve failing of `GF_CMap
From: |
Parth Wazurkar |
Subject: |
[freetype2] parthw-cleaned 08a8e43 2/2: [gf] Resolve failing of `GF_CMap'. |
Date: |
Tue, 14 Aug 2018 16:32:24 -0400 (EDT) |
branch: parthw-cleaned
commit 08a8e43fb4b12da756a2dd5e675354dc3d60a5c8
Author: Parth Wazurkar <address@hidden>
Commit: Parth Wazurkar <address@hidden>
[gf] Resolve failing of `GF_CMap'.
* src/gf/gfdrivr.c(gf_cmap_char_{index, next}): Use `linear search'
instead of `binary search' in the encoding table as it will always
be unsorted.
---
src/gf/gfdrivr.c | 54 +++++++++++-------------------------------------------
1 file changed, 11 insertions(+), 43 deletions(-)
diff --git a/src/gf/gfdrivr.c b/src/gf/gfdrivr.c
index c44c35c..fd65cd6 100644
--- a/src/gf/gfdrivr.c
+++ b/src/gf/gfdrivr.c
@@ -81,33 +81,21 @@
{
GF_CMap cmap = (GF_CMap)gfcmap;
GF_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;
}
FT_CALLBACK_DEF( FT_UInt )
@@ -116,39 +104,19 @@
{
GF_CMap cmap = (GF_CMap)gfcmap;
GF_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:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] parthw-cleaned 08a8e43 2/2: [gf] Resolve failing of `GF_CMap'.,
Parth Wazurkar <=