summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/tt_cmap.c
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2019-05-06 21:07:33 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2019-05-06 21:07:33 +0000
commitf99a5a520bc5a4b0edc0b794c2680c330b437711 (patch)
tree8a6be9d51659f92441b0acf03a32b806986748c7 /Build/source/texk/dvipdfm-x/tt_cmap.c
parentf3d292f38e6fc844eab44a90d474eb8586151f77 (diff)
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
Diffstat (limited to 'Build/source/texk/dvipdfm-x/tt_cmap.c')
-rw-r--r--Build/source/texk/dvipdfm-x/tt_cmap.c8
1 files changed, 6 insertions, 2 deletions
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);