From f99a5a520bc5a4b0edc0b794c2680c330b437711 Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Mon, 6 May 2019 21:07:33 +0000 Subject: Fix a bug that CFF charset data was not read. (S. Hirata) git-svn-id: svn://tug.org/texlive/trunk@51027 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/dvipdfm-x/tt_cmap.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'Build/source/texk/dvipdfm-x/tt_cmap.c') diff --git a/Build/source/texk/dvipdfm-x/tt_cmap.c b/Build/source/texk/dvipdfm-x/tt_cmap.c index a05adca7fc7..539024ed6e5 100644 --- a/Build/source/texk/dvipdfm-x/tt_cmap.c +++ b/Build/source/texk/dvipdfm-x/tt_cmap.c @@ -640,7 +640,6 @@ create_GIDToCIDMap (uint16_t *GIDToCIDMap, uint16_t num_glyphs, cff_font *cffont memset(GIDToCIDMap, 0, num_glyphs*sizeof(uint16_t)); - cff_read_charsets(cffont); charset = cffont->charsets; if (!charset) return; @@ -939,6 +938,7 @@ create_ToUnicode_cmap (tt_cmap *ttcmap, ULONG offset; offset = sfnt_find_table_pos(sfont, "CFF "); cffont = cff_open(sfont->stream, offset, 0); + cff_read_charsets(cffont); } is_cidfont = cffont && (cffont->flag & FONTTYPE_CIDFONT); @@ -1440,6 +1440,7 @@ otf_load_Unicode_CMap (const char *map_name, int ttc_index, /* 0 for non-TTC fon csi.ordering = cff_get_string(cffont, ord); csi.supplement = (int) cff_dict_get(cffont->topdict, "ROS", 2); } + cff_read_charsets(cffont); create_GIDToCIDMap(GIDToCIDMap, num_glyphs, cffont); } cff_close(cffont); @@ -1559,7 +1560,9 @@ otf_load_Unicode_CMap (const char *map_name, int ttc_index, /* 0 for non-TTC fon src[0] = (cid >> 8) & 0xff; src[1] = cid & 0xff; len = UC_UTF16BE_encode_char(ch, &p, endptr); - CMap_add_bfchar(tounicode, src, 2, dst, len); + if (len > 0) { + CMap_add_bfchar(tounicode, src, 2, dst, len); + } } } } @@ -1700,6 +1703,7 @@ otf_try_load_GID_to_CID_map (const char *map_name, int ttc_index, int wmode) csi.ordering = cff_get_string(cffont, ord); csi.supplement = (int) cff_dict_get(cffont->topdict, "ROS", 2); } + cff_read_charsets(cffont); GIDToCIDMap = NEW(num_glyphs, uint16_t); memset(GIDToCIDMap, 0, num_glyphs*sizeof(uint16_t)); create_GIDToCIDMap(GIDToCIDMap, num_glyphs, cffont); -- cgit v1.2.3