Fix cmap format 2 handling (#53320). The patch introduced for #52646 was not correct. * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
diff --git a/ChangeLog b/ChangeLog
index 25639ae..65bc409 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2018-03-13 Werner Lemberg <wl@gnu.org>
+
+ Fix cmap format 2 handling (#53320).
+
+ The patch introduced for #52646 was not correct.
+
+ * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
+
2018-03-10 Nikolaus Waxweiler <madigens@gmail.com>
* CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05.
diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c
index 8cc70f7..58b49c9 100644
--- a/src/sfnt/ttcmap.c
+++ b/src/sfnt/ttcmap.c
@@ -549,19 +549,18 @@
}
}
}
+
+ /* if unsuccessful, avoid `charcode' leaving */
+ /* the current 256-character block */
+ if ( count )
+ charcode--;
}
- /* If `charcode' is <= 0xFF, retry with `charcode + 1'. If */
- /* `charcode' is 0x100 after the loop, do nothing since we have */
- /* just reached the first sub-header for two-byte character codes. */
- /* */
- /* For all other cases, we jump to the next sub-header and adjust */
- /* `charcode' accordingly. */
+ /* If `charcode' is <= 0xFF, retry with `charcode + 1'. */
+ /* Otherwise jump to the next 256-character block and retry. */
Next_SubHeader:
if ( charcode <= 0xFF )
charcode++;
- else if ( charcode == 0x100 )
- ;
else
charcode = FT_PAD_FLOOR( charcode, 0x100 ) + 0x100;
}