From 412be18845ad5420fe2d22f8bcd1970abdb5545c Mon Sep 17 00:00:00 2001 From: Pip Cet Date: Sun, 11 Aug 2024 10:07:12 +0000 Subject: [PATCH] Fix format 2 cmap handling in sfnt.c This code is untested as no font with a format 2 cmap could be found. * src/sfnt.c (sfnt_lookup_glyph_2): Fix typos. Assume single-byte encodings use character codes 0, 1, ..., 255 rather than 0, 256, ..., 65280. (cherry picked from commit 5c3d340e001187ad027bc0328f738938a2bc32c5) --- src/sfnt.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/sfnt.c b/src/sfnt.c index b235c795ef7..1ed492b7506 100644 --- a/src/sfnt.c +++ b/src/sfnt.c @@ -1093,10 +1093,10 @@ sfnt_lookup_glyph_2 (sfnt_char character, unsigned char *slice; uint16_t glyph; - if (character > 65335) + if (character > 65535) return 0; - i = character >> 16; + i = character >> 8; j = character & 0xff; k = format2->sub_header_keys[i] / 8; @@ -1129,9 +1129,9 @@ sfnt_lookup_glyph_2 (sfnt_char character, return 0; } - /* k is 0, so glyph_index_array[i] is the glyph. */ - return (i < format2->num_glyphs - ? format2->glyph_index_array[i] + /* k is 0, so glyph_index_array[j] is the glyph. */ + return (j < format2->num_glyphs + ? format2->glyph_index_array[j] : 0); } -- 2.39.2