ref: fa0eb0c95fa954a3097d62c440303c403f466942
parent: e5680279b21106173e342eab28552ae0e027196a
author: David Turner <[email protected]>
date: Sun Feb 27 16:35:50 EST 2005
* src/sfnt/ttkern.c (tt_face_load_kern): fixing a small bug which returned invalid (random) values for the horizontal kerning
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-27 David Turner <[email protected]>
+
+ * src/sfnt/ttkern.c (tt_face_load_kern): fixing a small bug which returned
+ invalid (random) values for the horizontal kerning
+
2005-02-25 David Turner <[email protected]>
* many, many files: several memory optimizations were implemented to
--- a/src/sfnt/ttkern.c
+++ b/src/sfnt/ttkern.c
@@ -175,7 +175,6 @@
FT_UInt right_glyph )
{
FT_Int result = 0;
- FT_Int value;
FT_UInt count, mask = 1;
FT_Byte* p = face->kern_table;
FT_Byte* p_limit = p + face->kern_table_size;
@@ -190,6 +189,7 @@
FT_UInt version = FT_NEXT_USHORT(p);
FT_UInt length = FT_NEXT_USHORT(p);
FT_UInt coverage = FT_NEXT_USHORT(p);
+ FT_Int value = 0;
next = base + length;
@@ -205,8 +205,7 @@
{
FT_UInt num_pairs = FT_NEXT_USHORT(p);
FT_ULong key0 = TT_KERN_INDEX(left_glyph,right_glyph);
- FT_Int value = 0;
-
+
p += 6;
if ( face->kern_order_bits & mask ) /* binary search */
@@ -226,7 +225,7 @@
if ( key == key0 )
{
value = FT_PEEK_SHORT(q);
- break;
+ goto Found;
}
if ( key < key0 )
min = mid+1;
@@ -245,7 +244,7 @@
if ( key == key0 )
{
value = FT_PEEK_SHORT(p);
- break;
+ goto Found;
}
p += 2;
}
@@ -261,6 +260,9 @@
;
}
+ goto NextTable;
+
+ Found:
if ( coverage & 8 ) /* overide or addition */
result = value;
else