diff options
author | Werner Lemberg <wl@gnu.org> | 2018-03-13 11:09:44 +0100 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2018-03-13 11:09:44 +0100 |
commit | 78cded2c5c687d06c5b74b308fb54af7f807dc0d (patch) | |
tree | 00f6a18faba930b0082a8390a80bbbf1fef924a4 | |
parent | 098dd70cb1845b8c325ef4801c5f2e09e476b1ed (diff) | |
download | freetype2-78cded2c5c687d06c5b74b308fb54af7f807dc0d.tar.gz |
Fix cmap format 2 handling (#53320).
The patch introduced for #52646 was not correct.
* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | src/sfnt/ttcmap.c | 15 |
2 files changed, 15 insertions, 8 deletions
@@ -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 8cc70f759..58b49c94d 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; } |