]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix format 2 cmap handling in sfnt.c
authorPip Cet <pipcet@protonmail.com>
Sun, 11 Aug 2024 10:07:12 +0000 (10:07 +0000)
committerEshel Yaron <me@eshelyaron.com>
Fri, 16 Aug 2024 06:44:42 +0000 (08:44 +0200)
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

index b235c795ef7298540377537b13eb9be7a01d9eef..1ed492b75069d371fb7970d4638a091c0ee08fc7 100644 (file)
@@ -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);
 }